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.
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:
- Multi-tenant Supabase schema with row-level security so each founder only sees their own data
- Founder-facing reporting form designed for < 5 minutes to fill weekly (compliance is a function of friction)
- Claude API risk-scoring agent running weekly with structured output and confidence levels
- Investor dashboard sorting portfolio companies by AI risk score with rationale per flag
- Weekly digest email summarising the top three risks across the portfolio with links into the dashboard
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