Skip to content

v0.1 prototype rejected — "AI slop" → full rebuild

Date 2026-04-26
Severity High — entire prototype scrapped, 2.5 hour rebuild
Status Resolved — v1.0.0-rebuild ships the rebuild

Summary

The first 961tech prototype (v0.1.0-prototype tag) was rejected by MASTER on review with the verdict "AI slop." Visual polish, build UX, and depth of catalog were all below acceptable. A full rebuild in the same session shipped v1.0.0-rebuild 2 hours and 20 minutes later with a different design language, a different build paradigm, and 3× the catalog data.

Timeline

  • 2026-04-26 ~02:00 — v0.1 prototype tagged. 554 listings scraped across 3 categories (CPU, GPU, MOTHERBOARD), 67 canonical products, 12.5% match rate, default zinc-cyan Tailwind palette, 2-step wizard build flow.
  • ~02:25 — MASTER reviews. Verdict: AI slop. Specifically:
  • Visual: stock dark-zinc + cyan-accent template, no design language
  • Typography: system fonts only
  • Build flow: 2-step wizard (CPU → MB → done) felt patronising for an audience that builds PCs
  • Categories: only 3 of 8 PC component types
  • Compat checks: 1 rule (CPU↔MB socket)
  • Live build card: empty white space on the right of hero
  • Empty build state: "Step 1 of 2" — nothing inviting
  • ~02:30 — Rebuild kicks off
  • ~04:50v1.0.0-rebuild ready for review

Root cause

The v0.1 prototype optimised for "ship something" over "ship something good." Specific contributing factors:

  1. No design system. Defaulted to Tailwind's stock dark theme (zinc + cyan) — recognisable as the "AI did this in 30 minutes" look. No palette work, no font pairing, no spacing rhythm.
  2. No reference quality bar. Didn't anchor against best-in-class peers (Linear, Stripe, PCPartPicker, Vercel) before designing. Result: design defaults filled the gap.
  3. No domain research on the build UX. Picked a step wizard because it's a common pattern, not because it matches how PC builders work. Didn't validate against PCPartPicker, Newegg's builder, or any real PC-building flow.
  4. Premature scoping. Scraping just 3 categories instead of all 8 meant browse and build pages had nothing to populate. Scoping should have included "enough catalog data for the UI to feel real."
  5. Compat rules trivialised. One rule (CPU↔MB socket) is barely a compat check. Real value requires PSU wattage + GPU clearance at minimum.

What changed in the rebuild

v0.1 (rejected) v1.0 (rebuild)
Visual zinc-950 + cyan-400 default Tailwind Petrol black + cedar green + heat orange custom palette
Typography system fonts Fraunces serif (display) + Switzer sans + JetBrains Mono
Build flow 2-step wizard (CPU → MB → done) All-slots PCPartPicker model (8 slots, pick in any order)
Categories scraped 3 (CPU, GPU, MOTHERBOARD) 8 (+ COOLER, RAM, STORAGE, PSU, CASE)
Listings in DB 554 1,701 (+207%)
Canonical products 67 303 (+352%)
Match rate 12.5% (GPU 0%) 13.5% overall (GPU 40% via AIB matcher)
Product images none 28/30 CPUs, 8/18 GPUs, etc.
Hero text only on left, empty right Animated stagger + Live Build card with floating "Save $94" chip
Empty build state "Step 1 of 2" 3 Quick Start templates + 8 visible slots
Compatibility rules 1 (CPU↔MB socket) 3 (+ PSU wattage, + GPU↔Case clearance)
Footer hardcoded "554 indexed" live DB count
Animations none Framer Motion stagger reveals, hover lifts, pulsing dots

What we kept

  • The data model (Retailer, Product, Listing, ListingPrice, Click) — sound. Just under-populated.
  • The scraper architecture — sound, just needed 5 more category scrapers
  • The Prisma + Next.js stack choice — sound

Lessons

  1. Anchor to a quality bar before designing. Pick 3-4 reference products in adjacent space; design with their level of polish as the floor, not the ceiling.
  2. Reject default templates. If the UI looks like a Tailwind starter, stop. Pick fonts, pick colors, build a real palette. Captured as a feedback memory: see feedback_no_ai_slop_ui reference.
  3. Validate UX patterns against real users in the space. PC builders don't think in steps; they iterate. The all-slots model came from observing PCPartPicker's affordances, not from "what's the simplest thing to build first?". Captured as a feedback memory: see feedback_pc_builder_ux reference.
  4. Scope catalogue depth as part of UI scope. UI without enough data feels broken. If you're scoping "build the build page," include "scrape enough categories to populate the build page."
  5. Compat rules are a credibility signal. One rule says "we ticked a box." Three rules say "we understand the domain." Plan compat rule depth proportional to that signalling weight.

What we deliberately don't fix

These were rough but acceptable in v1.0:

  • Match rate on Cooler/RAM/Storage/PSU is 3-12% — many seeded products show "NOT IN STOCK" because no scraped listing matched. Tracked in #21 for LLM-assisted extraction in M2.
  • Save / Share Build buttons are UI-only (no persistence). Auth.js (#11) is the prerequisite, then #12 save and #13 share land.
  • Cmd+K command palette triggered in nav — not wired up yet. M2 polish.
  • No price history charts — schema is ready, no Recharts component yet. Tracked in #8.
  • No filter sidebar on Browse — sort is in-stock-first only. Tracked in #5 and friends.

References

  • REBUILD-V1.md at the repo root — full diff and commit timeline of the rebuild
  • v0.1.0-prototype git tag — frozen rejected state
  • v1.0.0-rebuild git tag — accepted v1