Cair — the payout planner's markCair

The payout agent that says no, and footnotes every yes.1

Built for neatHack 2026 v0.1.2

neatlogs read-back

get_trace_context 58636870…

  1. TOOLrail_eligibility · wise NO
  2. RETRIEVERtreaty_lookup · no Other Income article
  3. TOOLfee_calc · at most 4900.00
  4. GUARDRAILPASSED · 7 sourced
1 359 of 359 figures in 48 frozen plans trace to a tool output · eval-v2-r1001 / 11

Exhibit A · Wise Help Centre

“…personal Wise account holders with an address in Indonesia can no longer hold money or currencies in their account.”

WISE-ID · wise.com/help · read 2026-10-10

Devpost's claim form still offers Wise.

Cair · neatHack 2026 · v0.1.202 / 11

Three ways it breaks.

Wise is on the form.

It can't hold money for an Indonesian address.

WISE-ID

Line 10 invites a guess.

The treaty has no Other Income article.

TRTY-ID

Nobody quotes the fee.

Payoneer: “Varies by marketplace.”

PAYO-PRICING

Cair · neatHack 2026 · v0.1.203 / 11

One tool-less model call said

Pilihan Payout Terbaik: Wise

No source “Best payout option: Wise”

Cair returned

Wise Refused

Line 10: blank

≤ $4,900.00 Unclear

Cair — the live plan card: Payoneer delivers, Wise refused with Wise's sentence, line 10 blank, at most $4,900.00 stamped UNCLEAR, every line footnoted
the live card, 10 Oct 2026
Cair · neatHack 2026 · v0.1.204 / 11

Code decides. The model words it.

Your formpayer · amount · country · options
platform_railsrail_eligibilitytreaty_lookupfx_quotefee_calc
Code decidesroute · line 10 · amounts
Qwen words itqwen3.8-max, temp 0
Guardrail checksno unsourced figure
neatlogs
WORKFLOWAGENTTOOLRETRIEVERLLMGUARDRAILEVALUATOR
Cair · neatHack 2026 · v0.1.205 / 11

Specimen · live at app.cair.edycu.dev

app.cair.edycu.dev/plan/01M4JNMB…
Cair — the live app: the payout form and the plan for Devpost, $7,000, Indonesia 1 2 3 4
  1. 1Payoneer delivers, footnoted to its page
  2. 2Wise refused, in Wise's words
  3. 3Line 10: leave blank
  4. 4At most $4,900.00, fee unclear
Cair — /verify: plans read back from neatlogs over MCP, redacted

/verify · traces read back over MCP

Cair · neatHack 2026 · v0.1.206 / 11

Same model, 48 questions.

Recommends a dead route

fewer is better

one call18 / 48
+ sheet2 / 48
Cair0 / 48

Says UNCLEAR when unsourced

more is better

one call11–23 / 143
+ sheet110 / 143
Cair143 / 143
eval-v1-r1…r3 · eval-v1s-r1 · eval-v2-r10 · qwen3.8-max, temperature 007 / 11

Trace d1fa1ed7… · run fail-fx_quote-r1

The rate API fails. The plan finishes.

  1. fx_quoteErrorfx_quote unavailable
  2. fx_quote · retryErrorsame failure
  3. fx_quote_fallbackStalelast ECB rate · 17881 · 2026-10-09
  4. provenance_guardrailPassedno new figures
48 / 48plans completed
350 / 350figures sourced
scripts/eval.py --fail fx_quote · tallies: eval-fail-fx_quote-r9 · trace from run r108 / 11

Three instruments.

neatlogs

One trace per plan. search_traces found two real bugs; /verify reads traces back.

rca-01.md · evidence/traces/

Entire

Graph search ranked the fixed rule first. Checkpoints off: public repo.

evidence/entire/

cfo.ai

Inputs on file.

Model pending

docs/BUSINESS-PLAN.md

Cair · neatHack 2026 · v0.1.209 / 11

Cheap to run. Honest about limits.

$0.0033of LLM per plan
5.50 smedian · p95 10.31 s
$15.26hosting a month, list price
  • Three countries fully sourced; others UNCLEAR.
  • Forward receipts from real users: n = 0.
  • Explains forms, never files.
timings and cost: bench-20261010T085809Z (48 plans, one at a time) · BUSINESS-PLAN.md · README limits10 / 11

The ask

Try it on the form you have open.

The payout route a chatbot can't get wrong.

app.cair.edycu.dev

Cair · Edy Team · neatHack 2026 · v0.1.211 / 11

Slide 1 of 11

Speaker notes