Transparency

What we tried. What we changed.

Building in public means sharing the mistakes. Here is our honest record of pivots, course-corrections, and lessons.

2026-05-06

What we tried:

We over-invested in /lead-magnets as a category name.

Why it didn't work:

Users did not understand what "lead magnets" meant. The term is marketer jargon. Customers searched for "guides" and "templates."

What we changed:

Renamed /lead-magnets to /guides across the entire site. Customer-facing language beats industry jargon.

2026-05-06

What we tried:

We bulk-shipped 19 vertical pages without vertical-specific research.

Why it didn't work:

Pages were structurally correct but the pain points were generic. "Product ad fatigue" appeared on 8 different vertical pages. Customers in each vertical have specific problems.

What we changed:

Paused to do vertical-specific research. Rewrote pain points per vertical with industry-specific language and examples.

2026-05-05

What we tried:

We tried Codex for multi-machine dispatch orchestration.

Why it didn't work:

Codex hangs on complex multi-file operations. The interactive model did not fit the dispatch-execute loop.

What we changed:

Switched to Claude Code via dispatch-push.sh. The non-interactive, event-driven model fits our workflow better.

2026-05-05

What we tried:

We optimized for page count over page quality.

Why it didn't work:

400+ pages shipped in a single day. Quality audits found em dashes returning, OG images broken, and visual drift across templates.

What we changed:

Added quality-pass cadence. Every 50 pages, run em dash audit + OG image check + design coherence review before continuing.

2026-05-05

What we tried:

We used 50% commission for the affiliate program.

Why it didn't work:

50% recurring for 12 months is unsustainable at the $19.99 price point. Unit economics do not work.

What we changed:

Reduced to 30% for 12 months. Still generous by industry standards. Sustainable at all tier levels.

2026-05-04

What we tried:

We built Brand DNA extraction with a single extractor.

Why it didn't work:

One-pass extraction missed edge cases. JavaScript-heavy sites returned empty. Color extraction missed hsl/oklch formats.

What we changed:

Split into 8 parallel extractors (tone, audience, palette, products, productImages, testimonials, keywords, visualStyle) with Playwright fallback.

2026-05-03

What we tried:

We generated images at fixed 1024x1024 for all aspect ratios.

Why it didn't work:

FairStack Flux 2 ignored the size parameter and always returned 1024x1024. 9:16 and 16:9 ads shipped as squares.

What we changed:

Switched to aspect_ratio parameter instead of size. Direct probe confirmed FairStack respects aspect_ratio strings.

2026-05-02

What we tried:

We used 4:5 as a standard aspect ratio alongside 1:1 and 9:16.

Why it didn't work:

Founder direction: "We are standardizing. 1:1, 9:16, 16:9. That is it." 4:5 was dropped because it added complexity without unique platform value.

What we changed:

Locked to 3 ratios only. Added normalizeAspectRatio() that maps any non-standard ratio to nearest valid one.

Related: Research · Changelog · Founder story