The model proposes, the compiler disposes
The single sentence that turns an unreliable text generator into a system you can trust with real work.
In 60 seconds
The model proposes, the compiler disposes
The single sentence that turns an unreliable text generator into a system you can trust with real work.
What counts as a checker
| Checker | What it proves | Trust |
|---|---|---|
| Run the code | It executes and produces this output | Total, within what the code covers |
| Run the tests | It satisfies the properties you specified | Total, and only as good as your tests |
| A type checker or schema | The shape is right | Total, for shape only |
| A constraint solver | The answer satisfies formal constraints | Total, within the model of the problem |
| A calculator or database lookup | The number or fact matches a source | Total, if the source is right |
| A regex or format check | It looks structurally correct | Partial — shape is not truth |
| A second LLM judging | It seems plausible to another guesser | Weak — this is not verification |
Why code execution is the best checker we have
- It is free — no human, no annotation, no waiting.
- It is instant — millisecond feedback, so a loop can run many times.
- It is unlimited — you can check a million proposals.
- It is honest — a stack trace cannot be talked around, flattered, or prompt-injected into agreeing with you.
Finding a checker in a domain that has none
- 1
Look for the thing that is already checked
Invoices reconcile against a ledger. Schedules must not double-book. Configurations must parse. Legal citations must resolve to a real case. That existing check is your verifier. - 2
Turn a judgement into a computation
"Is this summary faithful?" is a judgement. "Does every claim in this summary appear in the source document?" is a computation, and a much better proxy than an LLM rating. - 3
Make the model produce something checkable
Do not ask for prose when you can ask for a query, a formula, a diff, or a structured object. Prose cannot be executed. A SQL query can. - 4
Accept partial verification honestly
Checking 70% of the output automatically and routing the rest to a human is a real system. Pretending an LLM judge covers the other 30% is not.
Watch and read more
Lab
A verifier for a domain that supposedly has none.
The problem
# "Is this summary faithful?" -> judgement.
# "Does every claim appear in the source?" -> computation.
def unsupported_claims(summary, source):
return [c for c in extract_claims(summary) if not entailed(c, source)]You are done when
Hard questions
Try to answer before you reveal. If you can answer these, you understood the lesson.
Q1Your verifier covers 70%. A colleague proposes an LLM judge for the rest. Give the strongest case for and against.Reveal
Questions people ask
What if my domain genuinely has no checker?
Then you are building a tier-2 system with a human as the checker, and you should say so plainly in your design. That is a perfectly good product. The failure is claiming automated verification you do not have.
Is this just retry-on-error?
Retry repeats the same request. This feeds the specific failure back in as context, so the next attempt is informed by exactly what went wrong. That difference is most of the value.
How many correction rounds should I allow?
Three to five for most tasks. Beyond that, success rates fall sharply — a model that has failed five times is usually stuck in a wrong approach rather than close to a right one. Cap it, and escalate to a human.
Does this make the model smarter?
No. The model is identical. The system is more reliable, which is what you were actually being asked to deliver.
Lesson test
5 questions. Get 3 right (60%) to pass and complete this lesson.
Sign in with your phone number to take the test and save your progress