# Product requirements SlabUploader creates one WooCommerce listing per wood slab for Whidbey Wood Store. Each slab is one unit and one listing. Photos and metadata are the inventory record. Photographs are taken of the slab on a green or black sheet. That is the capture starting state. ## Complete listing - Inventory photo(s), uniform 3:4 transparent PNG - SKU, length, thickness, price - Species, wood category, edge type, figure, grade - Thickness band, moisture - One or more `fig-*` tags - Title, short title, description - Zero or more `feat-*` tags Store categories, attributes, and `fig-*` / `feat-*` tags are the filters. Measured values feed title and description templates. ## Decision rights | Field | Source | |---|---| | 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 | ## System seams Milestones 1 and 2 run in the browser. No backend and no inference URL. Milestone 1 handoff is the device draft: source photo, approved mask, inventory PNG, length, thickness, widths, sqft, bdft. Milestone 2 extends the draft with the photo batch, calibration choice, per-photo inventory PNGs, and the dimension-overlay calibration copy. Milestone 3 uses FastAPI as the Woo client. Store credentials stay on the server. ## Create Spec: `docs/CREATE.md` (Milestone 3 SoT on this branch). `SLAB-UAT-*` creates as a WooCommerce draft (store status). Duplicate SKU blocks create. A listing can be created with inference off. A device draft in the app is separate from a WooCommerce draft. Woo attributes (synced taxonomy) and the OpenAI-compatible inference Settings dependency are defined in `docs/CREATE.md`. ## Milestones M1 and M2 are shipped inputs. **M3 scope is defined in `docs/CREATE.md` and Ty conversations — not by older splits on `main`.** ### Milestone 1 — Capture Spec: `docs/CAPTURE.md`. Shipped; handoff into Milestone 2. ### Milestone 2 — Photos Spec: `docs/PHOTOS.md`. Shipped on UAT `:10881`. No Woo create. No Complete-listing taxonomy in this milestone. ### Milestone 3 — Create Spec: `docs/CREATE.md`. Current work on branch `m3-ds`. Woo attributes sync via application password, ready-set use of that taxonomy, product create, inference endpoint dependency. Acceptance: see Done when in `docs/CREATE.md`. ### Later work Anything beyond `docs/CREATE.md` (including fuller Assist UX) is out of M3 unless Ty expands scope in chat.