-
-
npm run nebius:smoke: one real Nemotron turn from the terminal (4.9 s with thinking off; the chat route timed out with it on)
-
Audit timeline: the news check per client (demo label, live-probe count), the policy decision with its rule, and the user's approval
-
Nemotron plans one chase turn: the drawer's model label is read from the server (nebius/nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B)
-
After-final review: the news check per client (Chapter 11 on the demo client) feeds hand-off, settlement and write-off proposals
Inspiration
Invoice chasing is a tone problem as much as a timing problem. The same "final notice" that is right for a client who is simply slow is wrong for one who filed for Chapter 11 yesterday, and pointless for one whose company was just absorbed by a bigger one with a new payables desk. We had an accounts-receivable agent with a written policy and a cited ledger; this hackathon was the push to give it a planner that runs on open weights and a look at the outside world before it escalates.
What it does
Chaser is a seller-side accounts-receivable agent on PayPal with an AG Grid command center. It reconciles payments to invoices (published accuracy on a benchmark), chases overdue invoices on a cadence that reads the payer's history and PayPal's viewed flag, honours a client's promise to pay, assembles dispute evidence, and decides what happens after the final notice (write-off, settlement, hand-off) under a JSON policy that says what the agent may do alone. New for this hackathon: the planner is NVIDIA Nemotron 3 Nano on Nebius Token Factory, and before any final notice, settlement or hand-off the agent runs payer signals, a Tavily news search on the client (last month) classified into distress / change / growth with the articles as evidence, auto-attached to every after-final proposal and written to the audit log per client.
How we built it
- Model: Nebius Token Factory, OpenAI-compatible endpoint,
nvidia/NVIDIA-Nemotron-3-Nano-30B-A3Bthrough@ai-sdk/openai-compatiblein the Vercel AI SDK 7 agent loop (streamText, multi-step tools,toolApprovalfor human-in-the-loop). Nemotron returns its reasoning alongside tool calls; one chase turn is 2 steps and ~27 s on the demo data. - Signals:
src/lib/agent/signals.tscalls Tavily (topic=news,time_range=month, 5 results, 1 credit), classifies by keyword families, and returns evidence + a recommendation the model must weigh, not obey. Without a key it returns a demo set labelledsource: "demo". - Everything about money is deterministic code (matching, cadence, predictions, policy gate); the model picks the next tool and writes the prose. That is why a 30B model behaves.
- PayPal Agent Toolkit on the sandbox; Next.js 16 + React 19 + AG Grid Community; Vercel Hobby; 132 vitest tests including the real agent loop.
Challenges we ran into
Nemotron's reasoning tokens count against max_tokens, so short completions came back empty until we raised the budget; then the hosted chat route (60 s) timed out on a plain chase turn because the model streamed a minute of thinking before its first tool call, and the fix was one chat-template flag (enable_thinking=false, 4.9 s for the same turn) rather than a bigger model; the provider adapter had to surface the exact model id so the UI never claims a model that did not answer; and a news signal must never be mistaken for a fact, so the tool returns evidence links and a recommendation, and the demo path is labelled as a demo in the ledger.
Accomplishments that we're proud of
A planner on open weights running a 14-tool loop with policy gating; a "read the news before you escalate" step that changes the agent's decision on the demo client (Chapter 11 -> hand-off, not a final notice); and a reproducible smoke script (npm run nebius:smoke) that proves a real Nemotron turn in the terminal.
What we learned
Small open models are enough for agentic finance when the numbers are computed and the model only decides and writes. External signals belong in the agent's tool set as evidence, with provenance, not as a prompt fact.
What's next
Nemotron Super for the dispute-evidence drafting step, Tavily finance topic for public companies, and a signal history per client in the grid.
Project existed before the submission period: what changed
Chaser was built in October 2026 for the PayPal AI Hackathon. During the Nebius submission period we (1) made Nemotron on Token Factory the default planner with explicit provider selection and a true model label, (2) added payer signals with Tavily (new tool, auto-attached to after-final proposals, demo fallback), (3) grew the test suite from 119 to 132 and added two smoke scripts that run real Nemotron turns. Commits 6337cd3, 3085c2a, 0d75cef, c18aedc on https://github.com/vigohan95/chaser.
Built With
- ag-grid
- nebius-token-factory
- next.js
- nvidia-nemotron
- paypal
- tavily
- typescript
- vercel
- vercel-ai-sdk
- vitest
Log in or sign up for Devpost to join the conversation.