Back to the summary on Siddarth Nyati's portfolio
Two Pipelines, One Method

Siddarth Nyati · the mechanism behind the five gates

Two Pipelines,
One Method

One I built and shipped inside an enterprise, on a platform with real controls. One I built alone, where nobody else was going to catch my mistakes — so I had to build the quality system myself. Neither is complete on its own. The method is what carries across.

Act one · the enterprise system

A release-communications pipeline, built and deployed

A release page goes in. Customer-facing documentation and a notification to the client-facing teams come out. Four narrow model steps, one human gate, and a single scoped tool with permission to send anything.

Intake release page, fetched by ID Parse regex for IDs, model for the rest Classify customer-facing or internal? Draft docs + notification, own output contract Publish one scoped tool, the only send path Human gate edit before anything ships × N tickets, in parallel × M documents Regression set never built every edit is a labelled failure gate every prompt change
The solid path shipped. The dashed loop is the one I didn't close. Four narrow steps rather than one, because they produce different output shapes, they fan out across tickets and documents in parallel, and — the part that matters most — the seams between them are the only places a human gate can go. Every edit a reviewer made before publishing was a labelled production failure. I wasn't capturing them.

Why four steps instead of one call

The design decision I'd defend hardest

It is deliberately not autonomous. My code decides the sequence; the model reasons inside each step and never chooses what runs next. This runs close to a production release, so predictability was worth more than flexibility. Autonomy earns its place where the path can't be enumerated — support triage, a coding agent. Publishing a release note isn't that shape.

The seam

The human gate, and the metric hiding inside it

A gate is not an eval, and conflating the two is how teams feel safe while flying blind.

A gate catches errors one at a time on the way out. An eval tells you whether version N+1 is better or worse than version N. I had the first and not the second, which meant that when I changed a prompt, I had no way of knowing whether I'd quietly broken something that used to work.

What I'd build first, and it costs almost nothing: capture the diff between what the model produced and what the human published. That gives two things at once — a regression set that builds itself from real production inputs, and edit rate as an online metric that falls as the system improves. Edit rate is also the answer to "when do you remove the human": by class of output, once it has been low and stable long enough to trust, and never all at once.

Act two · the system where I owned the whole quality problem

Four kinds of test, matched to four kinds of mistake

On my own editorial pipeline there was no reviewer but me, so the checking had to be built rather than staffed. The organising rule I wrote for it:

The principle

Each layer is evaluated by the cheapest method that can catch its failure mode.

When the contract is…Test withIn practiceCost
ObjectiveDeterministic rulesNine encoded rules that run as a script and exit non-zero on failureFree, seconds, no network
LabelledGolden-set scoringA classifier scored against a hand-labelled catalogue; the gate is a hard threshold~$0.01 smoke, ~$0.10 full
EditorialJudge against a written rubricSix boolean checks and a three-way verdict the orchestrator branches on~$0.02 a run
Personal tasteHuman gate + user signalA person picks; downstream feedback demotes bad outputMinutes, and it doesn't scale
48/48golden-set baseline — and a saturated set has stopped discriminating, so the next move is harder cases
≥95%gate on the accuracy that changes the product; the rest is reported, not gated
~90%of drafts that come back revise pass on the second attempt
p50 5.4slatency reported next to accuracy and cost, because an eval that ignores latency ships the wrong model

Where to put the accuracy target

"How accurate is it" is the wrong question — accurate at what, and what does an error there cost? I made the same call twice in unrelated domains. On a document-processing platform in a regulated healthcare setting, the confidence threshold routed low-confidence extractions to a human, biased toward precision because auto-filing a wrong authorisation is worse than making a person look at more documents. On the editorial pipeline, one classification dimension is a hard gate because getting it wrong breaks the output, and a second is reported only because getting it wrong changes nothing.

One instance is an anecdote. Two is a way of working.

Judging what a rule can't check

Some output has no single right answer, and the honest response isn't to give up on measuring it — it's to layer cheap checks ahead of expensive judgement so the costly step only sees what survived.

Prompt-side bans — catch it while it's still text Structured generation — constrain what can be produced Model judge against a written rubric Human pick — nothing auto-publishes User correction, after the fact $0 $0 ~$0.001 each minutes free, but late cost per item rises
Cheapest first, so the expensive judgement only runs on what survives. The narrowing is the point: a banned composition caught as text costs nothing, the same thing caught after generation costs a real image, and the same thing caught by a person costs minutes. This is simultaneously a quality argument and a cost argument, which is why it belongs to the product owner rather than the engineer.

Expect the pushback, and take it seriously

"Isn't a model judge just marking its own homework?" It would be if it were scoring prose on general quality. It's checking one output against an external document — the written standard is the ground truth, not the model. I keep it boolean rather than scored, I grade named dimensions separately rather than asking for one holistic score, I deliberately refused an "uncertain" verdict because models use it to avoid committing, and there's a human gate downstream that continuously samples whether the judge is being too lenient.

Judge bias is real and documented — position, verbosity, self-preference. Most of that literature concerns comparing two candidate outputs to each other. Comparing one output to a fixed rubric is a different and smaller failure surface.

Because a platform's constraint is capacity, not ideas

Cost as a product decision

Normal software costs the same whether one person uses it or a million. These don't. Someone has to own the cost per unit of value, and that someone is the product owner.

3 axesseparate caps for text, retrieval and image generation — one shared budget lets any axis silently drain the others
44%saved by routing the expensive model only to the surface people actually look at
25%saved by not re-buying information already owned — an archive checked before any paid retrieval
15% → 0timeout rate on long calls, fixed by streaming: same tokens billed, same wall-clock, one line of code

Three things this taught me that transfer directly

Containment

Guardrails, and the risk I'd name before being asked

You can ask a model nicely not to do something, or you can arrange things so it can't. Only the second one is a control.

LayerWhat it doesIn the pipeline
OutputValidate before anything is shown or sentSanitisation before publish; schema validation on every structured step
Tool scopeLimit what the system can do at allA single scoped tool is the only send path — the model cannot notify arbitrarily
DeploymentInherit the firm's controls rather than reinvent themHosted on the internal self-service platform, behind enterprise MFA
InputTreat ingested content as data, never instructionNot built. See below.

The gap I'd close first

Indirect prompt injection. These steps read pages and ticket descriptions written by other people, then generate customer-facing documentation and send a notification. Anyone who can write a ticket description can put text in front of a model that also has a send capability. There was no input guardrail against that.

Two things limited the blast radius by architecture rather than by intent: the human gate on the path to anything customer-facing, and the fact that the only send path is one narrowly scoped tool. Those are two of the four real mitigations. The others — structurally separating fetched content from instructions, and filtering output for exfiltration — are what I'd add, alongside logging attempts so it becomes a detection signal rather than a silently blocked request.

No prompt-level defence is complete. That's precisely why the containment has to be architectural.

Act three

Neither one is complete, and that's the argument

No single role hands you the whole surface. The enterprise system gave me deployment, scoped tools, real controls and a human gate. It didn't give me evals or cost engineering — so I built something where I'd have to own those myself.

Release pipeline · enterpriseEditorial pipeline · built alone
Multi-step decomposition, output contractsyesyes
Human review gate before anything shipsyestwo of them
Deployed on an enterprise platform, behind MFAyesno
Tool scoping as a security controlyesnot needed
Evals with a verdict the orchestrator branches onnoyes
Golden set gating every changenoyes
Cost caps and per-stage cost reportingnoyes
Model routing by consequencenoyes
Retry, backoff, fallback, salvagenoyes
Per-step traceability and resumable runsnoyes
Grounding verified at a gatenoyes
Input guardrail against injectionnono

Why this matters for a central platform

The column on the left is what a team gets when it builds inside an organisation that already has controls. The column on the right is what a team has to build for itself when nobody else will catch its mistakes. A central AI platform's job is to make the right-hand column something spoke teams inherit rather than rebuild — an eval harness, a cost standard, a trace format, a routing rule — so that shipping responsibly is the cheap path rather than the disciplined one.

That's the same argument as the five gates, one level down: gates decide what should be built, this decides what every build gets for free.