Westfold* Innovations · internal demo write-up

The Build My MVP funnel, end to end.

Everything that was designed, written, engineered, wired, and tested for one offer — from the ad click to the booked call to the 24-hour prototype promise. The same machine exists for 16 more offers; this is the flagship.

Live in production 3 hero variants Meta · Google · Reddit ready Audited ×3 + browser E2E

The offer The landing page A/B variants The application funnel Tracking Lead data The ad campaigns Quality & testing To launch

01 · The offer

One call. 24 hours. A working prototype — before any money moves.

The funnel sells a single, sharp deal: book one call, brief us on your app idea, and within 24 hours a working prototype is in your inbox — free. Payment only enters the conversation after the prospect has seen their own idea running. The full MVP then ships in weeks on a fixed quote, with the client owning the code outright.

Structurally this is a classic risk-reversal offer: the prototype replaces the proposal, the guarantee replaces the pitch, and the call is the only door — there is deliberately no email link, no direct calendar link, no contact form anywhere on the page. Every path leads through the application.

24h
call → prototype
$0
until they've seen it
30min
the only ask

02 · The landing page

Anatomy of the page.

Live at westfold-funnels.vercel.app/buildmymvp. The design system is modeled on risebookings.com: near-black ground (#0A0A0A), Archivo 900 headlines with the key phrase underlined in emerald, Hanken Grotesk body, pill CTAs, uppercase tracked-out eyebrows, and cards on hairline borders.

Full desktop landing page Mobile hero

Section by section, top to bottom — each one exists to advance exactly one belief:

03 · A/B variants

Three heroes, statically prerendered.

Ads choose the variant by URL — each is a fully static page (fast, zero flash), canonicalized to the base page, and the variant number follows the visitor all the way into the stored lead and the ad-platform events, so win-rates are measurable end to end.

variantheadlineurl
v1Your app, prototyped in 24 hours./buildmymvp
v2See your MVP before you spend a dollar./buildmymvp/v/2
v3Stop pitching a deck. Start demoing a product./buildmymvp/v/3

04 · The application funnel

Four steps. The only exit is a booked call.

ad click (utm + click-id) → /buildmymvp (or /v/2, /v/3)
        ↓  every CTA on the page
/buildmymvp/start
   step 1  what are you building? — project type + the idea, in their words
   step 2  rough budget + timeline (chips, zero typing)
   step 3  name · email · company · phone  →  lead captured here
   step 4  mandatory booking — Calendly embedded in the page, prefilled
        ↓  fires only on Calendly's real event_scheduled signal
“Your 24-hour clock is set.”  — confirmation with the 3-step what-happens-next

Design decisions that matter: the lead is captured before the booking step, so a prospect who stalls at the calendar is still a lead you can chase. The booking is prefilled with their name and email. The confirmation state only triggers on Calendly’s own event_scheduled message — so the “Schedule” conversion means an actual booked call, not a hopeful click. And there is no skip link, no “or email us instead,” no secondary path anywhere.

05 · Tracking & attribution

Every event, on every platform, deduplicated.

momentmetagooglereddit
Page viewPageView (pixel)GA4 Enhanced MeasurementPageVisit
Offer viewedViewContent + variantview_itemViewContent
Brief submittedLead — pixel and server (Conversions API), deduped by a shared event IDAds conversion + Enhanced Conversions (hashed email)Lead — pixel + CAPI v3, deduped
Call bookedSchedule — pixel + server beacon with match databooking conversionCustom: Schedule

Under the hood: first- and last-touch UTMs and click IDs (fbclid, gclid, rdt_cid) are captured on landing and stored with the lead; Meta’s _fbc cookie is synthesized even when the pixel is blocked; the server-side Conversions API calls carry hashed email/phone/name plus IP and user-agent for match quality; and the same event ID travels through the browser pixel, the server event, and Google’s transaction_id so nothing double-counts. All of it is env-gated — the moment the pixel keys are added, every channel lights up.

06 · Lead data & operations

Where the filled-out information lives.

07 · The ad campaigns

Three channels, scripted, validated, created paused.

Meta (priority 1). One script call creates: campaign WF | buildmymvp | Meta | Leads → two ad sets (Advantage+ broad, and a founder-interest stack resolved live against Meta’s API) → three ads each, with ad #3 automatically pointed at hero variant /v/2 so copy testing starts on day one. Everything arrives paused, optimizing on the pixel Lead event. Sample creative:

Your app, prototyped in 24 hours

“Book one call, tell us your app idea — and within 24 hours you’re looking at a working prototype. Free, before you pay anything. Like it? We build the full MVP in weeks. That’s the whole pitch.”

Google (priority 2). Generated Ads Editor CSVs — importable without a developer token — with two ad groups (mvp development: 8 commercial keywords; build my app idea: 6 intent keywords, each in phrase + exact), a 17-term negative list (jobs, courses, free-seekers…), and a 12-headline responsive search ad (“App Prototype in 24 Hours”, “See Your MVP Before You Pay”, “Prototype First, Pay After”…), all within character limits, verified by an automated validator.

Reddit (priority 3). Campaign script targeting r/startups, r/Entrepreneur, r/SaaS, r/sideproject, r/smallbusiness with plain-spoken promoted posts (“Agencies send proposals. We send a working prototype within 24 hours. $0 upfront.”).

Every URL in every channel carries the same convention — utm_campaign=wf_buildmymvp_{channel}_leads, utm_content={adset}_{ad} — so the admin dashboard and the platform reports reconcile line for line. The creation scripts refuse to run if the landing domain isn’t live, and every object is created paused: nothing can spend by accident.

08 · Quality & testing

Audited three times. Driven end to end in a real browser.

The system behind this funnel went through three adversarial audit rounds (~95 findings found and fixed — from a dead Meta API version to CSV-injection hardening to silent tracking double-counts). The buildmymvp funnel specifically was then driven end-to-end in a real browser: an ad-style URL with click IDs → variant landing → attribution captured → all form steps → the stored lead verified to contain the variant, the exact ad, and every click ID → the embedded booking → the Schedule conversion firing on the real booking signal. Accessibility scans return zero violations on the application page.

09 · What remains to go live

Keys, storage, ignition.

The operational commitment that powers it all: every booked call starts a free 24-hour prototype clock. That promise is the funnel’s engine — capacity should be budgeted per day of booked calls before spend scales.