Real estate / fintech

Live client build, in active development

Commercial Real-Estate Developer

One owned portal replacing a stack of SaaS subscriptions: investor management, payments, e-signature, and analytics for a capital raise.

A custom investor and stakeholder portal for a commercial real-estate developer raising capital, built to replace fragmented SaaS with one system they own, running on their own Google Cloud.

Problem

The problem.

A commercial real-estate developer running a multi-lane capital raise (a public crowdfunding campaign and an accredited-investor placement) was stitching the work across separate SaaS tools: one for investor management, another for document signing, another for payments, another for analytics and outreach. Every tool was another subscription, another login, and another integration that didn't quite fit the deal structure.

Approach

How I built it.

  • Build one portal the client owns, on their own Google Cloud, instead of renting overlapping SaaS tools that each cover a slice of the raise.
  • Two roles in one system: a stakeholder dashboard (capital raised, investor pipeline, campaign performance) and an investor experience (browse opportunities, verify accreditation, fund, sign, track a portfolio).
  • Model the deal mechanics off-the-shelf tools could not: a bespoke sponsor-carve distribution waterfall computed live from the deal parameters, the kind of structure generic investor SaaS does not handle.
  • Stand it up on managed surfaces: a React 19 front end on Firebase Hosting, a FastAPI back end on Cloud Run, Firestore for transactional data, Firebase Auth with role custom claims, and Stripe ACH for payments (test mode through the build, live after compliance review).
  • Gate everything behind real auth with role-scoped access, so investors and the internal team each see only what they should. Portfolio and distribution figures shown in the current build are illustrative demo data, not actual raised capital.

Architecture

What's running, and why.

Frontend / app surface

Firebase Hosting
React 19 + TypeScript + Vite + Tailwind front end, deployed to the client-owned project.

Backend / data

Cloud Run (FastAPI)
Python 3.12 API service handling investor, campaign, and distribution logic.
Firestore + BigQuery
Firestore for transactional state; BigQuery for analytics as the platform grows.

Auth + payments

Firebase Auth
Role custom claims (stakeholder, investor) enforce who sees what.
Stripe ACH
Investor funding by ACH. Test mode through the build, live after compliance review.

Outcome

What shipped.

1 portal

Replaces investor management, e-signature, payments, and analytics SaaS with one owned system

2 lanes

A public crowdfunding campaign and an accredited-investor placement in one platform

Live on GCP

React front end on Firebase Hosting, FastAPI back end on Cloud Run, deployed and in active development

Owned, not rented

The client owns the code and runs it in their own cloud, with deal logic SaaS could not model

Stack

  • React 19
  • TypeScript
  • Vite
  • Tailwind
  • FastAPI
  • Python 3.12
  • Cloud Run
  • Firestore
  • BigQuery
  • Firebase Auth
  • Firebase Hosting
  • Stripe ACH

What this proves

Where this ports.

This is the SaaS-replacement thesis outside my own employer: a real outside client paying for software they own instead of renting subscriptions that almost fit. Capital raising, investor relations, payments, and analytics are exactly the kind of glued-together SaaS stack a custom system on your own cloud can replace, with the deal logic built the way the business actually works.

Want the same pattern in your business?

Thirty minutes. Describe what you're working on and I'll tell you if I can ship it.