Pilots stall because nobody trusts the evaluations. I'm a senior PM (Societe Generale, CFA) who has spent two years building that missing proof discipline: eval gates that catch what demos hide, regression suites that make model upgrades an afternoon instead of a quarter, and agents engineered to run unattended — on Google ADK, Gemini, and BigQuery, shipped end to end.
AI that can't cite its source is a liability. I build with provenance first, then put an eval suite around it so quality is a number, not a vibe.
Workflow when the order is known; agent when the order depends on findings. LLMs only where judgment is genuinely required — the cheapest, most reliable parts of a system have no model at all.
I write code, ship prototypes, and stand up multi-agent pipelines. Engineers respect PMs who understand what they're asking for.
In 2026 surveys, about seven in ten enterprises are piloting AI agents. Roughly one in ten has put a single agent into live production. Proof is what separates the two groups — four named gaps, and what I've shipped against each.
Teams can't verify their AI works, so it stalls before production. In surveys, half of enterprises shipped something that passed internal evals and then failed a customer — because a passing eval is not the same as a working product.
Binary PASS/FAIL evals against human labels — a 4.9/5 self-grade was hiding a 42% failure rate. Judges structurally separated from generators. An auditor that caught its own passing pipeline lying. And a documented NO-GO on an A/B the judge had passed clean — because the real failure was one the eval didn't measure yet.
Lived in: Pain Signal Intelligence · RedInk
Every model release invalidates every customer's validation — thresholds, judge calibrations, and golden sets are properties of a specific model, and that model has a retirement date. Without eval infrastructure, the choice is pin-and-break or upgrade blind.
Version the judgment, not the model. A formula version on every score row so retuning never rewrites history, and a release gate that went 5/13 → 12/13 golden cases across four rubric versions with the model held constant. When a platform release deprecated my pipeline's agent family mid-build, the migration took an afternoon — because the decision records were separate from the primitives.
Lived in: Pain Signal Intelligence · RedInk
Evaluation asks whether the output is good. Operations asks whether the agent stays alive, on budget, and observable when nobody is watching. Gartner predicts 40% of enterprises will demote or decommission autonomous agents by 2027 — over governance gaps found only after production incidents.
Checkpointing, idempotency, and liveness — each learned from a real failure: a silent seven-day outage (now silence itself is the alarm), a day-one crash mid-run (state persists before the LLM tail, so a crash resumes instead of restarting), and a 21.4-hour hang on a single filing (fixed with an out-of-band 240-second deadline).
Lived in: two unattended agents in production · see Now Building
Seats get bought; usage stays shallow. Enterprise AI adoption fails on voice and trust before it ever fails on capability — and renewal risk hides in idle seats, not in headline penetration numbers.
At Societe Generale, a working summary agent was rejected by its own first user for sounding fluent but generic. Few-shot prompting on the user's own previously accepted artifacts fixed it: the agent learned the house voice from work the user had already blessed. Adoption gets fixed one skeptical user at a time.
Lived in: Societe Generale · production AI in a regulated bank
A multi-agent system on Google's Agent Development Kit that mines real enterprise-AI pain from five live public sources, scores it deterministically, and has a cross-family judge verify every claim before it writes a PRD — gated on evals, with the receipts in BigQuery.
ProblemTeams decide what to build from anecdotes — so the loudest pain wins, not the most buildable one.
InsightA pain you can't act on is a backlog, not a signal. Score it frequency × intensity × addressability² in deterministic Python — a multiplicative veto, so one near-zero pillar kills the score instead of being averaged away. Addressability carries the highest exponent because it decides whether a pain belongs on the roadmap at all.
TradeoffA fixed-order ADK graph, not an autonomous LLM coordinator. The pipeline has exactly one correct order, so determinism owns the control flow and every stage persists to BigQuery — a crash resumes only the stage that failed. The model is reserved for judgment, never routing.
ResultA cross-family Claude judge verifies grounding before any PRD is written. I planted two lies in a synthesis — a count inflated from 12 to 80, and a fabricated "users want dark mode" with no signal behind it — and Claude failed both on the first run with the row-level evidence, then the gate forced a rewrite. A same-family control flagged nothing.
Eval-first financial anomaly detection across the Nasdaq-100. Three independent signals — statistical outliers, earnings-quality red flags, and narrative spin — roll into one conviction score, and an LLM-as-judge suite gates every explanation before an analyst sees it. The signal it hunts is the gap between the numbers and the story management tells about them.
ProblemAn analyst covering 90+ names can't read every 10-Q line by line — and the filings that matter most are the ones where the numbers turn but the narrative doesn't.
InsightThe signal worth an analyst's time is the gap between the numbers and the story management tells about them. When three independent signals agree, a false positive becomes unlikely.
TradeoffGraded explanations on a hard binary PASS/FAIL, not a 1–5 scale — a 4.9/5 average was hiding a 42% fail rate. Failure visibility over a flattering number.
Result32 ALERT-tier filings surfaced from 1,352 scored — each one a cited MD&A passage behind an LLM-as-judge gate that lifted the champion prompt to 4.72/5 with 100% label match.
Each one a rung on the same ladder — every link below is live.
A grounded "Decision Coach" over 700+ verbatim PM regrets from Lenny's Podcast. Precision 33%→90% via prompt iteration; confidence threshold tuned to refuse rather than guess (top-1 relevance 30%→80%).
Résumé + JD → an AI-scored candidate-fit radar, with auth, batch processing, an analytics dashboard, and a feedback loop. Kept deliberately raw — the "before" of the arc.
An open-source AI system that reads your goals + backlog and surfaces what to work on next. The meta-tool that runs this whole portfolio — building the system that builds the products.
Each product taught the next. Read top to bottom: the capability ladder from shipping to systems to self-verifying agents.
Learned to ship → to measure → to build systems → to make them agentic, self-verifying, and unattended — in public.
Memory and context, continuous learning, and planning over long horizons — the open problems of the agent era. A position on each, earned from shipped systems, and what I'm building against it right now.
I split memory by grain: session state for the run, an append-only history table for trends, and a persisted registry as institutional memory — deciding per stage whether context gets injected or fetched. And I've hit the classic failure: storing volatile upstream state as a durable fact.
An unattended weekly agent that reads git facts across five repos, compares against its own prior report to compute deltas, and reports drift — its memory-access failures logged and carried as open issues. Plus conversation memory in a routed LangGraph chat agent.
Version the judgment, not the model. Golden sets, per-attempt per-criterion judge verdicts logged to BigQuery, and a formula version on every score row so retuning never rewrites history. The release gate improved 5/13 → 12/13 with the model held constant — the learning lives in the rubric, so it survives model churn.
An error-discovery loop for content: an agent drafts, a human edits, and the deltas between draft and accepted version become the next round's few-shot examples — the same accepted-artifact pattern that fixed adoption at the bank.
Workflow when the order is known; agent when the order depends on findings. My flagship is a fixed-order graph by deliberate, ADR-defended choice — its pipeline has exactly one correct order. And long-running means checkpointing, idempotency, and liveness, each learned from a real production failure.
Crossing from workflow to agent: a coordinator that owns data-dependent control flow — "this pain looks big → spawn a deeper sub-investigation; this week's signal is weak → skip the PRD." In parallel: routed chat agents in LangGraph, deciding who owns the tool decision — a classifier route in code, or the model's own tool calls.
Platform depth: Google ADK 2.2 in production — Sequential, Parallel and Loop agents, with a cross-family Claude judge reached over the LiteLLM bridge · LangGraph for routed conversational agents · deterministic Python wherever correctness has to be provable.
The capabilities a senior AI PM is expected to own — and where each shipped product demonstrates them.
| Product | Grounding / RAG | Evals | Agentic | Telemetry | Shipped live |
|---|---|---|---|---|---|
| Pain Signal Intelligence | |||||
| RedInk | |||||
| PM Confessional | |||||
| Strategic Fit Canvas | |||||
| Product Management OS |
A few from the feed — each one a real decision from building these tools, in the open.
An LLM judging its own family shares its blind spots — correlated error. So Pain Signal Intelligence judges Gemini's synthesis with Claude, from a different model family. I planted a fabricated pain to test it; Claude failed it on grounded and forced a rewrite. A same-family control run flagged nothing.
Collectors hit source APIs that already return structured data, and scoring is a fixed formula. Neither needs inference. LLMs only where judgment is genuinely required — classify with Flash, synthesize with Pro, judge with Claude — and deterministic Python everywhere correctness has to be provable.
Numerical rubrics smooth over the failures you most need to see. Moving RedInk's eval suite to binary PASS/FAIL (per Hamel Husain's method) surfaced a routing bug — the model pointing analysts to the wrong filing artifact — and cut the failure rate 41% in one iteration, with no prompt change.
PM Confessional's search took 11 seconds. Dropped it to under 0.1s by skipping the expensive rerank when internal confidence is already high, falling back to Gemini Flash-Lite when it isn't, and caching embeddings. The fix was judgment about when to spend the call, not a faster model.
The principles that shape every product decision I make.
Features are solutions in search of problems. I spend more time understanding why users behave the way they do than cataloguing what they ask for. The best product insights live one question deeper — "why does that matter to you?" is where the real brief is.
For AI products especially, "it feels better" isn't shippable. I put an eval harness around the thing — precision, TPR/TNR, an LLM-as-judge with a golden set, a cross-family judge for the calls that matter — so I can tell whether a prompt change helped, regressed, or just moved the demo. Metrics inform; judgment decides; but I refuse to fly blind.
An LLM is the most expensive, least predictable component in any system — so I reach for it last, not first. Fixed formulas, fixed order, and plain code own the parts that have to be provable; the model is reserved for genuine judgment. Scoring a pain as frequency × intensity × addressability² in Python — not asking a model to "rate it" — is exactly this call.
I'm looking for senior AI PM roles that own the hard problems on this page — evaluation, model churn, agent reliability, adoption. If that's the roadmap you're hiring for, let's talk.