← Work

Flagship system

Renovly

Three apps on one Postgres. Marketing acquires. The app runs the contractor business. Admin turns footprint into decisions. The depth that shouldn't be possible for a solo builder is the point.

Problem

A contractor SaaS dies if acquisition, product, and ops are three disconnected tools. Vanity analytics cannot steer spend.

What was built

One Supabase project shared across marketing site, multi-tenant app (RLS), and a separate Next.js admin console with service-role access, live journey capture, funnel views, and an AI Growth Analyst on cron.

Who used it

Contractor operators on renovly.ca — waitlist and free tools on marketing, org seats in app, owner/ops in admin.

Measurable results

Surface split
Marketing + App + Admin
Shared truth
One Postgres / Supabase
Admin capture
Live journeys, funnel, CAC tracking in-product
Growth loop
AI Growth Analyst every 3h

The constraint

A contractor SaaS dies if acquisition, product, and ops are three disconnected tools. Vanity analytics cannot steer spend. An afterthought /admin page cannot moderate lounge, reset passwords, watch live journeys, and run growth analysis on the same truth.

The decision

Share one Supabase project. Marketing writes waitlist and tool sessions. App owns multi-tenant orgs with RLS. Admin is a separate Next.js console with service-role only (server-only import), read-mostly views, audited writes, and a capture plane shared by site and app.

Architecture evidence

  • Waitlist scoring bands + five free tools + footprint tracker on renovly.ca
  • App: org model, module catalog from goals, Stripe billing, Zernio white-label, OpenRouter, E2B
  • Admin: analytics_sessions/events, live 4s poll, visitor journeys, rage/dead clicks, funnel, CAC tracking, AI Growth Analyst every 3h
  • Owner GPT toolkit on the same live APIs so growth work can leave the UI without leaving the data plane

What I'd do differently

I would ship the admin allowlist (Supabase Auth + roles) before the shared-password MVP matured, and preregister the activation metrics as a public contract the Growth Analyst is scored against.

Next.jsSupabaseStripeOpenRouterFootprint analyticsVercel Cron

Related dossier entries: Renovly Marketing, Renovly App, Renovly Admin.

Back to work