When Hand-Copied Content Drifts

Source-driven content on withamplifier.com

The Trap

Hand-typed content quietly rots away from the truth it describes

withamplifier.com's homepage tells 8 story sections — HERO, PROBLEM, DIFFERENTIATION, PLATFORM, DEMO, BUNDLE, ECOSYSTEM, CTA. The ECOSYSTEM showcase was hand-authored right into the page, so it could drift the moment a real repo moved.

And drift it did — measurably.

The fix commit records it in its own words: 15 of 21 URLs were 404ing

Commit 0afc6ca (Samuel Lee, 2026-02-04) states verbatim: “Previously 15 of 21 URLs were returning 404 errors due to incorrect repo name formats.”

And the 404s weren't even the first crack.

15
of 21 URLs returning 404 in production
21
hardcoded repoUrl entries in app/page.tsx

Two days earlier, the same section showed modules that never existed

Commit 60f00f0 (Alex Lopez, 2026-02-02) replaced “fake community cards with real Forge modules,” its message flagging the made-up modules as “a serious credibility issue for the site.”

This wasn't a typo — it was a pattern. So what caused it?

2026-02-02 · 60f00f0
Fabricated modules that don't exist — “a serious credibility issue”
2026-02-04 · 0afc6ca
Real modules, wrong repo-name formats — 15 of 21 URLs 404

21 cards lived hardcoded inside app/page.tsx, tied to no source

Before the fix, the showcase was 21 repoUrl entries typed straight into the page component — with wrong formats like robotdad/app-transcribe instead of robotdad/amplifier-app-transcribe (missing the amplifier- prefix).

With nothing to check against, drift was inevitable. The fix: give it a source.

HARDCODED · 404
github.com/robotdad/app-transcribe
CORRECT FORMAT
github.com/robotdad/amplifier-app-transcribe

180+ lines of hardcoded cards collapse into one source-of-truth file

Commit 0afc6ca removed 187 lines from app/page.tsx and added data/community-showcase.ts (+273 lines): 25 items in one file, labeled “Single source of truth,” regenerable from MODULES.md.

Content now traces to a file. But how do you stop it drifting again?

// data/community-showcase.ts // Single source of truth for the // ecosystem carousel on withamplifier.com // To regenerate from MODULES.md: // Use the website-content-generation recipe // Last validated: 2026-02-04 repoUrl: "...amplifier-bundle-recipes" // ... 25 items total

A validator HEAD-checks every URL and breaks the build on any 404

The same fix added scripts/validate-showcase.ts and an npm run validate:showcase script. It HTTP HEAD-checks every repoUrl; on any failure it prints “VALIDATION FAILED” and calls process.exit(1).

A broken link now breaks the build — drift can't ship. Did it work?

1
npm run validate:showcase before deploy
2
HTTP HEAD every repoUrl (10s timeout)
3
Any failure → “VALIDATION FAILED” → process.exit(1)

The old URLs still 404 today; the regenerated ones return 200

Re-tested live at research time: 7 of 7 sampled old-format URLs return HTTP 404, while 6 of 6 sampled current data-driven URLs return HTTP 200. The drift is measurable — and it's gone.

That split is the whole point. Now make it the rule everywhere.

7/7
old hand-copied URLs still return 404
6/6
regenerated data-driven URLs return 200

Source-driven content is now doctrine, not a one-off fix

The deck catalog is generated the same way: generate-deck-metadata.js extracts title, description and category straight from the HTML files into lib/deck-data.ts. CONTENT_OPERATIONS.md codifies it — content must be accurate/current and links must resolve.

Make content derive from a source of truth. Don't hand-copy it.

Fix shipped · PR #1 merged 2026-02-04
Showcase: data/community-showcase.ts from MODULES.md
Decks: lib/deck-data.ts from HTML source files
Doctrine: CONTENT_OPERATIONS.md — “Links resolve correctly”
Sources

Research Methodology

Primary source: anderlpz/withamplifier (public, branch main; cloned to /tmp/withamplifier)

Data as of: 2026-02-04 (URLs re-tested live at research time)

Feature status: Implemented & merged (PR #1)

Commands run:

Contributors: Samuel Lee (source-driven fix, PR #1); Alex Lopez (first credibility fix, 60f00f0); anderlpz (repo owner)

Gaps: The website-content-generation recipe is named in a comment but the recipe file was not found in the repo; MODULES.md is referenced but not present in the cloned tree. Live HTTP status can change over time.

More Amplifier Stories