Westfold* Innovations · internal demo write-up
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.
The offer The landing page A/B variants The application funnel Tracking Lead data Follow-up The ad campaigns Quality & testing
01 · The offer
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.
02 · The landing page
Live at buildmymvp.westfoldinnovations.com. The design system is a high-contrast, direct-response dark theme: 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.
Section by section, top to bottom — each one exists to advance exactly one belief:
03 · A/B variants
These aren't headline swaps — each variant is a complete, distinct design system: its own typography, palette, layout language, and signature element, wrapped around the same offer and the same booking funnel. Ads choose the variant by URL, each page is fully static (fast, zero flash), and the variant number follows the visitor into the stored lead and the ad-platform events, so design win-rates are measurable end to end.
| variant | headline | url |
|---|---|---|
| buildmymvp11 | Your app, prototyped in 24 hours. | buildmymvp11.westfoldinnovations.com |
| buildmymvp12 | See your MVP before you spend a dollar. | buildmymvp12.westfoldinnovations.com |
| buildmymvp13 | Stop pitching a deck. Start demoing a product. | buildmymvp13.westfoldinnovations.com |
The main campaign URL buildmymvp.westfoldinnovations.com serves variant 1 (with buildmymvp10 reserved as a spare alias of the same page). Each variant host carries its variant all the way through the application and into the ad-platform events.
04 · The application funnel
ad click (utm + click-id) → buildmymvp.westfoldinnovations.com (or the 12/13 variant hosts)
↓ every CTA on the page
buildmymvp.westfoldinnovations.com/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 · phone (both mandatory) · company → 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-nextDesign 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
| moment | meta | ||
|---|---|---|---|
| Page view | PageView (pixel) | GA4 Enhanced Measurement | PageVisit |
| Offer viewed | ViewContent + variant | view_item | ViewContent |
| Brief submitted | Lead — pixel and server (Conversions API), deduped by a shared event ID | Ads conversion + Enhanced Conversions (hashed email) | Lead — pixel + CAPI v3, deduped |
| Call booked | Schedule — pixel + server beacon with match data | booking conversion | Custom: 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
/admin (basic-auth) shows every lead with per-offer and per-source breakdowns, plus a one-click Excel-safe CSV export.07 · Automated follow-up
The form captures a mandatory email and mandatory phone number on every lead, so the follow-up machine always has both channels — and the appointment carries itself to the call without anyone chasing:
| when | what goes out |
|---|---|
| Instantly on booking | Email + SMS confirmation — call details, calendar invite, and what to have ready |
| 1 day before the call | Email + SMS reminder with a one-tap reschedule link |
| 1 hour before the call | SMS nudge with the meeting link |
| Right after the call | Recap email — what was agreed, and the 24-hour prototype clock confirmed in writing |
| 24 hours after the call | The prototype delivery email — the promise, kept, in their inbox |
| No-show | Automatic recovery sequence — SMS + email with rebooking link |
Every message is tied to the lead record, so the brief, the attribution, the booking, and the full follow-up history live on one timeline per prospect.
08 · The ad campaigns
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 the buildmymvp12 variant host 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.
09 · Quality & testing
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.