Evidence

How the rules were checked

0 of 55 gifts that would lower the check were let through, over Social Security’s own examples, real court cases and labeled bills; the engine matches 40 of 40 of SSA’s answers and 14 of 14 court outcomes scored, of 36 cases.

Each check opens on a press, against answers Giftwise did not write.

Four checks, at a glance

40 of 40 SSA examples; court cases, 14 of 14 scored, of 36 cases; 59 of 59 bills; 100,000 random gifts

The two errors that cost money

0 of 55 gifts that would lower the check let through; 6 of 51 fine gifts sent another way, each with her check whole

The two errors that cost money

  • 0 of 55

    gifts that would lower the check, let through as given.

    Giftwise said safe as given, and SSA, the court or the bill’s label says it counts.

    SSA's examples 0 of 17, court cases 0 of 14, bills 0 of 24.

    Counted by src/lib/error-rates.ts from content/eval/ssa-examples.json, content/eval/ssa-examples-results.json, content/eval/field-cases-results.json, content/eval-results.json. Claude with no rulebook, same bills: 1 of 24. Inside the engine, 100,000 random gifts: 0 routes lowered her check (content/eval/invariants-results.json).

  • 6 of 51

    gifts that were fine as given, sent another way.

    The rule treats the gift as fine as given, and Giftwise rerouted or held it.

    All 6 are hard bills the two reviewers did not settle, so the money went to her ABLE account instead of the shop, and her check stayed whole.

    SSA's examples 0 of 23, bills 6 of 28.

    The 7 contested bills have no single right answer and count in neither rate; all 14 court cases counted, so they add to the first rate only. Claude with no rulebook, same bills: 4 of 28. Cases: lot-rent-only, vacant-lot-tax, extra-principal, business-meter, condo-dues, water-softener.

One bill, two reviewers

Two Claude reviewers read different rulebooks and disagree; code checks both quotes and keeps her check whole either way; and what the AI adds over a router with no AI

Two Claude reviewers disagree. Code decides.

One bill from the recorded run of Nov 4, 2026, read by Claude Opus 5.5. The decision and the route below are computed from that record by the same code the API runs.

The bill$150 to Brookfield Mutual: homeowners insurance premium on her house, required by her mortgage lender.

Regulations reviewerNot a housing cost

Reads only the federal regulations (20 CFR Part 416) and the Federal Register.

“Instead, we will consider only shelter expenses ( i.e., room, rent, mortgage payments, real property taxes, heating fuel, gas, electricity, water, sewerage, and garbage collection services).”

89 FR 21199 (Mar. 27, 2024), Supplementary Information, Background. Found word for word
Manual reviewerA housing cost

Reads only Social Security's operating manual (POMS).

“Only property insurance required by the mortgage holder in order to receive the mortgage is considered a household cost. Insurance (property, fire, theft, etc.) held at the owner's or renter's option is not a household cost.”

POMS SI 00835.465D.3. Found word for word

The referee, in code

Both quotes check out and the answers differ, so neither reading is acted on. The rules engine scores each route under both readings: paying Brookfield Mutual leaves her June 2026 check at $924 if the bill is a housing cost; her ABLE account keeps it at $994 either way. The $150 goes to her ABLE account.

referee() and routeForDecision() in src/lib/review/referee.ts, on the case home-insurance in content/eval-results.json.

What the referee does with a wrong quote, the wrong rulebook, a made-up citation, or two reviewers who disagree
What the reviewers sentWhat the referee didPaid toHer June 2026 check
Both reviewers quote their own rulebook word for word and agree: a housing cost.Regulations reviewer: a housing cost, citing cfr-416-1130-shelter; Manual reviewer: a housing cost, citing poms-si-00835-465-household-costs-listBoth quotes found word for word; acts on the reading. A housing cost, so her ABLE account is paid.Her ABLE account$994 June 2026
The manual reviewer's quote is not in the passage it cites: a sentence the model wrote itself.Regulations reviewer: a housing cost, citing cfr-416-1130-shelter; Manual reviewer: not a housing cost, citing poms-si-00835-465-household-costs-listSets aside the manual reviewer: its quote does not appear word for word in the passage it cited. Abstains, and routes the bill the way that keeps her check whole under either reading.Her ABLE account$994 June 2026
The regulations reviewer cites a passage from the manual, the other reviewer's rulebook, with a real quote from it.Regulations reviewer: not a housing cost, citing poms-si-00835-465-household-costs-list; Manual reviewer: a housing cost, citing poms-si-00835-465-household-costs-listSets aside the regulations reviewer: it cited a passage from the other reviewer's rulebook. Abstains, and routes the bill the way that keeps her check whole under either reading.Her ABLE account$994 June 2026
The right answer (a housing cost) with a citation that does not exist in either rulebook.Regulations reviewer: a housing cost, citing cfr-416-1130-z-utilities; Manual reviewer: a housing cost, citing poms-si-00835-465-household-costs-listSets aside the regulations reviewer: it cited a passage that is not in any rulebook Giftwise holds. Abstains, and routes the bill the way that keeps her check whole under either reading.Her ABLE account$994 June 2026
Both quotes check out and the answers differ: housing from the regulations, not housing from the manual.Regulations reviewer: a housing cost, citing cfr-416-1130-shelter; Manual reviewer: not a housing cost, citing poms-si-00835-465-household-costs-listBoth quotes check out and the answers differ, so neither reading is acted on. Abstains, and routes the bill the way that keeps her check whole under either reading.Her ABLE account$994 June 2026

What the AI adds, measured

With no AI, always taking the route that is safe under both readings keeps her check whole on 59 of 59 bills with 0 wrong routes, the same as the referee: on these bills the AI does not make the check safer. What the AI adds is settling bills: the referee pays 22 of the 28 bills that are not housing straight to the business, with nothing left for her to do, while the router with no AI pays 0 that way and sends 59 to her ABLE account, where she pays each bill herself.

All 59 billsNo AIRegulations aloneManual aloneBoth reviewers, referee
Her check kept whole59 of 5958 of 5959 of 5959 of 59
Wrong routes accepted0100
Settled with nothing left for her to do: paid straight to the business, of the 28 that are not housing0 of 2822 of 2828 of 2822 of 28

src/lib/review/what-ai-adds.ts: the router with no AI is routeForDecision(gift, "unsure") on every bill, scored against the true label as scripts/run-eval.ts scores the others, at the run’s amount and date; the other columns are the recorded outcomes in content/eval-results.json.

Where the two-reviewer design comes from

The published designs it builds on, and the one part that is new: independence from the text each reviewer reads

Where the two-reviewer design comes from

The published ideas, and how this one differs
  1. Zheng and others, 2023

    A model judges answers, and the paper names the biases that come with it: position, length, a preference for its own style.

    Here the model reviews a bill against a rulebook, not a chatbot answer, and must quote the text it relies on.

  2. Verga and others, 2024

    A panel of smaller models from different families beats one large judge, with less of any one model's bias.

    Here the panel varies the rulebook, not the model: one reviewer reads only the regulations, the other only SSA's manual.

  3. Kohli, 2026 (May 28, 2026)

    Nine models from seven families give about two independent votes, because they make the same mistakes on the same items.

    The reason the two reviewers read different texts: independence has to come from the input, not from the model's name.

  4. Jung, Brahman and Choi, 2024

    A judge answers only when it is confident and otherwise escalates to a stronger model, with a guaranteed level of agreement with people.

    Here the escalation is not to a bigger model but to the route that keeps the check whole under either reading, chosen by code.

  5. Badshah, Emami and Sajjad, 2026 (August 2026)

    If unsure, retrieve evidence and judge again; if still unsure, abstain and flag the case for a person.

    Here abstention follows disagreement between two reviewers reading different rulebooks, after code has checked every quote word for word.

  6. Madras, Pitassi and Zemel, 2018

    A model learns when to defer a decision to a person, taking that person's own errors into account.

    The defer-to-a-person lineage. Giftwise defers to a safe route in code, and a person approves every payment in PayPal.

  7. Geifman and El-Yaniv, 2017

    A classifier with a reject option, set by the risk a user accepts and the coverage that gives.

    The two error rates on this page, a wrong route accepted and a fine gift sent another way, follow that risk-and-coverage framing.

“The agent proposes, a person approves”, the way the assistant on /agents starts a checkout only the giver can approve, is a pattern many agent products share this year and is vendor guidance (Anthropic, Building effective agents, December 19, 2024). It is done carefully here; it is not the headline.

referee() and routeForDecision() in src/lib/review/referee.ts; checkVote() checks each quote against the reviewer’s own rulebook; tests/referee.test.ts.

The two reviewers, measured

59 labeled bills; wrong routes accepted: referee 0, Claude with no rulebook 3

59 of 59 labeled bills routed so her check stays whole.

Wrong routes accepted, of 59: 0 with both reviewers and the referee, 3 for Claude with no rulebook.

59 bills paid by someone else, each labeled from the rule text with the passage cited. Run Nov 4, 2026 with Claude Opus 5.5; 118 of 118 quotes found word for word.

All 59 billsBoth reviewers, refereeClaude, no rulebookRegulations aloneManual alone
Her check kept whole59 of 5956 of 5958 of 5959 of 59
Wrong routes accepted0310
Clear bills settled right43 of 5247 of 5244 of 5251 of 52

What the second reviewer adds. On this run the manual reviewer alone was as safe as the referee: 0 wrong routes, her check whole on 59 of 59, and it settled more clear bills, 51 of 52 against the referee's 43. The regulations reviewer alone accepted 1 route that would lower her check (home insurance), which the referee did not. Which reviewer errs is not known before a bill arrives, so Giftwise acts only on a reading both checked quotes support. With one reviewer wrong, trusting it alone keeps her check whole on 28 of 59 bills; with both reviewers and the referee, 59 of 59. The cost: 9 clear bills go to the route that keeps her check whole under either reading instead of being settled, each with her check whole.

Both tables, and what happens when one reviewer is wrong

59 bills paid by someone else, in two sets: the first 20, and 39 harder bills near the line between housing and everything else, such as lot rent for a mobile home, a second mortgage, condo fees and a refundable utility deposit. Each is labeled from the rule text with the passage cited: 52 where the rules are clear, and 7 where the two rulebooks point different ways or neither settles it. Run Nov 4, 2026 with Claude Opus 5.5. 118 of 118 quotes were found word for word.

The baseline is the obvious alternative: Claude alone, given only the bill, decides whether it is housing and picks the route, with no rulebook, no quotes and no referee. A wrong route is one that would lower her check under the true reading; for a contested bill, under either reading.

All 59 billsBoth reviewers, refereeClaude, no rulebookRegulations aloneManual alone
Wrong routes accepted0 of 593 of 591 of 590 of 59
Right, clear bills43 of 5247 of 5244 of 5251 of 52
Wrong, clear bills0310
Sent to the either-reading route9271

Claude with no rulebook accepted 3 routes that would lower her check (1 where the rules are clear, 2 on contested bills). The regulations reviewer alone accepted 1 route that would lower her check, on a contested bill. The manual reviewer alone and the referee accepted none.

Wrong routes acceptedBoth reviewers, refereeClaude, no rulebookRegulations aloneManual alone
First 20 bills (20)0010
Harder bills, near the line (39)0300

The two checked readings differed on 16 bills: 2 where the reviewers gave opposite answers, 8 where one rulebook did not settle it, 6 where neither did. It sent 16 of 16 to a route that keeps her check whole under either reading. The referee accepted fewer wrong routes than Claude with no rulebook and the regulations reviewer alone, as few as the manual reviewer alone, and kept her check whole on 59 of 59 bills. It settled 43 of 52 clear bills on a shared, checked reading; for the other 9 it chose the route that keeps her check whole under either reading.

When one reviewer is wrong

For each bill, one reviewer’s recorded answer is flipped, quoted from its own rulebook or with a quote that is not in it. How often does her check stay whole?

SetupCheck kept whole
Trust the wrong reviewer alone28 of 59
Both reviewers and the referee, the wrong one quoting its rulebook59 of 59
Both reviewers and the referee, the wrong one inventing a quote59 of 59

src/lib/review/stress.ts: reviews rebuilt from content/eval-results.json, each answer scored with referee() and routeForDecision() against the bill’s label.

scripts/run-eval.ts over content/eval/bills.json and content/eval/bills-hard.json; add --rescore to re-score the recorded answers with no AI calls.

All 59 bills, with every answer

Checked against Social Security’s own examples

The engine matches 40 of 40; Claude with no rulebook, 32 of 40

40 of 40 match Social Security’s own answers.

Claude alone, asked the same questions with no rulebook and no rules engine: 32 of 40. It differed from SSA on what counts after the $60 one-off exclusion in 6 and how much housing support is charged in 2. Giftwise does that arithmetic in code.

40 worked examples from 15 sections of SSA’s operating manual and 1 section of its regulations, each about a gift or similar help to one person. Run Nov 9, 2026; Claude is Claude Opus 5.5.

Real cases, from federal courts

Help from family was counted against the person in all 14; the engine reaches SSA's and the court's outcome in 14 of 14 scored, of 36 cases

14 of 14 scored, of 36 cases, agree

The rules engine reaches the outcome SSA and the court did.

Whether the help counts: 14 of 14. The way it is valued, where the opinion names it: 9 of 9. Amounts the opinion states: 3 of 3.

From 285 federal court opinions in GovInfo, which are public domain (17 U.S.C. 105): 87 read closely, 36 kept, 14 scored. Run Nov 9, 2026.

100,000 random gifts, every promise kept

13 promises, each held by every gift

100,000 of 100,000 random gifts kept all 13 promises.

Each gift meets up to twelve open needs of every kind, from medicine to rent. 342,382 recipients in all, $600,823,094 routed.

All 13 promises, and what the first runs sharpened

Every answer is held to every promise below, and every answer kept every one.

PromiseKept
Every cent is either paid to a recipient or handed back, never lost or made up100,000 of 100,000
Her check is exactly what it would be with no gift at all100,000 of 100,000
Routed, her check is never lower than the same gift as cash100,000 of 100,000
No recipient is paid more than the need still open100,000 of 100,000
ABLE deposits stay within the $20,000 yearly limit100,000 of 100,000
ABLE deposits never take the account past $100,000, where they would count toward savings100,000 of 100,000
Money goes to an ABLE account only for someone who can have one100,000 of 100,000
One checkout never needs more than PayPal's 10 recipients100,000 of 100,000
Every amount is positive and in whole cents100,000 of 100,000
Every line cites a rule in Giftwise's rule table100,000 of 100,000
No check is above the federal SSI rate or below zero100,000 of 100,000
Recomputing the month from the lines gives the same check100,000 of 100,000
The same gift always gets the same answer100,000 of 100,000

The first runs sharpened the router four ways. Each line is now checked together with the lines already chosen, so small amounts never add up past the exclusions. ABLE deposits from one gift share the year’s $20,000 limit, with anything past it handed back. A need marked for ABLE goes only to someone who can have an account. And the month’s income is summed to the cent, so the order of the amounts never moves a check. Each has its own unit test.

npx tsx scripts/run-invariants.ts 100000: seed 20261104, so every run is the same 100,000 gifts; 946 s on Nov 9, 2026. src/lib/invariants.ts; 1,000 of them run with every npm test.

The rules watch the Federal Register

Asked live for every change to how SSI counts income and in-kind support, and each year's amounts

9 of 9 rule changes and notices reviewed

Last checked with the Federal Register on 2026-11-04: all 6 SSI income rules since 2022 and all 3 amounts notices since 2024 are reflected. Amounts in use: 2026 and 2027.

All 9 Federal Register documents, and what Giftwise does with each
PublishedDocumentWhat Giftwise does
Oct 26, 202691 FR 67380 Cost-of-Living Increase and Other Determinations for 2027In use: $1,029 a month for one person and $1,544 for a couple for checks paid from January 2027, with the one-third reduction and the presumed maximum value following the new rate (POMS SI 02005.001 E.4.c).
Nov 3, 202590 FR 49047 Cost-of-Living Increase and Other Determinations for 2026In use: $994 a month for one person and $1,491 for a couple for checks paid in 2026.
Oct 25, 202489 FR 85276 Cost-of-Living Increase and Other Determinations for 2025The 2025 amounts, for checks paid before Giftwise's first year.
Apr 19, 202489 FR 28608 Expand the Definition of a Public Assistance HouseholdIn a public assistance household, including one that gets SNAP, help from the household is not counted as in-kind support. The routes Giftwise uses keep the check whole in either case.
Apr 11, 202489 FR 25507 Expansion of the Rental Subsidy Policy for Supplemental Security Income (SSI) Applicants and RecipientsRent below market from a parent or child is a rental subsidy: the engine counts the lesser of the market rent and the presumed maximum value, less the rent paid, and nothing once the rent reaches that value (rule R-SHEL-05, POMS SI 00835.380).
Mar 27, 202489 FR 21199 Omitting Food From In-Kind Support and Maintenance CalculationsFollowed: food is not in-kind support from September 30, 2024 (rule R-FOOD-01), and the one-third reduction applies only when the household provides all meals (20 CFR 416.1131(a)(3)).
Sep 29, 202388 FR 67148 Expand the Definition of a Public Assistance HouseholdThe proposal for the 2024 final rule 89 FR 28608.
Aug 24, 202388 FR 57910 Expansion of the Rental Subsidy Policy for Supplemental Security Income (SSI) Applicants and RecipientsThe proposal for the 2024 final rule 89 FR 25507.
Feb 15, 202388 FR 9779 Omitting Food From In-Kind Support and Maintenance CalculationsThe proposal for the 2024 final rule 89 FR 21199.

src/lib/rules-watch.ts asks api.federalregister.gov three questions (rules for 20 CFR Part 416 that mention in-kind support and maintenance or unearned income since 2022, and SSA’s cost-of-living notices since 2024) and compares the answers with content/rules-watch.json. GET /api/rules-watch returns the same; the nightly outside checks fail on any document not yet reviewed.

What the AI never decides

Claude reads and explains; code decides every amount, payee and route, the same way every time
How much each payee gets
The rules split the giver's amount across the open needs, to the cent, never past what a need still needs.
routeGift() in src/lib/routing.ts. The server routes every gift again and ignores any split a browser or an agent sends (src/lib/paypal/gift-order.ts).
Which rule applies
Code maps each kind of need to its rule. A reviewer's reading of a bill counts only when both agree and both quotes check out word for word; otherwise code takes the route that is safe under either reading.
evaluateGift() in src/lib/rules/engine.ts; referee() and routeForDecision() in src/lib/review/referee.ts.
The benefit arithmetic
Every exclusion, the in-kind support amount and the check two months later, computed by the rules engine.
computeMonth() in src/lib/rules/engine.ts. The bill, reviewer and rulebook prompts tell the model never to compute benefit amounts (src/lib/ai/tasks.ts, src/lib/ai/reviewers.ts, src/lib/rulebook.ts).
When money moves
Only when a person acts: a giver approves in PayPal, or an organization sends its Payouts batch. Each capture happens once. An AI assistant can start a checkout, never approve one.
captureAndRecord() with a PayPal-Request-Id in src/lib/paypal/capture.ts. startRoutedGift() in src/lib/paypal/gift-order.ts and POST /api/paypal/orders refuse any gift that would leave the check below the no-gift check.
Who gets paid
The need's route picks the payee from accounts the server holds. Housing needs go to her ABLE account.
routeNeed() in src/lib/manage.ts and payeeEmail() in src/lib/households.ts.
Her report to Social Security
Built from the payments by code, in full and in Easy Read, with no model call.
buildReport() in src/lib/report/ssa.ts and src/lib/report/easy.ts.

What the model does instead. It reads bills and fundraiser pages into fields (who, how much, what kind) that the organizer sees before making a page, compares a bill with two rulebooks and quotes each word for word, and explains answers in plain words. Everything it reads goes through the rules engine before any of it reaches money.