Aurum is an AI-powered family office platform that combines agentic engineering with deep domain expertise to modernize how wealth managers and family offices operate.
The current release delivers the Spend & Oversight Module — transaction flagging, receipt matching, disposition review, and reporting with full audit trails. See the roadmap for what's next.
- Role-based access (
reviewer,manager,admin) - Dashboard KPIs and action queues
- Flag review queue and disposition workflow with audit trail
- Receipt match queue and confirm/reject workflow with audit trail
- Reports endpoints (JSON + CSV)
- Admin user management
The current release delivers the core spend analysis and fraud oversight workflow: transaction flagging, receipt matching, disposition review, and reporting with full audit trails.
Auto-extract and normalize data from bank statements, K-1s, capital call notices, and other financial documents to eliminate manual data entry.
Query portfolio and transaction data in plain English. "Show me IRR on all deals from 2020-2023" or "Which cardholders exceeded their baseline last quarter?"
Proactive notifications for unusual transactions, portfolio rebalancing opportunities, and tax-loss harvesting windows.
On-demand narrative reports from live data. "Create Q4 performance summary for the family" with automatic chart and table generation.
Automatically compile relevant holdings, recent activity, and open items before investment committee or client meetings.
- Predictive cash flow modeling
- Investment opportunity matching
- Risk scenario analysis
- Automated compliance monitoring
- Next.js 15 (App Router)
- React 19
- TypeScript
- Prisma
- NextAuth (credentials provider)
- SQLite (local default)
- Node.js 22+
- npm 10+
- Install dependencies:
npm install- Configure environment:
copy .env.local.example .env.local- Generate Prisma client and apply migrations:
npm run prisma:generate
npm run prisma:migrate -- --name init- Seed local data:
npm run prisma:seed- Run the app:
npm run devDefault URL: http://localhost:3000
After running npm run prisma:seed, three dev accounts are created:
reviewer@example.commanager@example.comadmin@example.com
See prisma/seed.ts for details.
DATABASE_URL
Local default uses SQLite:
DATABASE_URL="file:./dev.db"NEXTAUTH_SECRET
Set to a random secret for local/dev/prod.
NEXTAUTH_URL
Example:
NEXTAUTH_URL="http://localhost:3000"npm run dev- start local dev servernpm run build- production buildnpm run start- run production servernpm run lint- lint checksnpm run prisma:generate- generate Prisma clientnpm run prisma:migrate- apply Prisma migrationsnpm run prisma:seed- seed database
app/
(auth)/login/
(portal)/
dashboard/
flags/
receipts/
reports/
admin/
api/
components/
lib/
prisma/
types/
docs/flowchart LR
U[User Browser] -->|Login + Session Cookies| A[Next.js App Router]
A --> P[Portal Pages]
A --> API[API Routes]
API --> AUTH[NextAuth + AuthZ]
API --> ORM[Prisma Client]
ORM --> DB[(SQLite / Postgres)]
DB --> ORM
ORM --> API
API --> P
erDiagram
USER ||--o{ FLAG_REVIEW : creates
USER ||--o{ MATCH_REVIEW : creates
USER ||--o{ NOTE : creates
USER ||--o{ MATCH : reviews
TRANSACTION ||--o{ FLAG : has
TRANSACTION ||--o{ MATCH : has
TRANSACTION ||--o{ NOTE : has
RECEIPT ||--o{ MATCH : links
FLAG ||--o{ FLAG_REVIEW : audited_by
MATCH ||--o{ MATCH_REVIEW : audited_by
NOTE ||--o{ NOTE : replies_to
User: authenticated application users with role and status.Transaction: normalized card/GL spend transactions and source metadata.Flag: suspicious transaction record with risk score/level and lifecycle status.Receipt: OCR-parsed receipt metadata and extracted values.Match: transaction-to-receipt matching result and review status.FlagReview: audit log for reviewer actions on flags.MatchReview: audit log for reviewer actions on match decisions.Note: threaded investigation comments per transaction.
Transactionis the central object.Transaction -> Flagsupports investigation queueing.Transaction -> Match <- Receiptsupports receipt reconciliation.Flag -> FlagReviewandMatch -> MatchReviewcapture immutable decision history.Useris linked to all authored reviews/notes and optional match review ownership.Notesupports parent/child replies for simple discussion threads.
Pages:
/login/dashboard/flags/flags/:id/receipts/receipts/:id/reports/admin
APIs:
/api/auth/[...nextauth]/api/dashboard/api/flags/api/flags/:id/api/flags/:id/review/api/matches/api/matches/:id/api/matches/:id/confirm/api/notes/api/reports/match-summary/api/reports/unmatched/api/reports/dispositions/api/admin/users/api/admin/users/:id
reviewer: queues, review actions, no reports/adminmanager: reviewer access + reportsadmin: manager access + user administration
npm run build
npm run start- This project is under active development.
- Local DB defaults to SQLite for ease of setup. To use Postgres, update
prisma/schema.prismadatasource provider andDATABASE_URL. - See
docs/TECH_SPEC.mdfor detailed MVP scope and architecture.