Lookback
Repo
Judge modeEach section shows the criterion it speaks to and a link to the evidence.Full evidence map

For software that decides who gets help

One appeal should fix it for everyone.

When a person wins an appeal because the software was wrong, Lookback finds the bug, fixes it, and issues the restoration the law requires for every other household the same bug harmed. It may act alone only in a person's favor.

  • 0adverse actions across 14,030 harmed decisions found
  • 0false flags on 21,211 decisions after a pure refactor
  • 5,180overpayments held for a person, none acted on

What happened on this project

1 appeal led to 413 households restored, $25,861 in total, with nobody else having to appeal.

Real USDA audit households. How it was measured.

Potential impact

One bug, two neighbors.

Ana appealed.

Her food benefit was cut by $19 a month because the system allowed a $35 medical deduction instead of the $150 she was owed. She took a day off work, waited six weeks, and won.

Ben did not.

Same rule, same cut. He never knew it was wrong. He is still short every month. With Lookback, Ana's win reaches Ben automatically.

  • 11.5%of 4.1 million Medicare Advantage denials were appealed
  • 80.7%of those appeals won
  • 0.2%of Colorado SNAP denials and cuts reached a hearing

The law already says agencies must restore lost benefits automatically . They just cannot find the people, and every month an error stays undiscovered is a month lost for good .

Design

How it works

  1. An appeal is won

    A hearing officer records the outcome and mentions Lookback.

    The mention fires a GitLab Duo flow trigger within a second.

  2. Is it the software?

    An agent reads the decision and reproduces the error with a test. No reproduction, no change.

    Triage returns a JSON verdict; reproduce writes a failing regression test.

  3. Fix it safely

    The agent writes the fix. Tests, scans and a replay of 90 days of real decisions must pass; a person clicks merge.

    Replayability gate, replay gate, SAST, secret and container scanning. Agents have no merge tool.

  4. Look back

    It finds when the bug started and replays every decision since.

    Bisect over git history with the new test; replay the ledger; re-run a sample on the original engine.

  5. Make it right

    It records what each family is owed under the law. It never takes money away.

    7 CFR 273.17, 12-month limit; corrections appended; adverse findings held for a person.

Show the architecture
How Lookback works, end to endA won appeal on a work item starts Flow A, whose three agents triage, reproduce and fix. The merge request must pass tests, the replayability gate and the replay gate, then a person clicks merge. After merge, the Lookback stage bisects git history, replays the decision ledger and computes the remedy. Restorations are appended to the ledger and published as a release. Adverse findings go to Flow B, which opens human review work items.A person records the appealGitLab Duo flow A (three agents, sandboxed, no merge tool)The Lookback stage, after merge (CI/CD, no AI)Hearing decisionrecorded on a work item@mention triggerstarts the flow in one secondTriagesoftware error, or notReproducefailing regression testFixone line, citation, MRGatesall pass, then one merge clickBisectfirst bad releaseReplayevery recorded decisionRemedy7 CFR 273.17, 12 monthsRestore and publishledger corrections, releaseAnything adverse to a household leaves the automatic pathAdverse findingwritten, never acted onFlow Bone review work item eachA caseworker decideslabel human-review::decided0 adverse actions, by construction
From a hearing decision to money restored. The agents write code; the stage after merge is deterministic and runs without AI. Anything adverse to a household leaves the automatic path.

Full walkthrough with every artifact

Technological implementation

It ran for real, on this project. Twice.

Every link is a live GitLab artifact. The households are real USDA audit households ; the hearing decisions are constructed and labeled .

Run 1: medical deduction underpaid

413households
$25,861restored
9held for a person

Mention to merge request in three and a half minutes. After merge: 10,656 decisions replayed, 3 releases bisected, 0 adverse actions taken .

Run 2: a family wrongly denied

19families
$4,616restored
0adverse actions

A lookup one household size too small, no test covering it. The agent found the line unaided; the replay gate named exactly the 19 families; cascade recovered the closed months. A first run with no hearing text returned "unclear" and did nothing.

Potential impact

Measured, not claimed.

99.0%
agreement with USDA's own calculation on 42,327 real audit households
4,411
of 4,411 harmed households found after the earned income bug; recall and precision 1.0
92%
of those households a real, open bug in a public rules engine underpays this month

Benchmarks, baselines and the command that reproduces each number

Innovation

It can only act in your favor.

Restorations are automatic. Anything adverse to a household goes to a person, and no agent holds a tool that could do otherwise .

Never takes money away

0 adverse actions across 14,030 harmed decisions found. The remedy engine asserts it.

Never guesses about money

Every amount comes from tested rules code. Agents read appeals and write code; the Duo CLI quotes the engine.

Everything is checkable

Hash-chained ledgers ; python -m ledger.cli verify recomputes the chain.

Tried to trick it 30 ways; forbidden tools found in any agent's toolset: 0. The full safety page

Technological implementation (Most Stages Covered)

Nine lifecycle stages, one appeal.

  1. Planwork items, triggers
  2. CreateDuo flow, AI Catalog
  3. Verifyreplay gate
  4. Packagesigned images
  5. SecureSAST, scans, sandbox
  6. ReleaseCloud Run, releases
  7. Configureremedy as code
  8. Monitornightly replay
  9. Governledgers, chat, MCP
Show the loop
Nine lifecycle stages in one loopPlan: work item, trigger; Create: Duo flow, MR; Verify: replay gate; Package: signed image; Secure: SAST, scans; Release: Cloud Run, release; Configure: remedy as code; Monitor: schedule, drift; Govern: ledger, chat, MCP. Govern feeds the next appeal, so the loop closes.1Planwork item, trigger2CreateDuo flow, MR3Verifyreplay gate4Packagesigned image5SecureSAST, scans6ReleaseCloud Run, release7Configureremedy as code8Monitorschedule, drift9Governledger, chat, MCPone appealevery stage, real workWhere the new stage sitsStages 1 to 6 are the ordinary life of a code change,done by agents and gates. Stage 7 is the one Lookback adds:after merge, the remedy policy decides who is owed what,with the 12-month limit and asymmetric autonomy as code.Why it is a loopMonitor replays production decisions nightly and fails,with a report, when they drift. Govern keeps the ledger, thereleases, and a read-only chat and MCP surface for anyonewho asks "why does this household get this amount".The next appeal starts the loop again, with the record intact.Not coveredNothing is claimed for stages the project does not touch;each row on the home page links to the job or feature.
Nine stages, one appeal. The remedy stage (7) is the new one; monitor and govern close the loop.

Questions people ask first

Is this real or a mockup?

Real. The runs above happened on this GitLab project, with links to every artifact. The households are from USDA's public audit file. The hearing decisions are constructed and labeled.

Can AI decide who gets money?

No. AI reads the appeal and writes code. Every amount is computed by tested rules code, and anything adverse to a household goes to a person.

What if the AI's fix is wrong?

Its test must reproduce the error, every other test must pass, the replay gate must pass, and it cannot merge anything itself.

Why not just fix the bug?

Fixing stops future harm. It does not repay past harm, and under the law the clock on that is 12 months.

Does it work outside SNAP?

Yes. Any rules service that records decisions with inputs and a code version can be replayed. SNAP is first because its rules, audit data and legal duty are all public.

Make the next fix reach everyone.