Green Loom / Retail catalog
The product stayed the same.
Everything around it changed.
An expired lab certificate should block a store listing without forcing the operator to rebuild the product.
As co-founder, I separated product identity, store offers, stock, and lab evidence so operators could update the fact that changed.

- My contribution
- Co-founder; catalog model, operator workflows, wireframes, and schema direction
- Design focus
- Retail catalog, evidence review, store publication, and stock updates
- Current stage
- Catalog controls complete; wider application in development; operator testing next
Block the listing.
Keep the product.
Early catalog concepts combined product content, store prices, quantities, and lab evidence. Potency appeared editable even though it came from a lab result. Reviewing the workflow and wireframes exposed facts with different sources and lifecycles.
The historical Georgia consumable-hemp launch scope supplied product-form, testing-evidence, and labeling constraints for these publication checks.
I considered keeping certificate fields on the product. Instead, I gave lab evidence its own Lab Result record and validity period. When evidence expires, the publication check blocks the affected store listing and names what needs attention. The product’s description and packages remain intact.
That split adds records and links to maintain. It also gives recovery a clear target: review replacement evidence, link it to the applicable product or variant, and check the listing again. The operator fixes the changed fact without rebuilding the product.

Evidence changes; identity remains
- Evidence linked
A current Lab Result supports the listing.
- Evidence expires
The publication check explains the blocker.
- Product retained
Identity, description, and packages remain intact.
- Evidence replaced
Review and link a replacement, then check the listing again.
Give each change
an explicit home.
I separated five records. Product holds shared identity and content. Variant describes a sellable package. Listing is a store’s offer; Inventory tracks stock at that store. Lab Result supplies testing evidence for the applicable product or variant.
The certificate-capture flow follows the same boundary: capture its source, review extracted results, link its coverage, derive lab-sourced values, and explain publication blockers. Potency stays traceable to the result that supplied it.

Read the stock change without zooming
Target
Gummies · 10-pack · Back room · Sample store
Quantity
8 expected on hand + 2 counted = 10 resulting on hand
Review
Cycle count. Confirm the target and resulting quantity before committing.
Explore a sample catalog. Update the stock.
Choose a product, open Variants, and adjust stock at a location while keeping its product identity and lab evidence separate.
Sample stock demonstration. COA import and publication checks are separate catalog workflows. Changes stay in this example; use reset to start again. The wireframes above provide a static view of the record boundaries.
Explore the five-record model

Guide the first publication.
Speed up the next update.
We compared browsing by record type, a guided launchpad, and a queue of work spanning the catalog. I chose guided setup for first publication, with direct catalog and inventory workspaces for returning operators.
A record-first structure makes the model visible, but asks a new operator to know where to start. Guided setup provides that sequence; direct workspaces avoid making a returning operator repeat it. Both paths use the same records.
See the guided and direct workspaces

Exchange data.
Do not dictate the workspace.
Research into standards and vendor formats did not yield a complete product-data contract for this catalog. We developed and published the versioned Cannabis Product Schema, with a neutral core and a separate Georgia hemp profile.
The application’s Variant and the schema’s Package serve related but different jobs. Listing and Inventory organize store operations, while the schema also defines Label and Party documents. I kept the exchange contract separate from the operator’s work rather than forcing the interface to mirror an import file.
See the exchange model

Current status
Catalog controls complete.
The application keeps growing.
The catalog flow includes working COA import and automatic publication blocks for missing or expired evidence. The project also produced an approved wireframe baseline and a published schema.
Order management and the storefront remain in development. Next, I’ll test whether operators can resolve an evidence blocker and change stock while keeping track of the record being edited.
What I took forward
The most useful boundary was the one that let an operator change a fact without rebuilding everything around it.