Henry Robinson.

AI Builder Product Manager.

Twenty years shipping product, most of it automotive. I built an AI product and now run an AI company, solo, after building the artificial cofounder I needed.

  • Voice Legacy · live, 32 weekly actives
  • 0 → 3,500 dealerships at Xtime
  • Nine departments · one agent system

I've spent twenty years as a product manager in industries that are complicated because they have to be. That has meant autos, dealerships, B2B procurement, and health insurance. The skill that carried across all of them is holding a complicated product's vision in my head, and using product judgement to make good calls inside it. And I mean everything: the user applications, the platforms underneath them, the integrations and APIs running in and out, and a multi-sided customer base (OEMs, dealer groups, dealers, and consumers) all inside one product.

AI builder product manager means something specific to me. The AI agent is my engineering team. I make every product decision and every decision about how a thing must work. I write down what has to be true before a job counts as done, and I build the checks that catch the engineer's mistakes before a user ever sees them. With AI, software engineers don't read every line of code, so I don't have to either. I just need to tell it what to build and to create the systems around it that make sure it works.

I have always wanted to do a startup. The system I built lets me explore an idea without a cofounder or a team.

Available now

I'm available for AI product management, forward-deployed PM roles, founding-PM roles, and advisory work.

SF Bay Area · open to relocate

The problem

Solo founders are too busy to keep track of everything, so I built an agent that does it instead. It looks at my entire business and life and tells me what is important. It shows me the north star metrics and it gives me a view of the most important thing I need to do that day to succeed.

Nine departments report into it: product, finance, marketing, email, career, investments, planning, the firm sweep that assembles all of it at six in the morning, and the system watching its own health. I have all of my departments at a glance. Marketing proposes blog topics, runs competitive research, and publishes through a pipeline checked against forty samples of my own writing, for about $21 a month in tooling.

Finance is the one I open first, for burn rate and signups, which for this business is basically API cost against revenue.

The Claudia home screen. Good afternoon, Henry, 3 queues need you. Everything else is running fine. Three queue cards: 50 emails to triage, 1,291 career results, 5 failed jobs.
The home screen on a Thursday afternoon. Three queues need me. Everything else is running fine.

Why a dashboard does not do this

The main reason a company has departments is to get the right information to the person who has to make the decision. There is always too much information. So it gets filtered as it moves up, and it gets translated out of department speak into what the decision-maker needs to know.

Plus, in an organization, people are motivated to make themselves look good. Anyone in leadership needs someone or something that keeps the most important things on top without an agenda. My agent has no career to protect, or anyone to cover for. It does not sugar coat and it does not fudge numbers.

How it decides what matters

It is a mix of heuristics and model calls.

Each department gets a sweep of every metric and piece of data it has. First, it reviews the hard-configured metrics. It tells me what shipped recently, where the roadmap stands, what the marketing automations published and how they did, and whether any process has failed. Then a model sweep checks everything and escalates anything that looks weird.

The rules catch the failures I already know about. The model catches the ones I never thought of. Keeping the model out of the data collection is what makes it cheap and fast and auditable, because I can always see exactly which numbers it was looking at when it made a call.

What a dashboard would have missed

Three of the six items on a recent standup came out of the model pass. A dashboard would not have caught them, but a smart employee might have. That is the judgement layer, and it is what calls things to my attention.

One example: the dashboard showed 32 weekly active users and zero new users in seven days. Retention without activation suggests a problem, and this process called it out.

The last one was about the system itself. The standup digest job had been failing, and the system flagged it.

The Voice Legacy standup screen: four metric tiles, the five-department firm sweep, and the Needs Henry panel with three amber findings from the model pass.
The Voice Legacy standup. The three amber findings in the Needs Henry panel came out of the model pass. The finance lines are scrubbed.

What it costs, and what still needs tuning

To serve my Voice Legacy customers, I spend about $100 a month in API credits. Everything else, the control plane and all of the coding agents for both products, run on my Claude Code Max subscription.

Every kind of job is assigned a model. Sorting and triage go to Haiku, the smallest and cheapest Claude model, because those jobs are simple and there are a lot of them. Most coding and writing goes to Sonnet, the middle one. The hard multi-file fixes and the reasoning where quality matters go to Opus. Fable is reserved for major architectural changes, product planning, and as a thinking partner. The assignment lives in a settings table, so I can move a kind of job to a different model without a deploy.

The part I have not tuned well is email triage. It classifies urgency by subject line and by sender. I get a lot of false alarms, because email marketers have learned to hack our brains and LLMs with manufactured urgency.

I would rather it caught customer complaints, but having the AI do it is a lower priority because I read my support emails anyway.

The model routing settings: a policy paragraph and a table of job types, each with its assigned model, executor, run count, and success rate.
The model routing table. Every job type carries its model, its executor, its lifetime run count, and its success rate.
The Anthropic usage screen: the Claude Max plan windows for Claudia, and $55.45 month to date of metered API spend with a seven-day token table by key and model.
Anthropic usage. Metered API spend for Voice Legacy, month to date, next to the Max plan that runs Claudia.

Monitoring and self healing

Claudia runs as seven workers on a Docker host. A job queue records which model ran each job and how long it took. A heartbeat monitor watches every worker, and if a worker goes quiet, the silence itself raises the alarm. Most monitoring gets that part wrong, because a dead monitor and a monitor with nothing to say look identical unless somebody checks.

Claudia also diagnoses its own failures. One night, six career pipeline jobs failed together. The system traced all six to one cause: a command line flag that swallowed every word of the prompt after it.

Voice Legacy, a living digital memoir platform

In productionFounder2025 – Present

Voice Legacy, a living digital memoir platform

It interviews your parents and grandparents the way a thoughtful biographer would, then writes their living digital memoir in their own voice without inventing a word of it. That last part is the hard problem: an AI under pressure to make a story look finished will fabricate details, so the pipeline separates a frozen fact layer from a free voice layer and refuses to write until the source material can support it.

Claude (Opus/Sonnet/Haiku)·Agent harness·LiveKit·Deepgram·Cartesia·pgvector·Firebase·Stripe

Solobuilt and operated
Paying customerstrial-to-paid model
One agenta massive harness around it

Who has the problem

Voice Legacy interviews parents and grandparents the way a patient biographer would, and then writes their living digital memoir in their own voice. The adult child pays for it. The product is designed for people who are losing their memories, since a family gets one chance at that recording.

Why this is not just a wrapper

A wrapper would hand the transcript to a model and let it write. That fails on facts. A model handed thin source material writes wonderful-sounding prose that is mostly invented. From nine fragments that amounted to "we drank rum," the model produced a piña colada, a stroller, and ancient ruins. None of this happened. It was an entertaining story, but it was all made up.

What I decided

I put a gate in front of the writer that scores the source material before anything gets written. It counts the words of source, counts the distinct concrete facts (named people, events, a stated setting), checks for any sensory or emotional detail, and checks whether a conversation transcript sits behind the story at all. Every story comes out as one of three tiers: a scrap, a sketch, or a scene. A sketch or a scene gets written, and the user can edit and publish it. A scrap is held back, and the product keeps asking follow-up questions until the story has enough behind it to write.

  • Live · 32 weekly actives
  • 3 tiers · scrap, sketch, scene
voicelegacy.app
2025 – present

Founder · Voice Legacy

I built and ran it alone: strategy, product, a production codebase, marketing, support, and the books. It is live with real users.

2025

Lead AI Product Manager · Lucid Motors

I led product for an AI service scheduling system. It added 30% to service bay capacity, took three days off the customer wait, and held prediction error under 15% in production.

See the demo

2022 – 2025

Independent product consultant

I took these years to look after my father while I started a company. Along the way I did zero-to-one product work at SingularityLabs, a VR work-simulation startup that Talespin later acquired, and I retrained myself in AI on purpose, using legal AI projects like Terminate Mate and an AI patent evaluation tool as the practice ground.

2021 – 2022

Head of Product · SimplyInsured

I ran product at a platform that helps small businesses buy health insurance, and drove 50% year-over-year revenue growth.

2014 – 2021

Principal Product Manager · Xtime (Cox Automotive)

I owned the mobile suite that dealership service departments run on. The first version of Xtime Engage was built by asking dealerships what they wanted. The turnaround came from asking their customers instead.

That answer moved the sale of additional work out of the service lane and back into the shop, where the technician's inspection photos made the case. It was worth about a hundred dollars more per repair order, which is roughly a quarter to a third on top of a typical ticket.

Engage went from zero to 3,500 dealerships, a quarter of the market, every one of them organic, at $750 per dealership per month. That is about $31.5 million a year in recurring revenue.

2010 – 2014

Senior Product Manager · Ariba (acquired by SAP)

I was head of product for Ariba Discovery, the B2B e-commerce upstart inside Ariba, and grew the seller base from zero to one million.

2007 – 2010

Category Manager, Automotive · eBay Motors

I ran auto parts and accessories. The compatibility and cross-border work brought $2 billion in GMV through eBay Motors and $240 million in incremental revenue to eBay, and I hold US Patent 8,429,020 for surfacing international-seller listings.

2001 – 2005

Senior Integration Engineer · General Motors

I worked on interior systems across three vehicle platforms, around two million units a year. The changes I drove cut component costs 18%, cut development time 30%, and saved $12 million in tooling per program.

Download the CV (PDF)

An AI agent wrote almost every line of code on these projects. I made the product decisions and defined how each of them has to work. I wrote down what had to be true before a job counted as done, and I built the checks that catch the engineer's mistakes. That is the PM job now. These cases come from my AI PM textbook, a course I wrote for myself from problems I hit in production. Each one is a decision, the check that enforced it, and what the check caught.

Voice Legacygrounding & guardrails

The voice engine: writing in someone's voice without inventing their life

The problem. Voice Legacy writes a family memoir from a recorded conversation. Given thin material, the writer invented details. My eval caught it inventing facts on 14 of 14 test stories, where "we drank rum" became a story about a piña colada, a stroller, and ancient ruins. I had rated one of those drafts five out of five on facts myself, which is why I stopped trusting either the generator or my own reading to police it.

The decision. The writer may not add a fact the family did not say. I split the product into a frozen layer that holds only the person's actual words and a free layer that is allowed to shape diction and rhythm, and I set a floor: a story with too little behind it gets more questions instead of a draft.

The check. A story counts as grounded only if every fact in it traces back to the transcript. That rule runs as a script on every story, so a prompt change that starts inventing again fails before a customer sees a word of it.

The lesson. AI will always hallucinate. My job was to build guardrails to ground what the agent wrote in fact, while allowing it to combine stories told across multiple sessions into a coherent narrative. This is essential for people who are losing their memory or their ability to tell stories coherently.

Voice Legacyevals

Grading a ghostwriter

The problem. When I changed a prompt, I had no way to tell whether the stories got better or worse.

The decision. Every change gets scored against an answer key I wrote, and the score stays split into the things I care about: whether every fact is real, whether it sounds like the person, and whether it reads well.

The check. I made up two fake families and wrote down every fact about them by hand, 22 relatives in one and 33 in the other, with traps planted: the same fact told twice in different words, and a few family recipes as a stress test. Those two families run through the real product end to end, and a script scores every story on more than fifteen things. Most of the checks are plain code comparing text to known facts. A model judges only the few things code cannot. It runs at four sizes, from a two-cent spot check to a five-dollar full run.

What it caught. One prompt change made the stories sound more like the person and read worse at the same time. A single overall score would have averaged that out and called it a wash.

Claudiaagents & verification

The agent that said it was done

The problem. I asked an agent to write about twenty documentation pages. Shortly thereafter it reported "done, gate passed, all 22 pages complete." It had written nothing. It had run its own check from the wrong folder, found zero problems because it found zero files, and read zero as success. Anyone who has managed these tools has experienced this. The AI says it is done, and it is not.

The decision. The engineer does not grade its own work. Before a job starts, I write down what would have to be true for it to be done: the files that must exist, the tests that must pass, the count that must match. If the check cannot run at all, that counts as a failure, never a pass.

The check. A separate script, plain code with no model in it, checks those things after the agent finishes. The harness runs the script itself, so the agent cannot skip it. When the job is code, the test is written before the code. The job is done when the test passes, and not before.

The lesson. An AI being "done" is a claim. Proof has to come from something the AI does not control, and writing that proof down before the work starts is product work.

Starflight Tributeevals & autonomy

The night the agent wrote its own proof

The problem. I gave Claude Code one prompt at bedtime, "clone Starflight, you have one shot," and woke up to a playable remake of a 1986 open-world space exploration game: a galaxy to explore, planets to mine, aliens to negotiate with, and an ending you can reach. I had no way to know whether any of it worked without playing it for hours, and the agent saying "it works" is worth nothing.

What the agent did. Without being asked, it built a robot player: a script that starts the real game, presses keys the way a person would, plays it through to the ending, and checks that the game's rules held at every step. The overnight build shipped with 41 of those checks. Later runs took it to 93, and after about 300 simulated battles the robot found a real bug I would never have caught by hand: a laser fired at exactly its maximum range did the wrong thing.

The decision. Here is the insight, and the decision. The robot player was the reason I could trust a build I had not watched being made, so I made it the rule for every agent job since: nothing counts as done until there is a receipt, something deterministic the agent cannot fake. Every other card on this page runs on that rule.

The lesson. Part of this job is watching what the agent does and knowing which of it to keep. Evals are not enough for agents. An eval tells you how good the output is. It does not tell you the agent did the work, or that the thing it built holds together. For that you need scaffolding: evals for quality, robot players and tests for behavior, deterministic checkpoints for done. Deciding what that scaffolding checks is the product work.

Claudiaproduction reliability

The machine that puts itself back together

The problem. I use a Mac mini in my house that runs Claudia, with every agent in its own container. One night the Docker engine died, and every agent went down with it. I found out in the morning. Nothing was watching the agent that was supposed to be watching everything else.

The decision. I created a separate recovery layer, outside the agents, that brings the machine back without me and tells me when it cannot. The recovery process may run any number of times without doing harm, and it fails loudly when it cannot prove that it worked.

The check. A small service starts at boot and makes sure Docker and the workers are running. A watchdog checks every five minutes that they are still up. Both use the same recovery script, which does nothing when things are working fine. The watcher is itself watched by a heartbeat: if it goes quiet, the silence raises the alarm.

The same layer handles failed jobs. When a job fails, a diagnosis job reads the logs, names the likely cause, and sends me the proposed fix on Signal. Fixes from a short approved list run on their own. Everything else waits for my yes.

The lesson. Even though we have AI agents, there needs to be structure around them to make sure that they are working properly and telling you the truth. With that in place, the system can use liveness checks alongside a coding model to actually repair itself.

Claudiasecurity

The agent that almost gave away everything

The problem. In February I was running my assistant on OpenClaw, an open-source agent runner. OpenClaw had a skill marketplace, which sounded great in principle but was actually a vector for bad actors to take control of your agent.

I installed an OpenClaw plugin that promised to watch my browser traffic and write API wrappers for any site I visited. OpenClaw runs a plugin inside the same process as the assistant, so the plugin could read everything the assistant could read, including my 1Password service-account token, which opens up every other secret in the vault. Over two weeks it captured logins from a dozen services as I browsed, my credit card account and my medical records among them, and posted each one to a remote server. It also rewrote the files my assistant reads at startup, telling it to deflect diagnostic questions, ask me for more permissions, and keep the plugin running. I noticed because the assistant started acting slightly wrong. The logs showed the rest. The cleanup took twenty hours.

The decision. I built my own agent starting from two questions: what does the agent need to do its job, and how can I limit the damage it can do if it gets tricked? The first rule became my "run-with-secrets" architecture: one secret exists at rest, the 1Password service-account token, in a file only my user can read on an encrypted disk. Everything else is fetched at boot from references, never stored as values. Every agent runs in a Linux container with only the folders its job needs. Jobs that read untrusted text, code and web pages, hold no keys at all. Nothing from the outside gets installed without a scan in an isolated container, and the scanner rejects the patterns that the malicious plugin had, like anything touching cryptocurrency, or code that sends data to a server it has no business talking to.

The check. Two checks hold those rules in place. If a secret cannot be fetched at boot, the process stops instead of running without it. And a test lists the secrets no job may ever hold and the few each job must keep, so a change that quietly adds a key back, or removes one a job needs, fails the test.

The lesson. Agents can be tricked, and giving them access to your life or your data needs to be thought through extremely carefully. You should only give an agent access to exactly what it needs to get the job done, at the time it needs it. This needs to be a core design principle of any agent that needs access to personal or sensitive data.

Content opscontext engineering

The blog pipeline

The problem. Every AI-assisted blog sounds like every other AI-assisted blog. I wanted the help without the slop.

The decision. I always write the draft. The model can sharpen sentences and fix typos and grammar, but it never writes the seed and it never adds a fact I did not write. It edits toward my own writing: over forty samples of it, including Substack posts, emails, and even Reddit comments.

The check. The edit runs as three passes in a fixed order. One strips the generic AI phrasing. One strips the two dozen patterns that mark machine writing, like inflated significance, synonym cycling, and em dashes. One pulls the draft toward my own idiom, using the samples. A final sweep catches the habits the rewriting itself puts back in, because it always does. Then the result is set beside two or three of my samples and read against them before it goes anywhere.

The lesson. Good AI-assisted writing is doable if you have enough of your own writing to test against, and a solid process to find and clean up any inserted slop.

Agent architecturetool use

Reading documents behind a login

The problem. Investor decks I wanted analyzed lived inside viewers that allow no download. The pages are drawn on screen as pictures, behind a login with two-factor. Handing a model the login and telling it to go get the document was slow and fragile.

The decision. I logged in once, by hand, in a real browser, two-factor included, and the browser session was saved. From then on the model never touched the login. The job split in three. Plain code reused the saved session, opened the deck, scrolled through it, and took a screenshot of every page. A vision model read the screenshots and wrote the text out. A separate reasoning model did the analysis on that text.

The check. Each stage left one thing I could look at: the screenshots, the transcribed text, the analysis. When an answer was wrong, I could see which stage failed without reading any code.

The lesson. The real lesson is the same one as the security card. The model gets no access it does not need. Plain code holds the login, a cheap model reads the pictures, and the expensive model does the thinking, and each stage leaves something I can check.

---

Camberbot

An RC vehicle setup assistant that came out of my own racing hobby. You tell it the car, the track surface, and what the car is doing wrong, and it tells you what to adjust. It covers 21 vehicles and has over 100 active users.

camberbot.com

Terminate Mate

An eight-hour hackathon build: an AI legal assistant for people who just got fired, fine-tuned on California labor law and case precedent. It took an honorable mention.

See the project

MBA

Dartmouth · Tuck School of Business

MS & BS

Mechanical Engineering · Purdue University

I focused on simulation and computer graphics software development.

2024

AI Product Management Bootcamp · AI Product Academy

Capstone project with VC pitch. Curriculum led by Dr. Marily Nika (Google).

2024

Product Management for AI and ML · ELVTR

AI and ML product strategy, evaluation, and system design. Graded 95%.

2022

Decentralized Finance MOOC · DeFi Learning

Blockchain financial systems, smart contracts, and decentralized applications. Earned the Ninja Tier NFT certification.

2011

Product Master Certification · Pragmatic Institute

Eight-course series on product management, strategy, and product marketing.

I'm open to AI product management and forward-deployed PM roles, and I take on advisory and consulting work. My usual clients are founders who want to ship faster and PMs who want to learn to operate this way.

@henry~chat
online
Henry·usually replies within a dayHey, I'm Henry. What brings you here?

routes to my inbox · I read every email

SubstackGitHubLinkedInVoice LegacySF Bay Area · open to relocate