Inspiration Month-end close is when finance hurts most: PDFs pile into AP, someone wants blind auto-post, and ticket queues only say failed—not why. Controllers need match evidence, fraud and guardrail signals, a recommended action, and segregation of duties that blocks a clerk from clearing a controller item. Policy should learn from overrides instead of staying frozen forever.
We also disliked the “chatbot over a spreadsheet” pattern. CFOs (and CEOs talking to their personal CFO) want Critical / Watch / OK, then a clear recommendation—spoken and on screen—not a wall of jargon.
That led to VERN: you are the CEO; VERN is your personal CFO. Under the hood it is a governed AP judgment system; on the surface it is a voice-and-text partner that remembers how you think.
What it does VERN ships as a monorepo around @vern/core:
Extract → ERP match → confidence route against NetSuite / SAP / Workday / Dynamics stubs Hard guardrails the LLM cannot disable; SoD on approve Exception review desk — risk summary, fraud/guardrail chips, recommended action, policy-learn preview Explain view with tool-call audit evidence Assist chat (same SoD) for “what’s blocking close?” plus personal memory (facts, notes, reminders) and a quiet CEO thinking profile Close checklist / cash / variance drafts and a morning briefing Spoken replies and tool narration use TensorMux when configured; templates still work if the LLM is down.
How we built it Domain-first core. Judgment, scoring, governance, pipeline, close, and personal memory live in packages/vern-core so API, web, worker, and the voice app share one brain
Hard policy + learnable soft policy. HardGuardrailPolicy always runs server-side (CANNOT_BE_DISABLED_BY_LLM). Approvals can nudge soft thresholds (e.g. amount limit, short-pay tolerance) via learnFromHumanDecision; blocked-vendor lists never auto-clear. Every override writes audit events.
Personal CFO UX. Next.js app with mic + TTS, Critical/Watch/OK chips, and tools like briefing, exceptions, invoice explain, cash/close, remember/recall. mergeThinkingProfile quietly adapts to ideation style and decision patterns every 𝑁 N turns.
AO (Agent Orchestrator). For the Syndicate/AO track we planned parallel workers (core-pkg, api-routes, web-cfo, worker-batch) so judges can see multi-session build history, not only a solo Cursor session.
Stack: Node ≥ 20, pnpm monorepo, TypeScript, Fastify API, Next.js UI, JSON stores for demo persistence.
What we learned LLMs are narrators, not controllers. Soft language belongs in Assist; hard SoD and blocked-vendor rules belong in code. Judgment cards beat raw exceptions. Controllers act on risk summary + recommended action + “what approving would change,” not on log lines. Personalization compounds trust. Remembering prefs and thinking style makes the same pipeline feel like your CFO. Multi-agent build needs a shared domain package. Without @vern/core as the contract, AO workers would diverge on types and policy. Challenges we faced Two surfaces, one truth — Voice CEO chat vs. exception desk vs. close tools had to share scoring, SoD, and audit without duplicating rules. SOX-shaped demos without a real ERP — Stubs + seed data had to feel real enough for fraud chips (bank change, duplicates, just-under-threshold) without fake login theater. Policy learn without unsafe drift — Approvals may raise soft limits; they must never clear sanctions-style blocks. LLM reliability — Timeouts and VERN_LLM_REPLY=0 template fallback so a dead API key does not kill the demo. AO + local product — Coordinating session IDs, launch on port 3000, and a tight demo script (pain → run → judgment/SoD → close → assist → AO) under hackathon time pressure. Built with TypeScript · Node · pnpm · Next.js · Fastify · TensorMux · AO (Agent Orchestrator) · Web Speech / neural TTS · JSON persistence for demo stores
What’s next Wire live ERP connectors, harden OCR on real PDFs, expand the audit export for controllers, and keep the voice CFO thin while the judgment engine stays the source of truth.
Built With
- artificial-intelligence
- css
- cursor
- fastify
- github
- html
- javascript
- json
- llm
- next.js
- node.js
- pnpm
- react
- rest-api
- tensormux
- typescript
- zod
Log in or sign up for Devpost to join the conversation.