Back to Notes

We Stopped Building Product Pages. We Built a Factory Instead.

Generic product pages don't convert niche buyers. So we built a monorepo that produces persona-specific landing pages from a single template — with full-funnel tracking, multiple checkout paths, and 3-day turnaround. Here's the architecture.


The Problem

We sell smart eyewear. Our customers include safety managers buying in bulk for construction crews, golfers who want hands-free calls on the course, runners who hate earbuds, and law enforcement officers who need ANSI-rated tactical comms.

These are completely different people with completely different pain points. But they all land on the same product page.

The result is predictable: they bounce. A safety manager doesn't care about golf. A runner doesn't care about OSHA compliance. The page tries to speak to everyone and connects with no one.

This is the mid-funnel gap. Traffic arrives from ads — targeted, persona-specific ads — and then hits a generic page that throws away all that targeting context. The numbers tell the story:

We needed a system, not a page.

The Hypothesis

Persona-specific experiences — with tailored messaging, social proof from their peers, and ROI calculators for their industry — will deliver 2–3x conversion per segment compared to generic product pages.

The key word is experiences, plural. We don't need one better page. We need the ability to produce many targeted pages, fast, and measure each one independently.

The Solution: Experience Factory

We built a monorepo that works like a factory. There's a single reusable template, and each new persona experience is a standalone Astro 5 project with its own subdomain, its own messaging, and its own tracking.

The structure:

the brand-experiences/
  shared/         # tracking, shopify client, brand config
  template/       # copy to create a new experience
  experiences/
    armor-b2b-safety/   # Safety managers
    reebok-golf/        # Golfers
    reebok-running/     # Runners & cyclists
    ...

The stack is deliberately simple:

Each experience deploys to its own subdomain. armor-safety.the brand.co for safety managers. reebok-golf.the brand.co for golfers. Independent analytics, independent iteration.

What an Experience Contains

The pilot — Armor Safety, targeting EHS directors at construction and manufacturing companies — has 13 components:

Hero, Problem, Solution, Products, ROI Calculator, Lead Form, Cart Drawer, Comparison Table, FAQ, Social Proof, Use Cases, Header, Footer.

The key features that matter:

Three Checkout Paths

Not every buyer converts the same way. Every experience supports three paths:

  1. D2C — Buy Now button → Shopify Checkout. For individuals.
  2. B2B Self-Serve — Bundle packs (e.g., Safety Shield 6-Pack, $584) → Shopify Checkout. For small teams.
  3. Enterprise — Lead form → Slack notification → HubSpot deal → Sales team drafts a custom order. For large teams.

The checkout path adapts based on the experience type. DTC experiences (golf, running) emphasize email capture and Klaviyo flows. B2B experiences (safety, law enforcement) emphasize lead forms and HubSpot routing.

Full-Funnel Tracking

Every pixel fires on every experience. We don't pick and choose. The shared tracking module handles all platforms:

Custom events track engagement depth: scroll milestones (25%, 50%, 75%, 100%), every CTA click, lead form submissions, email subscribes, product views, and checkout initiations. All events fire to every configured platform simultaneously. Scripts auto-skip if placeholder IDs are detected, so the template works out of the box without errors.

Speed

This is where the factory model pays off.

Traditional CMS Experience Factory
Research to live 4–6 weeks 3–5 days
A/B test cycle 2 weeks Hours
New locale variant Weeks 1 day
New persona variant Start over 2–3 days

Change a headline, push to git, Cloudflare auto-deploys, GA4 Realtime confirms the change within minutes. The feedback loop is tight enough to iterate within a single work session.

Localization

Same template, different markets. Copy the experience directory, translate content, swap the Shopify market routing and pixel IDs, deploy to a regional subdomain.

What changes per locale: language, currency display, regulatory references (OSHA vs. EU standards), Shopify store routing, ad pixel IDs, and testimonials. What stays the same: every component, every interaction pattern, every tracking hook.

The Roadmap

Six experiences planned through April 2026:

Experience Persona Type Timeline
Armor B2B Safety Safety/EHS managers B2B Feb ’26
Reebok Golf Golfers DTC Mar ’26
Reebok Running Runners, cyclists DTC Mar ’26
Armor LE Law enforcement DTC Mar ’26
Reebok Commuter Urban commuters DTC Apr ’26
vs Ray-Ban Meta Smart glasses shoppers DTC Apr ’26

Open-Sourcing the Template

We're releasing the template as an open-source project: astro-experience-factory.

What's included:

What's not included: our actual live experiences, pixel IDs, or brand-specific content. The template is the how, not the what. Your ICPs, your copywriting, and your data are what make it convert — the factory just makes it fast.

If you're running an e-commerce brand with multiple buyer personas and you're tired of one-size-fits-all product pages, fork it.

GitHub: astro-experience-factory →

View the full presentation →

Wispr · jabondano · 🦞