Appearance
Live Data Examples
1. A Singapore Airlines Trip Gets Flagged
Live row: Singapore Airlines card authorization, Singapore dollar 4,029.50, employee card c-001, event e55c7684-0349-4073-9884-33a37e3012cb.
| Lens | What happens |
|---|---|
| User perspective | The controller sees a policy row in the queue: Singapore Airlines is flagged because the United States dollar-equivalent amount is about $2,982, above the single-trip travel cap, and a receipt is required. The row is not declined silently; it asks for review. |
| Backend path | The Reap Card event is stored as a card_auth row in events. policy-enforcement loads the tenant policy bundle, evaluates the merchant category code, amount, geography, and receipt state, then writes a suggest decision with the triggered rule identifiers and evidence. |
| Reap impact | This makes Reap's existing card-control surface more useful after authorization. The customer gets explainable review instead of a black-box card decline, and Reap can show policy automation without putting a large language model in the authorization path. |
Why this example matters: it shows the product boundary. The policy engine is deterministic and replayable; the operator experience is still human-ratified.
Worked example: Policy enforcement.
2. A Duplicate Contractor Invoice Is Held
Live row: Quang Nguyen Engineering bills BILL-25807 and BILL-11541, both Vietnamese dong 107,594,937, four days apart.
| Lens | What happens |
|---|---|
| User perspective | The accounts-payable row escalates to the controller: "Possible duplicate invoice." The user sees the prior bill identifier and date, then confirms whether this is a resend or a real second invoice. |
| Backend path | The ap-agent skill reads bill events from events, compares vendor, amount, currency, and timing, detects the matching prior bill inside a seven-day window, and writes an escalate decision. The payload intentionally leaves paymentDate blank so nothing can move until review. |
| Reap impact | This is a direct Reap Pay trust feature. Reap can prevent duplicate outbound payments before they become recall work, while still giving finance teams an auditable path to approve if the second bill is legitimate. |
The important detail is not the warning text. It is the action boundary: duplicate detection turns into an escalation, not a scheduled payment.
3. A Vendor Bank Account Change Requires Controller Review
Live row: Halborn invoice BILL-87651, United States dollar 18,986.00, new Automated Clearing House account WELLS-****9982.
| Lens | What happens |
|---|---|
| User perspective | The controller sees a high-risk accounts-payable hold: Halborn has two prior bills paid to Automated Clearing House account CHASE-****4521, but the new invoice asks for WELLS-****9982. The row tells the user to verify through a known channel before scheduling. |
| Backend path | The agent checks prior bill history for the same vendor, counts the known bank account occurrences, compares the new account, and emits escalate(controller) with reason: "bank_account_changed". The evidence array stores the new account, known account, and prior count. |
| Reap impact | This is the kind of control Reap can own because it sees payment rails, vendor history, and settlement timing together. It turns Reap Pay from a rail into a fraud-aware finance workflow. |
This example is especially useful for reviewers because it shows that the agent refuses to optimize when the risk gate fires.
Worked example: Accounts Payable.
4. An Auto-Tagging Refusal Protects the Books
Live row: Anthropic card authorization, United States dollar 266.03, event 5e015729-dd15-413c-99ef-bbb1d8802d61.
| Lens | What happens |
|---|---|
| User perspective | The reviewer sees that the agent refused to auto-code the transaction. It names the ambiguity, shows candidate accounts, and asks for a receipt or purchase order instead of guessing. |
| Backend path | The auto-tagging demo row reads vendor memory and chart-of-accounts hints, but the confidence path falls into refuse(ambiguous_match). The decision row records the model or seed version, chart-of-accounts version, evidence, candidate general-ledger codes, and rationale. |
| Reap impact | This is how Reap avoids corrupting a customer's books. A delayed entry is acceptable; a confidently wrong ledger entry is expensive to unwind. Refusals are product behavior, not errors. |
In the real model path, the same row would call OpenRouter through the Vercel Artificial Intelligence Software Development Kit and validate the output with Zod before writing the decision.
Worked example: Auto-tagging.
5. The Daily Pulse Turns Rows Into a Morning Brief
Live row: scheduled_pulse event for 2026-05-08 to 2026-05-15, decision c89e909c-354c-4862-b7b1-35104aa0ab38.
| Lens | What happens |
|---|---|
| User perspective | The chief financial officer opens /brief and sees three ranked actions: keep low-discount bills on schedule, avoid releasing Hong Kong dollar → Indonesian rupiah payouts on Sunday, and keep the scheduled accounts-payable run unchanged because the cash floor holds. |
| Backend path | pnpm pulse writes a scheduled_pulse event. The daily-pulse skill loads recent events, decisions, bills, balances, corridor spreads, and seeded receivables. It computes the cash band, corridor risk, leak signals, and scenario math deterministically, then writes one auditable suggest decision. |
| Reap impact | This is the proactive product layer. Reap already sits across Card, Pay, Direct, and Optimize. The pulse shows how those rails can speak first: not just "here is a dashboard," but "here is what finance should do this week." |
Concrete numbers from the pulse:
| Signal | Value |
|---|---|
| 90th-percentile downside runway | 43 days |
| 90th-percentile cash trough | $2.55 million |
| Working-capital floor | $271,739 |
| Hong Kong dollar → Indonesian rupiah spread drift | 44 basis points above benchmark |
| Indonesian rupiah Reap Pay shortfall | 222,000,000 Indonesian rupiah |
| Halborn concentration | 76% of window spend |
The pulse is still just another decision row. That is the point: proactive does not mean un-auditable.
Worked example: Daily Pulse.
What The Examples Prove
| Requirement | Evidence in the examples |
|---|---|
| User perspective | Queue rows, holds, refusals, and /brief actions are written in the language a controller or chief financial officer would see. |
| Backend behavior | Every example names the event kind, skill, decision outcome, evidence, and the code path that writes the decision log. |
| Reap-specific value | Each example uses Reap-shaped data: Card authorizations, Pay corridors, Direct foreign exchange, Optimize funding, receipt capture, and cross-border vendor payments. |
| Honesty about "live" | The examples are live from the local deterministic dataset, not real customer data. The docs say where the live production adapter would replace the seed. |