Aaron Benjamin

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.

Green Loom catalog concept with sample product identity and store stock states.
Catalog concept · fictional product and store data
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.

Original catalog wireframe showing certificate status, test outcome, variant coverage, and an unresolved public-link check.
Original project wireframe · September 2026 · sample data

Evidence changes; identity remains

  1. Evidence linked

    A current Lab Result supports the listing.

  2. Evidence expires

    The publication check explains the blocker.

  3. Product retained

    Identity, description, and packages remain intact.

  4. Evidence replaced

    Review and link a replacement, then check the listing again.

Evidence lifecycle model

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.

Original stock adjustment wireframe confirming store, variant, stock location, expected quantity, adjustment, reason, and resulting quantity.
Original project wireframe · September 2026 · sample data

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.

Readable transcription · sample data

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.

Open the stock demonstration

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
Product identity connects to a sellable variant and store listing; separate lab evidence supports the variant and inventory tracks stock.
AI-generated catalog-model illustration

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
First publication guides adding a product, reviewing evidence, and checking readiness; repeat stock work finds an item, updates stock, and reviews availability.
AI-generated workflow illustration

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
The schema core contains Product, Package, LabResult, Label, and Party; a separate Georgia profile applies local constraints.
AI-generated exchange-model illustration

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.