Skip to content
All work

Case study 01 / 06

FundReachr

Fundraising · SaaS

An AI investor-outreach SaaS, built and shipped end to end

  • Data engineering
  • Software engineering
  • Cloud & infrastructure
fundreachr.com
platform.fundreachr.comDemo data
AI-written investor email in the FundReachr campaign workspace

Key figures

Investor data synced into the app
Daily
Canonical record per investor
1
Sectors in the investor taxonomy
43
Languages for AI-written messages
11

The brief

  • The challenge

    Take a fundraising-automation idea to a live product with no codebase, no team and no infrastructure, for a promise that depends on an investor database that is curated, enriched and always fresh.

  • What we built

    The whole platform: an investor-data engine that collects, classifies, enriches and de-duplicates investors into BigQuery; a Flask API with Auth0, Stripe credit billing and AI message generation; email-delivery workers; four React apps and a browser extension, running on Google Cloud with Postgres on Neon.

  • Outcome

    A live SaaS on Google Cloud whose billing, authentication and outreach were re-engineered as the product found its model.

Related services: Full-stack developmentData collection and analysis

Expertise

What it took.

  • Data engineering

    • An event-driven investor-data pipeline on Cloud Tasks: collect → LLM classification → multi-provider enrichment → taxonomy mapping, landing in a layered BigQuery warehouse.
    • Identity resolution that gives each investor one canonical ID whichever source found them, and caches (30-day search, 90-day enrichment, permanent LLM answers) so paid lookups and LLM calls are not repeated within their window.
    • A daily BigQuery-to-Postgres sync behind investor search built on JSONB and JSONPath, where free-text cheque sizes are parsed inside SQL.
  • Software engineering

    • A unit-tested Flask API with Auth0 sign-in behind a role-and-ownership authorization layer.
    • Stripe credit packs with idempotent webhooks, a wallet and an auditable credit ledger; discount codes mirrored as Stripe coupons.
    • Four React 19 apps (customer platform, admin back office, internal CRM, marketing site) and a Manifest V3 extension that fills investors' web forms.
  • Cloud & infrastructure

    • Cloud Run services and jobs, Cloud Functions, Cloud Tasks and Cloud Scheduler, with OIDC tokens on the scheduled and queued calls into the private, IAM-only workers.
    • Cloud Build pipelines for every deployable service (Artifact Registry, Secret Manager), with dev → staging → main promotion on the core API, customer app and outreach workers.
    • Queue-based worker pools that claim work with SKIP LOCKED and recover from crashes, so campaigns of any size never block the API.

Project 01

Customer platform

React 19 · Flask API · Cloud Run

Where founders define an audience, see the reach and credit cost before anything is generated, review every AI-written message per channel, send from their own Brevo account and follow delivery, opens and clicks.

Goal
Package FundReachr's investor database and AI writing as a self-serve, pay-per-use product.
Highlights
  • Three-step campaign wizard with autosaved drafts and live reach and cost estimates over the investor database
  • Per-message control: edit or regenerate any message, and send emails one by one or in bulk
  • Stripe credit packs, discount codes, receipts and a credit ledger
  • Analytics driven by Brevo webhooks through each message's lifecycle
Stack
  • React 19
  • Flask
  • PostgreSQL
  • Auth0
  • Stripe
  • Brevo
platform.fundreachr.comDemo data
AI-written investor email in the FundReachr campaign workspace
(full size, opens in a new tab)
Every investor gets a tailored email that the founder can preview, edit, regenerate or send, with delivery, open and click tracking.
platform.fundreachr.comDemo data
Campaign launch review with estimated reach and credit cost
(full size, opens in a new tab)
Launch review: reach and credit cost estimated against the investor database before a single message is generated.
platform.fundreachr.comDemo data
FundReachr analytics with credit and email KPIs and a credit balance chart
(full size, opens in a new tab)
Founder analytics built on the credit ledger and email engagement events.
platform.fundreachr.comDemo data
Campaign wizard audience step with investor filters
(full size, opens in a new tab)
Audience targeting that mirrors the investor data model: investor type, stage, ticket size and industry.
platform.fundreachr.comDemo data
Grid of fundraising campaigns with progress bars
(full size, opens in a new tab)
Every campaign's lifecycle at a glance, from draft and AI generation to sending and completion.

Project 02

Investor-data engine

Python · Cloud Run · Cloud Tasks · BigQuery

Builds and refreshes the database founders search. Source adapters collect investor and fund profiles from web search, investor lists, public registries, directories, VC websites and file drops; an LLM screens web-search results and file drops so only real investors are kept, and extracts their thesis; contact details are enriched; duplicates merge into one canonical record; everything maps to a fixed taxonomy.

Goal
Keep a curated, de-duplicated investor database fresh without manual list-building, with paid lookups under control.
Highlights
  • Event chain on Cloud Tasks: collect → classify → enrich → map
  • 43 sectors, 9 funding stages and structured geographies
  • Caching tiers for search, enrichment and LLM answers
  • A Playwright crawler that collected pitch forms from VC websites and mapped their fields to the founder's data with an LLM
Stack
  • Python
  • Flask
  • BigQuery
  • Datastore
  • Cloud Tasks
  • OpenAI
  • Gemini
  • Playwright
Diagram of the FundReachr investor-data pipeline
(full size, opens in a new tab)
The investor-data engine: scheduled collection, LLM classification, enrichment and identity resolution into BigQuery, synced daily into the app.

Project 03

Outreach engine

Cloud Functions · Cloud Tasks · OpenAI · Brevo

Writes every campaign message in parallel and delivers the emails. Generator workers ask OpenAI for an email or LinkedIn note tailored to each investor's thesis and the founder's pitch; sender workers deliver emails through the founder's own Brevo account, with credit checks and an optional pitch-deck attachment.

Goal
Personalised outreach at scale that survives crashes, pauses when credits run out and never lets two workers send the same message.
Highlights
  • Postgres as a work queue: SKIP LOCKED claims, stale-work recovery, row-locked completion
  • Per-platform, per-language choice between AI generation and templates
  • A browser extension that fills investors' web forms with the AI-written values
Stack
  • Python
  • Cloud Functions
  • Cloud Tasks
  • OpenAI
  • Brevo
  • PostgreSQL
Diagram of the FundReachr outreach engine
(full size, opens in a new tab)
How a campaign flows from the founder's launch to generated, sent and tracked messages.
Form Filler extensionDemo data
Browser extension auto-filling a VC pitch form
(full size, opens in a new tab)
The Form Filler extension completing a fictional fund's pitch form with the AI-written values, debug overlay on.

Project 04

Back office & internal CRM

React 19 · Flask · Cloud Run Jobs

An admin suite to run the SaaS without touching the database (users, credits, packs, Stripe-backed discount codes and review queues for user-proposed corrections to investor records), plus the CRM FundReachr uses to sell itself, sending FR/EN sequences in quota-sized daily batches.

Goal
Operate, support and grow the product with in-house tools instead of manual database work.
Highlights
  • Field-by-field review of crowd-sourced corrections before they reach the investor database
  • Credit grants and deductions written to the ledger
  • Cloud Tasks → Cloud Run Job batch sending within the email provider's daily quota
  • In-app documentation with Mermaid diagrams of the campaign lifecycle and data model
Stack
  • React 19
  • Flask
  • Alembic
  • Cloud Run Jobs
  • Cloud Tasks
  • Mermaid
Internal CRMDemo data
Internal CRM campaign page with scheduled sequences
(full size, opens in a new tab)
Internal CRM: a sequence scheduled for automated daily sending, every step tracked per founder.
Admin back officeDemo data
Admin review of proposed changes to an investor record
(full size, opens in a new tab)
Admin back office: a user-proposed correction to an investor record, reviewed field by field before it is applied.
Admin back officeDemo data
Admin dashboard with KPI cards and status breakdowns
(full size, opens in a new tab)
Operator dashboard: users, campaigns and pending data reviews at a glance.
Internal CRMDemo data
Internal CRM prospect pipeline table
(full size, opens in a new tab)
Prospect pipeline with stage counts, sequence progress, opens and appointments.
Admin back officeDemo data
Admin user detail page with credit wallet
(full size, opens in a new tab)
Customer account management: access, credit grants written to the ledger, and the active pack.
Internal CRMDemo data
Internal CRM help page with an entity-relationship diagram and a status chart
(full size, opens in a new tab)
Documentation shipped inside the CRM: the data model as a Mermaid diagram, above a live chart of messages by status.

Project 05

Marketing site

React · three.js · Cloud Run

fundreachr.com: a WebGL hero, a three.js visual of the investor network and pack prices read live from the product catalog, plus the scripted Playwright pipeline that records the product demo video.

Goal
Turn founders into sign-ups, with real product footage and pack prices read from the live catalog.
Highlights
  • Custom three.js network with shader-driven connections
  • Pricing rendered from the backend catalog, with a resilient fallback
  • SEO meta on every page, with JSON-LD structured data on the home and FAQ pages
Stack
  • React
  • three.js
  • Tailwind CSS
  • Cloud Run
  • Playwright
fundreachr.com
FundReachr marketing site hero
(full size, opens in a new tab)
fundreachr.com (FundReachr's own copy): a WebGL starfield behind the headline and calls to action.
fundreachr.com
Three.js investor network section of the marketing site
(full size, opens in a new tab)
A custom three.js visual of the investor network, with shader-drawn connections (marketing copy by FundReachr).
fundreachr.com
Credit pack pricing section
(full size, opens in a new tab)
Pack prices and credits read from the same product catalog checkout uses, with a built-in fallback if the API is down.
Beta landing
FundReachr beta landing page
(full size, opens in a new tab)
Where it started: the beta landing, launched in October 2025 to recruit the first founders.

Your project next.