Shipping the studio funnel in one week
How we built totalventures.io from "marketing landing page" to "lead magnet → paid offer → consulting → partner" in seven sprints, what we cut, and what we wired.

On this page
totalventures.io used to be a parallax mountain hero with two CTAs and no funnel. As of today it is a four-tier offer ladder — free Launch Checklist, $19 Builder’s Playbook bundle, $499 Strategy Session, custom Partner With Us — wired end to end with Stripe, Resend, Cal.com, and Firebase. This is the shipping log.
The order we built things
Editorial home page first. Replaced the parallax hero with a tight tagline (three brands, one operator, AI as the team), a four-card resources strip, and a centered Studio Update signup. No animations, no gradient, no stock photography. The type carries the brand.
/posts blog second. Added the shared blogPost schema to Sanity, built /posts and /posts/[slug], wired a Latest Writing strip on the home page that conditionally renders only when posts exist. The dispatch you are reading is the first one.
Funnel pages third. Three landing pages — Launch Checklist (lead magnet), Builder’s Playbook ($19 paid offer), Strategy Session ($499 booking) — plus a /thank-you page that fires the GA4 purchase event. All four route through the same editorial design system.
Email infrastructure fourth. Four React Email templates — Lead Magnet Welcome, Purchase Confirmation, Abandoned Cart, generic SequenceStepEmail — plus an 11-step drip registry covering lead-magnet nurture, newsletter sequence, post-purchase tips, and consulting follow-up. Render via @react-email/render, send via Resend.
Stripe + GA4 fifth. /api/checkout creates a Stripe Checkout session with ad-hoc price_data (no Stripe products to maintain). /api/stripe/webhook listens for checkout.session.completed and checkout.session.expired — the first sends the purchase email with download links, the second sends the abandoned-cart recovery. GA4 events fire for generate_lead, begin_checkout, and purchase through GTM.
PDFs sixth. Generated 8 PDFs total — the Studio Launch Checklist (12 pages, lead magnet) and the Builder’s Playbook bundle (7 PDFs, ~85 pages). All voice-loaded from platform/brand/voice.md and lint-clean against TV’s banned-words list at generation time.
What we cut
A custom multi-step booking flow with Cal.com slots fetching, custom payment, and an attendee-info form. We have one on Justin’s site; replicating it on TV would have been a half-day of code for a marginal UX win. Cal.com’s embed iframe ships in five minutes and works.
Stripe Products. The Builder’s Playbook is a one-time purchase; Stripe Checkout supports ad-hoc price_data so we never had to create a Stripe Product. One less surface to keep in sync.
Firebase Storage with public ACLs. Uniform-bucket-access enforces signed URLs only, which would have meant rotating the lead-magnet link every seven days. We shipped the PDF as a static asset under /public for v1; the upload script is staged for when we want signed-URL gating.
What is left
Three manual config steps before the funnel actually fires: register the Stripe webhook, create a Cal.com event for the Strategy Session, and pick a drip-sequence trigger (Resend automation versus a cron-based runner like the one Pregnancy Power Hour uses). After that, the next test is a $1 Stripe transaction end to end.
If you want the recipe, the Builder’s Playbook bundle is the seven-PDF version. The free Launch Checklist is the framework version. Both link below.
Builder resources
See the full library →
Playbooks, checklists, and tools from running Total Ventures.
Studio Update
What we're building, in your inbox.
Weekly notes on the brands, the stack, and the loop.

