Grounded interpretation
Reading incomplete, multi-order emails into structured facts, keeping the source of every fact, and separating what is known from what still needs a question or a human decision.
I build AI systems for work where mistakes are expensive.
Technical founder. For a decade I have taken products from first idea to production, across applied AI, developer infrastructure, identity, and real-time systems. Today I am co-founder and CTO of Akisto, an AI supplier coordinator already running inside a manufacturer’s procurement team.
Now
Co-founder and CTO. An AI supplier coordinator for manufacturers.
Between a purchase order and its delivery, manufacturers chase suppliers through email and phone calls that mix several orders, answer half the question, and move dates without saying so. Akisto automates that work: traceable facts from every conversation, a consistent state for every order, and follow-up that happens on time.
I lead product and engineering end to end: system architecture, AI agents that work with suppliers over email and phone, workflow automation, integrations, data pipelines, and a risk layer that flags the orders most likely to disrupt production. My co-founder brings years of manufacturing operations and procurement consulting; my job is to turn that knowledge into systems that hold up in production.
Reading incomplete, multi-order emails into structured facts, keeping the source of every fact, and separating what is known from what still needs a question or a human decision.
Tracking commitments, partial shipments, silent suppliers, and buyer interventions across days or weeks, with recovery that never sends a duplicate action or an out-of-date follow-up.
Tenant isolation, a full audit trail, and observability, because the platform already runs a manufacturer’s real purchase orders rather than a demo.
Track record
I founded or co-founded every company below. In each one I owned the technical foundation, from the first architecture decision to production.
2026
Co-founder and CTO
AI supplier coordination for manufacturing procurement teams. Deployed with a manufacturer, where it has managed more than 2,000 purchase orders and cut the time buyers spend chasing suppliers.
2025–26
Co-founder and CTO
AI document intelligence for commercial real estate. Title commitments reconciled against ALTA surveys and plan sets checked against building-code rules, with every finding tied to its source. Customer discovery moved the focus from title review to permit compliance.
2025
Founder
Real-time AI commentary for leagues and streaming platforms that cannot staff a commentator for every game. A working MVP in two weeks; then market research showed too few buyers to build a company on, and I chose not to pursue it.
2025
Co-founder
A conversational editor for image, audio, and video that replaces a timeline with a request. I built the complete product from scratch, through to launch readiness.
2023–24
Founder
Built solo through several iterations, from social login across custom domains to enterprise authentication to a dedicated email service for logins, one-time codes, and notifications that keeps them out of a person’s primary inbox.
Since 2016
Founder
My independent studio for products across consumer software, games, SaaS, AI, and developer tools, each taken from zero to one with product, engineering, and early distribution in my hands. SlowAndSteady.io drew around 30,000 visits in a single night; SV Hunt found a loyal audience among competitive puzzle solvers.
Aftlog, Everby, SlowAndSteady, Rank Race, SV Hunt, Twish, OnlyOnePremium, Links Browser, Favs.bio, Vowalls
Selected engineering
Four systems I designed and built, with the trade-offs that shaped them and the source wherever it is public.
A flight recorder for AI coding agents.
A coding agent can rewrite a codebase in one session, faster than anyone can review it. Aftlog is a local Rust daemon that records every command and file change, separates the agent’s work from what was already there, and turns the session into a readable report with a conservative revert plan.
Establish a baseline before capture. Aftlog records the starting Git state and bounded filesystem snapshots, so session changes can be reviewed separately from pre-existing work. Hook-based session startup waits for that baseline before acknowledging capture.
Let uncertainty shape recovery. Low-confidence paths are excluded from the default reverse patch. Applying a revert requires confirmation and creates a backup branch plus a working-tree patch; files outside Git use a separate restore plan.
Bound the cost of observation. Snapshot walks cap file counts and total shadow-copy storage, skip symbolic links, and report incomplete coverage. Finished sessions prune shadow copies that are no longer needed.
$ aftlog record -- codexCapture. Commands, file changes, Git baseline.
$ aftlog report lastInspect. Readable receipt and session diff.
$ aftlog revert-plan lastReview recovery. Explicit review before any revert.
Document review that cites its sources.
Commercial real estate deals stall on review work that is high-stakes, repetitive, and still done by hand because nobody trusts software to get it right. I built TitleCheck AI to reconcile title commitments with land surveys, and PermitCheck AI to read architectural plans against a defined set of building-code rules.
Parse independently, reconcile together. TitleCheck runs title and survey parsing in parallel, then compares the extracted exceptions and annotations. Variances retain links to the underlying records for review.
Separate vision from rule evaluation. PermitCheck extracts dimensions and plan context with a vision model, then runs explicit TypeScript rules. Findings include the rule, observed and required values, confidence, and page references.
Persist a coherent result. Extractions, findings, relationships, and processing status are saved together in a PostgreSQL transaction. Document storage and model calls happen outside that database transaction.
Conversation as the control surface for media.
Describe the result; Aiditor plans the edit, writes the code, runs it in an isolated container, and returns finished files. I built the whole product: orchestration, sandboxed execution, media processing, authentication, storage, and billing.
Separate planning from execution. The orchestrator prepares source media and conversation context, asks the model for Python, then hands execution to a dedicated Docker container. Exit status, stdout, stderr, and returned files feed the result.
Close the loop on failure. Failed code and execution logs are added back to the model’s context for another attempt, with a maximum of three attempts. Redis-backed task status exposes preparation, generation, and execution progress.
Carry media through the entire product. The application connects chat state, file metadata, S3 storage, authentication, and billing. Generated files are retrieved from the execution container and associated with the response.
Implementation: orchestration, execution.
An accountability companion that remembers.
A native macOS app designed as a relationship rather than a dashboard: layered memory, voice dictation, check-ins timed to the person’s actual day, and narrow local tools for reminders and commitments.
Give context distinct lifetimes. The model receives recent conversation alongside conversation, daily, and weekly summaries. Durable facts live in a separate store and can be corrected, deactivated, or deleted.
Schedule around actual activity. Check-ins use the user’s first active time, configurable intervals, a daily limit, and an evening anchor. In-flight notification keys prevent overlapping generation; regular check-ins defer when the model is unavailable.
Keep storage and credentials separate. Personal state is persisted locally, while the API key is stored in macOS Keychain. AppKit notifications support inline replies; model requests still go through an external API.
Implementation: memory store, scheduler, notifications.
Range
A decade of products has meant solving very different engineering problems personally, not delegating them.
Commentrix samples sports footage, writes timestamped play-by-play, synthesizes narration, and aligns voice and subtitles back onto the source timeline.
Python, model orchestration, OpenCV, FFmpeg
Shared state, socket communication, and authoritative multiplayer logic. Rank Race in Unity, and SlowAndSteady.io, a zero-player race that drew around 30,000 visits in one night.
C#, Unity, WebSockets, Redis
Authentication, transactional email, and event-driven backends. Authnest’s dedicated email identity, and a serverless pipeline that turns inbound mail into application data.
Node.js, Amazon SES, Lambda, DynamoDB
Parallel browser workloads across cloud instances. Twish, a visual search index of one million websites, built on distributed screenshot capture.
JavaScript, Puppeteer, AWS EC2
Products, prototypes, and utilities from the last decade, each built end to end. Most of what the later companies needed was first learned here.
One subscription across independent websites and software products. It began as ad-free access to content sites and evolved into a shared login for a curated bundle of paid tools, testing where one account, one payment, and many partners meet.
Node.js, shared identity, AWS
A multiplayer idle economy in which giving creates power: donating points changes future earning power. Guilds, transfers, and one global leaderboard, updated live over WebSockets with player state in Redis.
Node.js, WebSockets, Redis
Carrier due diligence that refuses to hide its reasons. Risk signals, evidence, policy gates, and an audit trail in one review flow, with every score explained to the operator. The public reference uses deterministic demo data.
React, Vite, explainable scoring
A restaurant menu that responds to intent instead of presenting a database: guided discovery, contextual pairings, and a live basket. A static Next.js prototype with deterministic recommendations; checkout is disabled in the public demo.
Next.js, React, product prototype
A local harness for proving OAuth and OpenID Connect authorization-code flows before they reach a real product. Handles callback state, server-side token exchange, and userinfo retrieval, and redacts tokens from browser output.
Node.js, Express, OAuth and OIDC
A narrow serverless boundary between raw email and application data. SES stores MIME in S3; a Lambda parses sender, recipients, bodies, and attachment metadata into a normalized DynamoDB record.
Amazon SES, S3, Lambda, DynamoDB
An embeddable voice and text assistant with the operational boundaries built in: request validation, upload limits, rate limiting, configurable CORS, and local fallbacks for development without model credentials.
TypeScript, Express, browser audio
Natural-language page generation with ownership and containment designed in. Username-scoped public pages, an owner-only editing flow, and generated HTML filtered and isolated in a sandboxed iframe.
TypeScript, Redis, HTML generation
A public contact page that puts boundaries before the inbox. People publish rules for which requests are worth sending; a typed backend validates and routes them to a private dashboard.
TypeScript, Express, Redis
A command-line tool that makes generative output predictable: validated inputs, deterministic filenames, and a dry run that shows every prompt and path before a paid API call is made.
TypeScript, CLI, image generation
A mobile browser organized around people, films, and creators rather than tabs. Built first in React Native, then rewritten in Flutter when performance demanded it.
React Native, Flutter
Timed internet scavenger hunts with hard puzzles, live releases, and prize rounds. It found a loyal audience among competitive puzzle solvers, and ran on a live game loop over Node.js, MySQL, and Redis.
Node.js, MySQL, Redis
A link-in-bio rebuilt around shared interests rather than self-promotion, connecting profiles through what people actually like.
Consumer web, public profiles
A publishing platform where opinions were posted, contested, and voted on. My first complete web product, and where the habit of owning both interface and backend began.
Python, Flask, MySQL
Principles
What ten years of founding has taught me to do first, and never to skip.
Before any architecture, I learn how the job is done today: the spreadsheets, the email threads, the workarounds. The real bottleneck is rarely where the pitch deck says it is.
Models are good at reading messy input. Commitments, state, and money belong to deterministic code, with a person able to step in at the moments that matter.
A finding, score, or automated action is incomplete without a source someone can inspect and a way back if it is wrong. Audit trails and recovery are product features.
Use the smallest architecture that tells the truth. Durable workflows and live sockets when the constraint demands them; a static page and a good data model when it does not.
For ten years I have been the person responsible for both the product and the system underneath it.
I trained as an electronics and communications engineer and have been founding software companies since 2016: consumer products and multiplayer games first, then identity, developer infrastructure, and applied AI. Along the way I learned to find the real constraint quickly, commit to an architecture that fits it, and change course when the evidence says so.
As co-founder and CTO of Akisto, I lead product and engineering end to end. I stay hands-on in the codebase, because that is where the hardest product decisions surface first.
Full history on LinkedInFounders, operators, and engineers
If you are working on a difficult problem in a domain you know deeply, I would like to hear about it.