Business Intelligence Platform.

An angel investor with 12 portfolio companies was getting status updates in a dozen different formats from a dozen different founders. Spreadsheets. PDFs. Loom videos. By the time problems surfaced in the financials, they'd already been brewing for months.

12Portfolio companies tracked
8 weeksBuild to launch
$18KMRR

The problem

Twelve portfolio companies. Twelve different reporting formats. The investor spent hours weekly consolidating updates and still missed obvious risks. Churn ticking up at one company. Burn rate accelerating at another. Cash runway shortening. Invisible until a quarterly review.

The approach

One dashboard. Standardised reporting per portfolio company. An AI layer reading structured data and surfacing risks before they hit financials.

A full-stack web app, not a Notion template. Per-tenant data isolation. Standard reporting fields per tenant. The AI agent reviews rolling data weekly and flags anomalies (metric drift, missed cadence, deteriorating ratios) into the investor dashboard. One mis-classified anomaly at scale corrupts the risk score the investor acts on. AI at this leverage is a precision instrument. The confidence threshold and human review queue are the engineering. Every quarter on a stale reporting stack is a quarter of risk hiding in the wrong column.

Architecture Founder updates (12 tenants) │ ▼ ┌──────────────────────────────┐ │ Standardised reporting form │ ← Next.js + Supabase └──────────────────────────────┘ │ ▼ Time-series store (Supabase / Postgres) │ ▼ ┌──────────────────────────────┐ │ Weekly AI risk pass │ ← Claude API │ - metric drift detection │ │ - cadence anomaly │ │ - cross-portfolio comparison │ └──────────────────────────────┘ │ ▼ Investor dashboard (sorted by risk score, weekly digest)

The build

End-to-end. Database schema, authentication, multi-tenant data model, founder-facing reporting UI, investor-facing dashboard, AI risk scoring loop, weekly digest, alerts. Production deployment on Vercel. Supabase as the data layer.

Highlights:

The outcome

Portfolio risk visible a quarter before it surfaces in financials. Infrastructure survives the load of twelve live tenants without degrading.

Senior consolidation work eliminated. The platform generates $18K MRR through licensing to other investors managing similar portfolios.

Original engagement repaid several times over in the first quarter. Every quarter on the manual process bled senior hours and surfaced risk too late to act. The opportunity cost of staying on consolidated spreadsheets compounded silently.

📈

The structural shift: A custom internal tool became a productised platform because the underlying problem replicates across investors with similar portfolio shapes. Same architecture, repackaged.

Tech stack

Next.js 16, React 19, TypeScript, Tailwind, Supabase (Postgres, auth, RLS), Claude API (risk scoring), Vercel (deployment). Built solo. Claude Code as the engineering surface.

Need a custom internal tool?

The discovery call covers what you need, what exists, and whether a build makes sense versus off-the-shelf.

Book a Discovery Call