About the project:
## Inspiration
Every month, SMB trucking companies generate thousands of corporate card transactions across fuel stops, permits, lodging, and repairs — spread across 20+ states and two countries. Finance managers drown in spreadsheets with no way to understand their own spending. We saw Brim's dataset (4,235 transactions from a real heavy-haul trucking company) and thought: what if a CFO could just ask their data a question and get an answer with a chart?
What it does
ExpenseIQ is an AI-powered expense intelligence platform that turns raw transaction data into actionable insights:
- Talk to Your Data — Ask questions in plain English ("What did we spend on fuel last quarter?") and get interactive charts powered by Cerebras inference
- Policy Compliance Engine — Automatically scans all 4,235 transactions against digitized expense rules, flags 7 violation types, and surfaces repeat offenders
- AI Pre-Approval Workflow — Risk-scores transactions with spend history, department budget status, and one-click approve/deny with AI reasoning
- Expense Reports — Auto-detects trips from geographic transaction patterns (Edmonton → Houston, Edmonton → Alaska) and groups them into reports
- Cross-Border FX Analysis — Calculates real FX losses ($38K+ over 6 months) and shows how stablecoin settlement via USDC could save $30K/year
How we built it
- Next.js 15 with App Router for the frontend
- Cerebras (gpt-oss-120b) for blazing-fast AI chat inference via AI SDK
- Recharts + shadcn/ui for polished data visualizations
- Real data pipeline: Excel → JSON → pre-computed aggregations (monthly spend, category breakdown, employee profiles, policy violations, FX costs, trip detection)
- The AI never sees raw transactions — it receives pre-computed summaries in its system prompt and generates chart JSON that renders as interactive components inline in the chat
Challenges
- AI SDK tool calling bug: The Vercel AI SDK v6 + @ai-sdk/anthropic doesn't properly serialize Zod schemas to JSON Schema for the Anthropic API. We pivoted to a text-based approach where the LLM outputs JSON code blocks that are parsed and rendered client-side as charts — same visual result, different plumbing.
- Zod version hell: Zod 4, Zod 3.25, zod/v3, zod/v4 — navigating the compatibility matrix between AI SDK, Anthropic provider, and Zod was the biggest time sink.
- Solo hackathon: Built entirely in one day by one person with Claude Code orchestrating two parallel AI agents (one for data/AI layer, one for UI).
What we learned
The most valuable insight wasn't technical — it was in the data. This trucking company loses ~$38,000/year to hidden credit card FX markup on cross-border transactions. Stablecoin settlement could recover 80% of that. The AI found it in seconds; a human bookkeeper might never notice.
Built With
- anthropic-claude
- cerebras
- next.js
- node.js
- react
- recharts
- shadcn/ui
- tailwind-css
- typescript
- vercel-ai-sdk
- zod
Log in or sign up for Devpost to join the conversation.