# 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 | ## Create FastAPI is the Woo client. Store credentials stay on the server. `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. ## Milestones 1. Capture — `docs/CAPTURE.md` (current increment). Ends when the user sees the inventory PNG and measurements. No Woo create. 2. Review — remaining listing fields in the app 3. Create — Woo draft for a practice SKU; then clear the device draft 4. Assist — optional vision and generated copy on a working manual path