Appearance
Trade-offs & next steps
Here is the honest cut. The prototype proves the agent runtime, decision log, eval harness, and operator surfaces. I am not pretending mocked integrations are production rails.
What is real
RuntimeFour skills share one
FinanceEvent substrate, autonomy gate, refusal contract, and decision log.src/lib/events.ts · src/lib/autonomy.ts · src/lib/decision-log.tsControlsPolicy and accounts-payable money-movement constraints are deterministic. Dual control is enforced server-side for high-value accounts payable.
src/skills/policy-enforcement · src/lib/dual-control.tsLearningOverrides write corrected codings and can supersede vendor rules, so review work turns into future automation.
app/(operator)/queue/[id]/actions.tsPulseThe chief-financial-officer brief is persisted as a decision row. The page reads the latest pulse instead of recomputing on render.
src/skills/daily-pulse · app/(operator)/briefWhat is mocked
adaptersAccounting post
acceptDecision marks execution in the demo. Real Xero/QuickBooks Online/NetSuite writes sit behind the payload boundary.railsPaymentsThe accounts-payable agent recommends schedules and funding rails only. No money movement occurs from this prototype.
dataCustomer eventsSeeded Hong Kong/Singapore/United States card spend, payout, foreign-exchange, receipt, and bill events stand in for live Reap streams.
Trade-offs taken
TypeScript firstKept user interface, server actions, typed schemas, and Vercel Artificial Intelligence Software Development Kit calls in one runtime. Risk: Reap may prefer Python for data-heavy agent work.
SQLite firstFresh-clone demo beats infrastructure realism. Drizzle keeps the Postgres path visible without making Docker part of the interview.
Home-grown evalsSmall but inspectable JavaScript Object Notation Lines harness, plus seam-specific corpora for the policy compiler and accounts-payable optimizer. It proves the scoring loop and can scale once real customer examples exist.
Recommendation-first accounts payableI chose the safer proof: plan, evidence, and approval path instead of fake payment execution.
Next, in order
01
Wire one real ledger adapterStart with Xero behind the existing decision payload. Keep idempotency and execution status unchanged.
02
Replace seeded balances with Reap balance feedsThe treasury cockpit already speaks in Reap Card / Pay / Optimize sleeves. Swap the source, not the surface.
03
Move synchronous skill runs to InngestDurable execution gives retries, scheduling, and replay without rewriting the skill interface.
04
Grow evals from overridesPromote real corrections into per-skill golden sets, then fill the named gaps in
evals/coverage-gaps.json as live adapters and datasets arrive.