ADR-0010: Category scope for M1, M2, M3¶
- Status: Proposed
- Date: 2026-04-28
- Deciders: MASTER
- Related: issue #32, ADR-0005, #24 laptops, #25 prebuilts, #28 page design, #29 DB scale, #31 canonical catalog, #33 per-category criteria, Personas §6.2, Retailers §2-§3, Categories reference
Context¶
ADR-0005 locked a two-track use-case model: Builder (UC-9, anchored on PC components with live compat checking) and Casual (UC-13, anchored on single-item brand-first buys — laptops, prebuilts, peripherals). ADR-0005 also stated that "UC-13's catalog (laptops, prebuilts, peripherals) is M3-deferred." That phrasing leaves a gap: it commits the Casual landing surface but does not commit the M2 category roster. Every downstream ticket — #28 page design, #29 DB scale, #31 canonical catalog, #33 per-category criteria — needs to know which categories exist when, otherwise it builds against an open question.
The current state:
Categoryenum inprisma/schema.prismacarries 10 values: the 8 Builder components (CPU, GPU, MOTHERBOARD, RAM, PSU, CASE, COOLER, STORAGE) plus LAPTOP and PREBUILT pre-allocated for M3.prisma/seed.tsseeds only the 8 Builder components. LAPTOP and PREBUILT exist as enum values but no seed Products carry them.- All three currently-scraped retailers (PCAndParts, 961Souq, Macrotronics) carry the Builder 8 plus monitors, peripherals, and laptops; PCAndParts and Macrotronics also carry prebuilts. Coverage is universal across the 8 Builder + monitors, near-universal across peripherals + laptops, partial across prebuilts. See retailers.md §2.
- All H-tier next-wave candidates for #20 (Expert-Zone, CompuOne, Mojitech, Sbeity, Ayoub) carry the Builder 8 plus monitors and peripherals; most carry laptops; some carry prebuilts. See retailers.md §3.
Persona research (personas.md §6.2) gives a per-persona-per-category ranking. Reading across the table:
- 8 Builder components anchor Karim and First-time builder (both primary). Already in scope.
- Monitors anchor Karim (gaming refresh rate) as a build-completion item, and are Layla's acute (severity-3) creator pain on color accuracy (§5.6). Stocked at every audited retailer.
- Peripherals anchor Casual customer with a brand-first ranking and Karim secondarily for performance gear. Stocked at every audited retailer. Personas §6.2 tags peripherals as "v2."
- Laptops anchor Casual customer (acute "forced into builder UX" pain), Layla (Mac-or-Apple-line), Diaspora (gift-shaped purchases), and Office IT (employee-laptop refresh batches). #24 labels them M3.
- Prebuilt PCs anchor Casual customer (brand + price + spec sheet) and Office IT (vendor stability + warranty + standardization). #25 labels them M3.
- Gaming chairs, networking gear, accessories have no primary-persona anchor and weak retailer coverage. Mining hardware is restricted to Gamma's catalog (retailers.md §5) which itself is Skip. Used market is out of scope per ADR-0005 + competitive §4.2.
The decision below applies a single frame to every candidate: persona anchor + retailer coverage + track fit + spec-dictionary cost. It locks the milestone roster. Per-category profiles live in the Categories reference — this ADR is the why; that doc is the what.
Decision¶
M1 — already shipping. The 8 Builder components only. CPU, GPU, MOTHERBOARD, RAM, PSU, CASE, COOLER, STORAGE. No change. Builder track (UC-9). Anchored by Karim + First-time builder. Already seeded; already scraped at all three current retailers; already covered by the compat engine.
M2 — add monitors. Add MONITOR as a new Category enum value and ship a monitors catalog. Monitors are dual-track:
- Builder track — monitors are the natural end-of-build add-on for Karim (refresh rate + resolution at the gaming tier) and a build-completion item for First-time builder. Compat checking is not required — a monitor doesn't constrain other slots — but the all-slots-at-once layout from ADR-0002 accommodates an optional monitor slot cleanly.
- Casual track — monitors are a brand-first single-item buy for Layla (color-accurate WFH / creator monitor — severity-3 acute pain) and Casual customer (WFH peripheral). UC-13 single-item product detail with no compat panel is the right surface here.
Monitors are picked over laptops/prebuilts/peripherals for M2 because:
- Spec dictionary is bounded and low-cost — panel type, resolution, refresh rate, response time, size, color gamut %, ports. ~7-9 dimensions, all numeric or short-enum, no hierarchical taxonomy.
- Retailer coverage is universal across the three current scrapers and all H-tier next-wave picks.
- Persona unlock is the strongest M2 signal not yet served — Layla's acute color-accuracy pain has no current path; monitors close it.
- Cross-track utility maximises ROI — one new category serves Builder completion + the Casual track partially, whereas laptops or peripherals only serve Casual.
M2 also retains the Builder 8 — no Builder category is dropped. M2 is an additive milestone for monitors plus the Builder-side feature work scheduled there (#15 cart aggregator, #22 more compat rules).
M3 — laptops, prebuilts, peripherals. Per ADR-0005's framing of UC-13's deferred catalog and the existing labels on #24 and #25. Peripherals are scoped here to keyboards / mice / headsets specifically — not gaming chairs or accessories, both of which are out of scope below.
Out of scope (v1) — recorded so future tickets don't re-open silently:
- Gaming chairs. No primary-persona anchor. Casual customer mentions chairs in gift-purchase contexts but does not rank them as a primary category. Retailer coverage is thin (PCBuildingLeb's racing-sim section is the strongest stocked surface, and PCBuildingLeb is L-tier per retailers.md §3). Comparison axis is brand + price + ergonomic claim — none of which rewards aggregation.
- Networking gear (routers, switches, NICs). Office IT secondary persona only; no primary-persona acute pain. Office IT's wedge is Quote mode on existing categories, not networking-as-its-own-page. Stocked at CompuOne/Mojitech but secondary in their own catalogs.
- Accessories / cables / adapters. Commodity category; no comparison value. Brand and SKU spread is dominated by no-name imports; matcher cost would dwarf user value.
- Mining-grade hardware. Skip per retailers.md §5 Gamma findings. Gamma's mining-grade ESONIC motherboards are the only mining-specific stock observed across the audit, and Gamma is itself Skip-tier.
- Used market. Out of scope per ADR-0005 + competitive §4.2. Olx LB is the de-facto used-parts surface; integration is a v3+ deferred.
- Phones, POS, security cameras. Not consumer PC parts. Mentioned as candidates in the #32 ticket body for scope clarity. Out per the original spec's phased category roll-out (2026-04-25 aggregator design §3.3).
The persona-derived rule: a category ships only when at least one persona ranks it as primary or strong-secondary AND ≥2 of the 3 currently-scraped retailers carry it. Every M2/M3 placement above clears this bar. Every Out-of-scope item fails one or both halves.
Consequences¶
Positive¶
- #28 page design gets a fixed roster. Builder landing carries 8 components + monitors-as-completion-item; Casual landing carries monitors-as-single-item now and laptops/prebuilts/peripherals when M3 ships.
- #33 per-category criteria gets a clear M2 deliverable. One new spec dictionary (monitors) instead of three (monitors + peripherals + laptops). Bounded scope.
- #29 DB scale and #31 canonical catalog get a known multiplier. ~9 categories at M2 (8 + monitors), ~12 at M3 (+ laptops + prebuilts + peripherals). Predictable growth, no surprise expansion.
- Layla's acute color-accuracy pain gets a path in M2 rather than waiting for M3 alongside laptops. Strongest persona-unlock-per-category-cost ratio in the candidate set.
- ADR-0005 is honoured. Casual track's full catalog (laptops, prebuilts, peripherals) stays M3-deferred; monitors are a cross-track category, not a Casual-track-only ship.
- Out-of-scope decisions are explicit. Gaming chairs / networking / accessories / mining / used / phones each have a recorded rejection reason. Future tickets re-open via a supersession ADR, not by silently expanding category scope.
Negative¶
- Schema migration is implied for M2. A new
MONITORenum value plus seed entries plus per-category typed columns (probably none — monitors fit the existingspecs: Jsonblob shape) is a one-PR cost, but it must be sequenced before M2 catalog work begins. Tracked as a follow-up issue (see References). - Casual track's "primary landing" status from ADR-0005 is partly aspirational at M2. The homepage gives Casual the dominant surface, but the only Casual-anchored category in scope at M2 is monitors. Laptops/prebuilts/peripherals — the persona-acute Casual categories — wait for M3. #28 must design a homepage that reads honestly: the Casual surface exists, but its catalog is shallow until M3.
- Office IT and Diaspora personas are mostly post-M2. Their acute pains (batch quoting, foreign-card payment, delivery routing) are addressed by features, not categories — but the Casual-buyer flows they share with laptops/prebuilts/peripherals are M3-deferred. Acceptable cost; both are secondary personas.
- Peripherals defer also defers Casual-customer brand-first as a fully-served flow. Casual customer is a primary persona whose primary category (peripherals + laptops) is M3. The M2 Casual surface (monitors only) serves Layla, not Casual customer's dominant journey. This is a real cost; partly mitigated by Casual customer's brand-first decision style being applicable to monitors too.
Neutral¶
- The schema enum already pre-allocates LAPTOP and PREBUILT even though seed seeds only the 8 Builder values. M3 enum work is therefore zero-cost; only
MONITOR(M2) and the M3 peripheral subcategories require new enum work. - Spec dimensions for monitors overlap with what Karim already wants on GPU rows (refresh rate, resolution targeting). Some #33 work is shared rather than duplicated.
- #37 i18n is unaffected. ADR-0004 holds across all categories and milestones.
Alternatives considered¶
Alternative A: Ship laptops in M2 instead of monitors¶
Pull #24 forward to M2; defer monitors and peripherals to M3.
Rejected because:
- Spec-dictionary cost is high — laptops carry CPU + RAM + storage + screen + battery + warranty + on-site service + chassis specs. Per-laptop spec extraction is harder than per-monitor extraction (laptops also have variant pricing per RAM/SSD config).
- Compat-engine relevance is zero — laptops have no upstream compat checks; the M1 compat code adds no value to laptop browsing. M2 is otherwise rich in Builder-track work (#15, #22) and laptops would land as a sideband.
- Persona-cost trade is unfavourable — laptops serve four personas (Casual customer, Layla, Diaspora, Office IT) but acute pains for those personas are mostly flow-pain (Casual: forced into builder UX; Office IT: batch quoting; Diaspora: foreign-card payment) which monitors+flows can address without laptops being present. Monitors give Layla's acute color-accuracy pain a path; laptops give nobody an acute pain path that can't wait for M3.
- ADR-0005 explicitly defers laptops + prebuilts + peripherals to M3. Pulling forward without a stronger reason than "monitors fit too" inverts the framing.
Alternative B: Drop prebuilts entirely¶
Make M3 = laptops + peripherals; cut prebuilts permanently.
Rejected because:
- Casual customer ranks prebuilts as a primary category (personas.md §6.2) — brand + price + spec sheet decision style.
- Office IT batch-laptop refresh sometimes substitutes prebuilt desktops for fixed-station roles — direct overlap with their high-LTV use case.
- Retailer coverage is good — PCAndParts, Macrotronics carry prebuilts as primary stock; 961Souq carries them secondarily.
- First-time builder uses prebuilts as the off-ramp when self-build anxiety wins ("Is this a good build for [game]?") — losing prebuilts loses the natural fallback flow.
- #25 is already labelled M3 and persona research justifies it. Cutting requires evidence none of the personas+coverage matrix shows.
Alternative C: Monitors in M3 (don't add anything in M2)¶
Hold M2 to the Builder 8; defer all new categories to M3.
Rejected because:
- Layla's color-accuracy pain has no other path. Severity-3 acute on monitors specifically; not addressable by Builder-flow improvements.
- M2 retailer onboarding (#20) brings 3-5 more retailers that all stock monitors — the data is there to scrape; not indexing it leaves value on the table.
- The Casual track's "primary landing" framing from ADR-0005 becomes increasingly hollow if M2 ships zero new Casual-track categories. Monitors are the cheapest way to make the Casual surface non-empty.
- Spec-dictionary effort is bounded — ~7-9 dimensions, no novel typing. Doesn't displace #15 or #22 on the M2 critical path.
This is the closest-call alternative. If MASTER weights M2 capacity differently — preferring to land #15 cart aggregator + #22 more compat rules cleanly before adding any new category — push monitors to M3 and re-issue this ADR. The Casual track shape doesn't change; only the timing of its first concrete category does.
Alternative D: Add peripherals to M2 alongside monitors¶
Ship monitors + peripherals together at M2.
Rejected (with caveat) because:
- Spec-dictionary cost roughly doubles. Peripherals split into kbd / mice / headsets — three sub-shapes — each with brand-line awareness ("Logitech MX vs G," "Razer DeathAdder vs Basilisk," etc.) that monitors don't need.
- Brand-first navigation as a UI pattern is not yet built — peripherals depend on it more than monitors do (monitors fall back to specs-first comfortably; peripherals don't). Building brand-first nav for one category in M2 commits #28 earlier than ADR-0005's pacing implies.
- Casual customer's primary acute pain ("forced into builder UX") is a flow problem, not a catalog problem. Adding peripherals to M2 doesn't resolve it any faster than adding peripherals to M3 — the Casual landing still ships at M2 either way; only its catalog depth changes.
Caveat: this is the second-closest call. If MASTER decides Casual customer's persona deserves an M2-served path (rather than waiting until M3 alongside laptops/prebuilts), peripherals should be the category to pull forward. Surface as an open question; default to M3.
Alternative E: Add gaming chairs / networking / accessories to M3¶
Treat these as deferred-to-M3 rather than out-of-scope.
Rejected because:
- No primary-persona anchor for any of them. Office IT cares about networking secondarily; Casual customer about gift-purchase chairs incidentally. Deferred-to-M3 implies "we'll ship these eventually" — the persona research doesn't support that.
- Out-of-scope is more honest. Future tickets re-open via supersession ADR if telemetry surfaces demand (anti-persona drift signals in personas.md §5.7 cover the relevant probes).
References¶
- Issue #32 — Foundation: category scope decision — driver
- ADR-0005 — Two parallel use-case tracks — sets the M3-deferral for Casual catalog
- Personas §6.2 per-category buyer criteria — persona-by-category ranking
- Personas §5.6 pain-point matrix — severity scoring per persona per pain
- Retailers §2-§3 — per-retailer category coverage
- Competitive landscape §3 — competitor category roster patterns
- Categories reference — per-category profiles produced alongside this ADR
- Use cases — UC-9 + UC-13 category lists updated alongside this ADR
- Data model —
Categoryenum future-state note updated alongside this ADR - Schema-change follow-up: Adding
MONITORto theCategoryenum is implied by M2 catalog work but is not performed in this ADR. File a separatefeat(schema): add MONITOR Category enum valueissue when M2 catalog work begins. The currentprisma/schema.prismais unchanged by this ADR.