Self-improving AI products.And the teams that build them.
Let the product be its own product manager for what can be measured, and free the people for what has to be judged. Every outcome is scored and back-propagated to whatever shaped it, and the next version takes shape while you sleep.
Each AI product below runs a loop: its signals flow back and change the product.
The forward pass is what every product has: retrieve, prompt, generate, apply the rules. The backward pass is what makes it self-improving: each signal is verified, joined to the result that caused it, and then changes one layer, which ships as a new version. The model’s self-reflection takes a separate path, into a roadmap that people curate.
Every product built this way carries a flywheel: a versioned unit of output, a signal from outside the model, attribution back to whatever produced the output, a score for each source that shaped it, and a change to one layer that ships as a new version.
Four of the products below run this loop. The pattern page shows how it is built, one part at a time.
Commits to my own products, updated daily. Client work is not included. Hover a square to see which products each day went to.
Tales from the loop
Work
All in production since 2024, each designed, built and run end to end with Claude Code. Four of them run the loop.
ProductWhat it doesBuilt withStatus
SuperAgentiChat superagentichat.comFinancial research agentA financial research agent that turns a question into a professional-grade analysis report. An agentic loop with dynamic context management works across 40+ tools, numerous data sources and 70+ built-in skills. It reads your files, runs code, charts the data and writes output files, with proprietary OSINT analysis and bias detection built in.Role, features, how it learnsHide detailsVercel AI SDK, Next.js, Neon Postgres, Paddle billingLive
My role
Everything from the research loop to the checkout flow.
Professional-grade analysis reports with financial data visualization
Works on your own files, executes code and produces output files
Custom user skills on top of the built-in ones
Full billing lifecycle: checkout, portal, webhooks, cancellation
Learns from use. Every answer is judged and voted on, and the winners become the next version of the prompts and tools.
DropRenew droprenew.comDecision systemAn operating system for a domain portfolio. A weekly AI renewal committee weighs the evidence on every expiring name and shows its reasoning before you renew or drop. Around it: an AI wizard that sorts the portfolio into investment themes, a weekly market-intelligence issue matched to those themes, pricing strategy tools, and a post-mortem on every name you let go.Role, features, how it learnsHide detailsTypeScript, Supabase, Replicate, Inngest jobs, registrar APIsLive
My role
What started as a personal project to manage my own domain portfolio grew into a consumer product. A scouting mechanism harvests publicly shared knowledge from the domain-investing world and distils it into market consensus and opinions that feed the roadmap.
Portfolio tracking across registrars: costs, valuations, traffic and listings in one table
Weekly market intelligence: comparable sales, trademark radar and emerging vocabulary, matched to your themes
Post-mortem on drops: who re-registered the name, what they built, and whether the call was right
Learns from use. Every override, and every real sale or drop, is scored against the engine that made the call. A change ships only if it beats it.
OPERATIVYOperations engineA marketing engine for an owner-operator running several brands. It feeds on market news and a corpus of marketing knowledge to produce content for multiple channels, aimed at the specific goals of each brand. The work happens overnight, and the operator's morning is an hour or two of yes, no or edit calls on prepared drafts.Role, features, how it learnsHide detailsRemix, TypeScript, Neon Postgres, Graphile Worker, RailwayInternal
My role
The tool I use to run my own brands, so I am its first and most demanding operator. Every morning's yes, no or edit is mine, and so is the cost of a weak post.
Overnight pipeline: news ingest, idea synthesis, drafts and reconciliation
Morning triage across every brand, each with its own thesis and voice
A browser helper fills the LinkedIn composer with an approved draft, and you click Post
Learns from use. Two loops. Every post carries a tracking link, so what it brings back is traced to the plays that shaped it, and plays that lose more than they win are retired. And the engine drafts more candidates than get published, so each clearance teaches it the operator's preferences.
SPINES getspines.comBook discoveryA new kind of book discovery for serious readers. Point a camera at a bookshelf and every spine becomes a known book. SPINES then shows which books keep appearing together on real shelves, and leads you to the one at the edge of what you know instead of the most popular one. Shelfology, its analysis layer, reads your own shelf back to you: what you collect, which spines are rare, and whose library resembles yours. Other agents can read shelves too, through a public API, an SDK and an MCP server.Role, features, how it learnsHide detailsTypeScript, Roboflow, vision models, MCP, Node SDKLive
My role
A passion project, born of being an avid non-fiction reader. I am building a first-of-its-kind database of how people's reading choices are reflected in their home libraries, one shelf at a time.
Web app, SDK and MCP server from one codebase
Curated persona and pairing engine on top of recognition
Learns from use. Today the text on each spine is read to identify the book. Every approved shelf turns those readings into labelled spine images, the training set for tomorrow's vision classifier that knows a book by its spine alone. The shared catalogue grows with each shelf too, so the next photo matches faster.
Self Driving Cars 101 selfdrivingcars101.comPhysical AI communityA global, open community and network of meetup groups for everything about autonomous vehicles: the technology, the business, the debate and the impact. Volunteer-run since 2016, 6,000+ members, and no paid sponsors steering the agenda. The website is the community's hub: its resources, learning material, weekly newsletter and a locator for the ten local meetup groups.Role, features, how it learnsHide detailsNext.js, Postgres, Resend, PlaywrightLive, growing
My role
Founder and general manager. I started it in 2016 as a home for the people building physical AI on the road, and I still run it.
Weekly Briefing with double opt-in, an archive, and an admin studio to assemble each issue
Learn hub: thirteen lessons and a glossary, with a generated llms.txt so agents can read them too
Every item in the four buckets lives in the code of the products above.
Something old
Good engineering
I came up through engineering: chip design, then system engineering, then running R&D. These habits are older than any model, and the agents I direct are held to them.
Top-down, bottom-up. Development is cheap now, and still not everything belongs to trial and error. Scale, cost and how hard it will be to leave a vendor are decided before the first line, and the build goes up from there. Vibe coding will not do that for you. docs/adr/
Test everything. Murphy’s law, in the original: anything that can go wrong will go wrong, at some point. So the obvious is tested, and so is the marginal. 009-testing-strategy
A mistake is allowed. Once. The second time means you are not disciplined. Known-issues and lessons-learned files, with IDs, are part of what the agents read before they work, so they are consulted rather than filed. Repeated incidents become lint rules that block the commit. DEV_LESSONS_LEARNT.md
Jobs that watch themselves. Scheduled health checks, backups and alert digests that stay silent when all is well. alert_sentinel
Assumption is the mother of all f***-ups. Nothing is assumed stable, least of all a model. Plan B is code, not a note: a corrupted JSON goes through a parser that recovers what it can and raises a flag someone will see. Never fail silently. Always fail gracefully. json-recovery.ts
Something new
Managing intelligence
My technical background did not help much here. Managing intelligence is a new muscle, and it cannot be trained in theory.
Don’t be the bottleneck. Managing intelligence is no different from managing smart people. Limit the team to what you can digest, at the speed you digest it, and you have a limited team.
The model never does the math. Do not ask a model to reason its way through a calculation. Calculations run in code. The model scores or referees only where judgment is needed. forces.ts
Just ask. If separating calculation from contemplation is hard, ask the model how you can help it. You wrote the system prompt and attached the user’s content, so add a post-mortem questionnaire: what worked and what did not while serving this user. The answers will surprise you. log_agent_reflection
Evals decide how well you sleep. You will not keep up with the pace and judgment of the AI in your product. Your evals will. Do not just put them there, read them, the way you would read a week of support tickets. They tell you what is really going on. eval_runs
Traces of gold. In hardware, whatever is not recorded is lost. To trace a unit back, the version, date code and serial of every part on the bill of materials is scanned and linked to the unit’s own serial. An agentic workflow deserves the same: prompt version, model version, tokens in, thinking and out, and anything else that shifts, stamped on every call. prompt-registry.ts
Cost is a metric. Budgets, a cost stamp on every call, and a weekly check for provider price drift. pricing-drift-checker.ts
Something borrowed
Learning from others
Most problems were already half-solved somewhere else. Learning from others was always a good idea, and never this easy.
Learn by analogy. Find the industry that solved an equivalent problem, generalise it, and project it onto yours. Find the products that serve the same users, and ask why they worked. docs/research/
Scouting sprints. Agents running on different models, from different labs, get the same brief, without seeing the system's internals, and hunt for tools, skills and methods. Every proposal is scored and deduplicated, and every agent is graded on a scorecard. ResourceScout
Best of breed. For a chosen capability, several agents research it in depth. The design takes the best formula, threshold and code from each, and one convergence pass decides what ships. playscout/CONVERGENCE.md
Outside agents as reviewers. The same design question goes to several models from other labs, and their answers are merged into one synthesis. adr-003-synthesis.md
AI makes a great data scientist. Build a corpus of industry knowledge and customer voices, and consult it on product decisions. market-intel
Something blue
AI security
A threat model a day keeps the doctor away. Anything the model reads can be an attack. Defend like a blue team.
Food for thought. “The model” includes the one you develop with. Sanitize what you feed it: ready-made skills, cloned repos, documentation. Your own development setup is an attack surface too.
A written threat model. Prompt injection is designed for up front, not patched after. ADR-011
User space, walled off. Input is schema-checked and size-limited at the boundary. Everything a user writes is then fenced as data, below the system's own rules. The fence holds because user text cannot contain it, and only blocks carrying a per-conversation secret count as system instructions. ugc-fence.ts
<user_generated_content type="personal_profile" trust_level="untrusted">
...anything the user wrote...
</user_generated_content>
Untrusted content is neutralised. Web pages and outside data are cleaned before they reach a prompt. untrusted.ts
Guarded output. Responses are checked for data exfiltration and system-prompt leaks before they leave. output-guard.ts
For teams
Advice for teams
What I wish I had known when I started.
Do try this at home. Everyone has a reputation to keep, and nobody wants to make rookie mistakes in front of colleagues. Sponsor a subscription to any AI tool under the sun and let people build confidence at home, without the reputation risk. They bring the skills to work when they are ready.
Rookie mindset. AI is noisy. A stable setup, a few good practices and a week of heads-down work without touching the newest toy feels like a victory. Get too good at it and you stop learning. Find a way to filter the noise and still stay current. In a team, rotate it: one person at the periscope while the rest run the submarine.
Learn from non-technical practitioners. Let us not talk falsely now: unless you build foundation models, knowing how AI works under the hood serves your technical prestige more than your job. Learn from fellow techies and the conversation falls into that trap. Learn from practitioners and the lesson is about outcomes.
Basic tutorials over advanced workshops. A basic tutorial written yesterday is not the one written six months ago, and one principle picked up is worth the hour. Above the basics the practices branch out too wide and thin, and the odds of picking up something useful drop fast. The real learning is exposure to another person’s take on managing intelligence, so make sure you learn from the best.
Also writing inGet Spines, the SPINES publication on reading and thinking, and Self Driving Cars 101, the community’s publication on autonomy.
Four ways in
Work with me
For founders, product teams and anyone with an AI product that needs to exist.
Self-improving AI productsDesign the loop that turns usage into a better product: what to capture, how to attribute it, and where a human gates the change. See the pattern.
Zero to (d)oneAn idea becomes a deployed product: scope, architecture decisions, build, tests, billing, launch. Weeks, not quarters.
Fractional product leadOwn discovery and the roadmap for an early-stage team a few days a week, or step in to lead product when the problem is bigger than that.
Claude Code for product teamsEvery team is unique, and that is a good thing. There is no method that fits all, and I am not selling one. What I bring is a point of view and an outsider’s eye, because it is hard to read the label from inside the bottle. Hands-on, not slides.
Built by one person, twenty-two years in. About me
Say hello.
This page captures a point in time, and AI is evolving so fast that everything feels temporary. I learn best from exchanging ideas with other people, so let's chat.