Skip to content

Repository files navigation

Aurum

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.

Current capabilities

  • 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

Roadmap

Spend & Oversight Module — live

The current release delivers the core spend analysis and fraud oversight workflow: transaction flagging, receipt matching, disposition review, and reporting with full audit trails.

AI Document Processing — next

Auto-extract and normalize data from bank statements, K-1s, capital call notices, and other financial documents to eliminate manual data entry.

Natural Language Analytics — planned

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?"

Smart Alerts — planned

Proactive notifications for unusual transactions, portfolio rebalancing opportunities, and tax-loss harvesting windows.

Report Generation — planned

On-demand narrative reports from live data. "Create Q4 performance summary for the family" with automatic chart and table generation.

Meeting Prep Assistant — planned

Automatically compile relevant holdings, recent activity, and open items before investment committee or client meetings.

Advanced Capabilities — future

  • Predictive cash flow modeling
  • Investment opportunity matching
  • Risk scenario analysis
  • Automated compliance monitoring

Tech Stack

  • Next.js 15 (App Router)
  • React 19
  • TypeScript
  • Prisma
  • NextAuth (credentials provider)
  • SQLite (local default)

Prerequisites

  • Node.js 22+
  • npm 10+

Getting Started

  1. Install dependencies:
npm install
  1. Configure environment:
copy .env.local.example .env.local
  1. Generate Prisma client and apply migrations:
npm run prisma:generate
npm run prisma:migrate -- --name init
  1. Seed local data:
npm run prisma:seed
  1. Run the app:
npm run dev

Default URL: http://localhost:3000

Seeded Login Accounts

After running npm run prisma:seed, three dev accounts are created:

  • reviewer@example.com
  • manager@example.com
  • admin@example.com

See prisma/seed.ts for details.

Environment Variables

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"

Available Scripts

  • npm run dev - start local dev server
  • npm run build - production build
  • npm run start - run production server
  • npm run lint - lint checks
  • npm run prisma:generate - generate Prisma client
  • npm run prisma:migrate - apply Prisma migrations
  • npm run prisma:seed - seed database

Project Structure

app/
  (auth)/login/
  (portal)/
    dashboard/
    flags/
    receipts/
    reports/
    admin/
  api/
components/
lib/
prisma/
types/
docs/

Architecture Diagram

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
Loading

Data Model Diagram

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
Loading

Database Objects

  • 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.

How Objects Fit Together

  • Transaction is the central object.
  • Transaction -> Flag supports investigation queueing.
  • Transaction -> Match <- Receipt supports receipt reconciliation.
  • Flag -> FlagReview and Match -> MatchReview capture immutable decision history.
  • User is linked to all authored reviews/notes and optional match review ownership.
  • Note supports parent/child replies for simple discussion threads.

Main Routes

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

Roles and Access

  • reviewer: queues, review actions, no reports/admin
  • manager: reviewer access + reports
  • admin: manager access + user administration

Build and Run (Production)

npm run build
npm run start

Notes

  • This project is under active development.
  • Local DB defaults to SQLite for ease of setup. To use Postgres, update prisma/schema.prisma datasource provider and DATABASE_URL.
  • See docs/TECH_SPEC.md for detailed MVP scope and architecture.

License

MIT

About

AI-powered family office platform for spend analysis and fraud oversight

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages