Build log
AI reads every wedding vendor quote I get. Nothing enters my tracker until it clears four gates.
· updated
An AI agent reads every wedding-vendor quote and fills my tracker — but no value enters until it clears four gates. Here are two real failures the gates caught.
Key findings
- An AI agent extracts every vendor quote, but no value enters the tracker until it clears four gates: provenance, labels, business rules, and human sign-off.
- Looks-complete and is-complete are different claims — a reconciliation check caught a silently-dropped payment schedule.
- Two real failures the gates caught are walked through below.
Why not just let the AI fill the spreadsheet?
Because AI fails quietly. One bad cell and I can't trust the sheet, and a quiet failure doesn't tell you which cell it is.
What happened. Early on, my consolidated tracker turned a 118-row guest list into four tidy tier counts — and silently dropped the payment schedule entirely. No error, no warning. Everything looked done.
What caught it. A reconciliation check — does the consolidated view still contain every source row? It didn't. The payment schedule never made it across, and the check is the only reason I know.
That's the lesson under everything here: "looks complete" and "is complete" are different claims. Only a check can tell them apart. So the agent reads every quote, contract, and follow-up — but no value enters the tracker until it clears four gates.
Gate 1 — No source, no entry
Every value the agent extracts has to cite exactly where it came from — the quoted sentence in the email, the page in the PDF. A number with no source doesn't get a row. It gets rejected.
This isn't bureaucracy. Grounding — tying each number back to the document it came from — is the cheapest way I know to stop a hallucination (a confident, made-up answer). And it pays off daily: any number in my tracker is one click from the document that produced it.
Gate 2 — Every value gets a label
Four labels, no exceptions:
- CONFIRMED — quoted directly from the source.
- INFERRED — derived (a summed total, a reformatted date), with the derivation shown so I can redo the math myself.
- MISSING — the source doesn't say. The cell stays blank. The agent never guesses.
- CONTRADICTED — the email says one figure, the attached PDF says another. That escalates to me immediately, whatever the model's confidence.
I built this gate for the one conflict I'd most likely miss by eye: the email says one number, the attachment says another. Both can't be right? Left alone, an extractor will quietly pick one and the other disappears. Mine isn't allowed to pick. It flags the pair and waits for me. When that flag fires, the gate is doing exactly what I built it to do.
Gate 3 — Do the math on every row
Business rules check every row: subtotal plus tax must equal the total, dates must be valid and not stale, the vendor name must match a vendor I already know.
These are dumb checks. That's the point. They catch more errors than the model's own confidence score, because the confidence score only tells me how sure the model is — not whether it's right. Subtotal plus tax either equals the total or it doesn't, so I do that math on my end, every row. A failed rule flags the row. It never fills it.
Gate 4 — Judgment stays with me
Facts auto-fill: costs, deposit terms, insurance, availability. Judgment never does: style fit, tasting results, "feels like us." The line between the two is drawn in the schema — the structure of the tracker itself — not in good intentions.
There's research behind drawing it that hard: models judge subjective and normative calls 8–20% more harshly than humans (MIT / Science Advances, 2023).[1]
One more guard, learned the hard way. When a decision is mine, I write down my gut lean before I look at the computed score. Seeing the score first anchors you, and then the score is making the call. The whole point is that the system informs my decisions without making them.
What this catches in practice
A dated commitment — a tasting deadline — once sat in an email digest and never made it to the tracker. The AI had summarized it; nothing was tracking it. I had been treating those as the same thing, and that miss was mine. It cost nothing that time. Now a completeness check compares dated commitments in the sources against the tracker, so if that gap opens again, it doesn't stay quiet.
The pattern repeats everywhere: extraction without verification is just the AI copying things down with confidence. Some of it will be wrong, and it won't tell you which. The agent does the reading. The four gates are why I trust what's in the tracker.
Method & data
Method: live wedding-vendor intake over ~6 months — the four-gate protocol plus the tracker-reconciliation and completeness checks that caught the dropped payment schedule and the missed tasting deadlineData: real vendor quotes, contracts, and follow-ups (vendors, dollar figures, and names scrubbed; the patterns are real) · Last checked: 2026-06-25
How this was made
AI-assisted, human-verified. I drafted this with an AI assistant from my own protocol notes, then reviewed and verified every claim against the actual checks before publishing. I never pasted confidential content into an AI tool to produce it — that's the same discipline the post is about.
Correction (2026-07-07): the receipt above originally named _check-tracker-populated.py as the completeness check. That script guards a different failure — built-but-not-populated. The guard that compares dated commitments against the tracker is _check-tracker-completeness.sh, and the receipt now names it. Both catches described in this post are unchanged; I re-read both scripts to confirm which one caught which. Logged in the corrections log.
I'm Ali — I run real life and work (a wedding, an HOA, civic data) on AI, then check its work in the open. That's personal AI ops. More at /about.
Published under my standards. Found an error? Tell me — corrections go in the corrections log, dated, never silent.
Cite this
@online{ali2026fourgates,
author = {Ali},
title = {AI reads every wedding vendor quote I get. Nothing enters my tracker until it clears four gates.},
date = {2026-06-25},
url = {https://alidoes.ai/wedding-vendor-ai-four-gates/}
}MIT / Science Advances (2023) — AI models make systematically harsher judgments on normative/subjective rules (8–20% stricter than humans). https://news.mit.edu/2023/study-ai-models-harsher-judgements-0510 ↩︎
Have a take — or caught something I got wrong? Discuss on X or LinkedIn. If it’s a correction, it goes in the corrections log.