diff --git a/docs/PRODUCT.md b/docs/PRODUCT.md index d7926ed..d6d0077 100644 --- a/docs/PRODUCT.md +++ b/docs/PRODUCT.md @@ -1,45 +1,33 @@ # Product -## Problem +Each slab is one unit and one listing. -This inventory is not sunglasses. There are no size/color variations of one SKU. Every slab is a unique unit and a unique listing: unique photos, categorization, title, short title, description, price, and tags. +A listing is complete when it has: -Shooting photos is tedious. The work that makes the business run starts after the photos exist: produce a listing a buyer can find, filter, and want on the product page. - -## What "done" means - -A slab is ready to create on WooCommerce when all of this is present: - -- One or more inventory photos (uniform appearance on the site) +- Inventory photo(s), uniform 3:4 transparent PNG - SKU, length, thickness, price - Species, wood category, edge type, figure, grade - Thickness band, moisture -- At least one `fig-*` tag +- One or more `fig-*` tags - Title, short title, description -- `feat-*` tags optional +- Zero or more `feat-*` tags -Species + one figure is not enough. The store taxonomy (categories, attributes, `fig-*` / `feat-*` tags) is the filter system. Copy sits on top of measured facts. +Categories, attributes, and `fig-*` / `feat-*` tags are the store filters. Measured values feed title and description templates. -## Who decides +## Decision rights -| Field | Who | +| Field | Source | |---|---| -| Length, thickness | User types | -| SKU | User types | -| Mask / crop | App proposes, user approves on the photo | -| Widths, sqft, bdft | App computes from the approved reference photo + length/thickness | -| Species, wood category, edge, figure, grade, tags | App may propose; user reviews; all editable | -| Price | App proposes `bdft × species $/bdft`; user may override | -| Title, short title, description | Templates from facts; optional Generate text later; user edits | +| Length, thickness | User | +| SKU | User | +| Mask and crop | App proposal, user approve | +| Widths, sqft, bdft | App, from approved reference photo + length + thickness | +| Species, wood category, edge, figure, grade, tags | App may propose; user may change | +| Price | App proposal `bdft × species $/bdft`; user may replace | +| Title, short title, description | Templates from listing facts; user may edit | -Non-math decisions stay mutable until submit. Math follows `docs/CAPTURE.md`. +## Create -## After Slice 1 - -- Templates always build title / short title / description from facts. LLM prose is optional and never required to publish. -- FastAPI is the only Woo caller. Browser never holds store secrets. -- Practice SKUs `SLAB-UAT-*` create as **draft** even if settings say publish. -- Duplicate SKU stops the create. No update path in this version. -- Vision / Call 1 / Call 2 only after a manual listing path works. Inference off must still produce a complete listing. - -Depth that is no longer live: `docs/archive/CONTENT-WOO.md`, `docs/archive/DATA-MODEL.md`, `docs/archive/PROMPTS.md`. +- FastAPI is the Woo client. Store credentials stay on the server. +- `SLAB-UAT-*` creates as draft. +- Duplicate SKU blocks create.