← Back to Journal
The workshopMarch 7, 2026· 10 min read

Day in the Build: CRO Polish, BIOS Pipeline, and the Middleware Bug That Nearly Froze Our Payouts

A full build day: /start page CRO with 14-product comparison table, a visual BIOS pipeline replacing dead text, Phase 5 debug library, and a middleware fix that unblocked Stripe verification with 3 days to spare.

What Happens When You Polish

Today wasn't a feature day. It was a polish day — the kind of day where you audit pages, fix small things, and suddenly discover a middleware bug that could have frozen your Stripe payouts in 72 hours.

Six deliverables. One near-crisis. Here's the full build log.

1. /start Page CRO Overhaul

The /start page is the gateway for all 6 archetypes — the 6 types of operators who work with eComX. It needed to do three things better: price anchor, prove value, and create urgency.

Price Hints on Archetype Cards

Every archetype card now shows a price range before the user clicks through. No bait-and-switch. The Visionary sees "From $7,500." The Optimizer sees "From $1,497." Transparency is CRO.

14-Product Comparison Table

The comparison table expanded from a handful of products to the full catalog — all 12 Stripe products plus 2 free tools (Engram and Axiom). Each row shows what it costs, what it replaces, and the alternative cost.

eComX · /start Page CRO

What It Costs. What It Replaces.

14 products. Every price transparent. Every alternative documented.

$0
Free Tools2 Products
Engram (context architecture) + Axiom (workflow templates) — open-source, no credit card
$
Self-Service4 Products
DIY BIOS ($497), Environment Setup ($997), Brand Audit ($2,497), Strategy Call ($500/hr)
$$
Done-With-You4 Products
BIOS DWU ($2,997), Performance Review ($1,497), Review Package ($3,497), Agentic Emergence ($4,997)
$$$
Managed Services2 Products
BIOS DFY ($7,500), Ongoing Management ($2,500/mo), Fractional ($7,500/mo)

Social Proof Anchoring

Between the archetype cards and the comparison table: "620% ROI improvement. See the Celtic Knot case study →" One stat. One link. Bridges interest to evidence.

Quiz Escape Hatch

Below the archetype grid: "Not sure which path? Take the quiz →" For users who don't self-select into an archetype. Reduces bounce by offering a lower-commitment action.

Founding Client Urgency

Below the comparison table: "Founding client pricing — 3 managed slots available." Scarcity messaging tied to real inventory.

2. BIOS Pipeline Visual

The /bios page had a "See BIOS in Action" section that showed four platform tabs (Claude, ChatGPT, Gemini, Cursor) — but clicking them did nothing. The before/after text panels were dense and static.

Replaced the entire section with a 5-step interactive visual pipeline:

  1. Environment — Clone, install, configure local workspace
  2. CLIs — Scaffold platform-specific command-line interfaces
  3. Data Warehouse — All brand data flows into Supabase
  4. 33 Specs + SYS Docs — BIOS specifications and system documentation generated
  5. Agent Emergence — AI agents emerge from the BIOS and data warehouse

Each step has a custom SVG icon, a numbered badge, and a description that animates in on click. Desktop renders horizontally with dashed connector arrows. Mobile stacks vertically.

Also fixed the platform list: Cursor → Grok. The note now reads: "Compatible with Claude · ChatGPT · Gemini · Grok."

3. The Pricing Fix Nobody Would Have Caught

The BIOS pricing section had a tier called "DIY Axiom" at $297–497. Three problems:

  1. Wrong name — should be "DIY BIOS" (Axiom is a different product)
  2. Wrong price — should be flat $497 to match the Stripe product
  3. Wrong link — pointed to /axiom instead of /bios

Fixed the tier card and found 3 more references in FAQ copy across both /bios and /start pages. All corrected. The kind of inconsistency that erodes trust if a sharp-eyed visitor notices.

4. Promo Bar Mobile Fix

The promo bar text was line-breaking on mobile, creating an awkward orphan. Added white-space: nowrap, reduced font to 11px under 480px, and added text-overflow: ellipsis as a fallback. Single line on all devices now.

5. Phase 5 Debug Tab — The Complete Build Library

The /debug build library had Phase 5 greyed out with a lock icon — even though all 7 plans were executed and committed. Built a comprehensive Phase5Tab with 9 sections:

  • Context — 10 implementation decisions
  • Research — 6 findings, 6 gotchas, dependency list
  • Gaps — 7 identified (1 critical, 4 moderate, 2 test) — all resolved
  • Plans — 7 plans with commit hashes and component tags
  • Requirements — 27/27 complete
  • UAT — 15 passed, 0 failed, 2 skipped (need live Stripe/DB state)
  • Test Suite — 12 runnable tests that verify Phase 5 deliverables live
  • Test Matrix — 44 test cases across 7 categories (accordion UI)
  • Evidence — live log from test runs

The build library is the complete audit trail. Every decision, every gap found, every test run — traceable from context through verification.

6. The Middleware Bug

The biggest save of the day came from a Stripe compliance check.

Stripe notified us that our business website verification was due in 3 days. If unresolved, payouts would be paused on March 9. When I tried to submit ecom-x.com, Stripe's crawler reported: "This URL couldn't be reached."

The site loads fine in a browser. Stripe's bot couldn't reach it.

The Root Cause

Our Next.js middleware was calling supabase.auth.getUser() on every single request — including public marketing pages. This function makes an external API call to Supabase's auth server to validate the session token:

Request hits eComX → Middleware → External call to Supabase Auth → Wait → Response

For a human browsing the site, the extra 100-300ms is invisible. For Stripe's verification crawler, with strict timeout limits, that external round-trip was enough to cause a timeout.

The Fix

Public marketing pages don't need session refresh. Only /dashboard, /api, and /auth routes do. The middleware now checks the path first:

const AUTH_ROUTES = ["/dashboard", "/api", "/auth"];

export async function middleware(request: NextRequest) {
    const needsAuth = AUTH_ROUTES.some(p => 
        request.nextUrl.pathname.startsWith(p)
    );
    if (!needsAuth) return NextResponse.next();
    return await updateSession(request);
}

Public pages now return instantly. Crawlers get fast responses. Stripe's verification should pass on the next check.

The Lesson

This is why polish days matter. Without the Stripe compliance deadline forcing us to test the site from an external crawler's perspective, this middleware overhead would have gone unnoticed — silently adding latency to every page load for every visitor.

By the Numbers

Metric Value
Commits 6
Files changed ~15
Products in comparison table 14 (12 Stripe + 2 free)
BIOS pipeline steps 5 interactive
Phase 5 debug requirements 27/27
UAT tests passing 15/19 (2 need live credentials)
Test matrix items 44
Stripe deadline remaining 3 days
Middleware latency removed ~100-300ms per public page

What's Next

The Stripe verification needs to pass on the redeployed site. The remaining page audit continues — every page gets the same CRO treatment /start received today. And Phase 6 (tracking, attribution, launch) is on deck.

But today's lesson is clear: polish isn't cosmetic. It's structural. A misnamed pricing tier erodes trust. A slow middleware hides behind fast browsers. A greyed-out debug tab hides completed work. Polish is how you find the things that matter before your users — or your payment processor — find them first.

Want to apply this to your brand?