A private equity firm was managing LP reporting through email threads and shared spreadsheets — generating constant friction, delayed access, and investor complaints. We built a custom investor portal that replaced the entire workflow.
The firm managed a portfolio of 12 investments across three funds. Every quarter, investor relations meant manually compiling data from multiple sources, formatting it into PDFs, and emailing it to each LP individually — then responding to the follow-up emails asking for corrections, clarifications, or earlier data.
The process had compounding problems at every layer. It was slow: the quarterly report cycle took 8–10 business days of someone's time. It was error-prone: copy-paste from spreadsheets meant numbers were occasionally wrong, which damaged trust and required correction cycles. It was one-directional: LPs couldn't access historical data on-demand; they had to ask and wait.
The firm had looked at off-the-shelf LP portal solutions but found them expensive, over-engineered for their current scale, and requiring data migration they weren't ready to commit to. They needed something purpose-built that worked with their existing data infrastructure.
We built a custom investor portal in React — connected directly to their existing Airtable, Google Sheets, and a PostgreSQL database they'd already set up for portfolio tracking. No data migration required. No new tools to maintain.
Phase 1 — Discovery & Data Mapping (Week 1)Rather than assume we understood the data flow, we spent the first week mapping how data actually moved: where portfolio company data lived, how it got updated, which numbers LPs actually looked at and why. We interviewed the IR team and two LPs. This prevented building the wrong thing — the IR team turned out to care about document distribution more than the fund performance visualization we'd initially planned to lead with.
Phase 2 — Authentication & Access Control (Weeks 2–3)The critical security requirement: each LP must see only their own fund positions, capital account, and document history — nothing else. We implemented magic link authentication via Postmark (no password management, no accounts to maintain). Each authenticated session was scoped to the LP's fund(s) at the API layer before any data was returned.
Phase 3 — Portal Build & Integration (Weeks 3–4)Core portal features delivered:
The backend was minimal: a Node.js API layer that read from Airtable and PostgreSQL, handled document storage in S3, and managed the authentication flow. Total build time was exactly 4 weeks.
LP document access time went from a 2-day average (submit request → wait for email → receive PDF) to under 10 seconds (log in → navigate to documents → download). This was the most-commented-on improvement in post-launch LP conversations.
NPS improved 34 points in the first LP survey after launch. The qualitative feedback was consistent: investors felt more informed and more in control. Several specifically mentioned that they could now check their position before calls without having to email the IR team.
IR email volume dropped to essentially zero for standard reporting. The IR team's quarterly reporting workload went from 8–10 days to approximately 1 day — the time it takes to review and upload documents, after which the portal handles distribution automatically.
"The portal changed the relationship. LPs feel like they're actually in partnership with us, not waiting on us. Before, every document request felt like a chore on both sides. Now they can access everything instantly and we spend that time on actual conversations."
Head of Investor Relations — $280M Private Equity Fund