Back to case studies
Additional ServicesWeb Development

Powerleaf — terpene-grounded cannabis recommendations for retail dispensaries

Client Powerleaf
Duration 3 months
Type Cannabis retail recommendation platform
React (web)Node.js (backend services)AWS EC2 / S3 / LambdaFirebase (realtime + analytics)Terpene + chemical profile matching engineDispensary inventory integration
cannabis-retail-recommendation-system
cannabis-retail-recommendation-system
cannabis-retail-recommendation-system

Constraint

The box they were trapped in

Cannabis customers pick products from strain names and THC percentages, both of which are inconsistent across labs and producers — two products with the same name on the label can have very different terpene profiles. A customer chasing "the one that worked last time" runs into inventory churn that breaks their pattern. Dispensary staff lean on personal knowledge to bridge the gap, which doesn't scale and isn't reproducible across shifts. The client wanted the recommendation grounded in lab data, not marketing taxonomy.

Approach

How we attacked it

A web platform that takes the per-batch terpene and chemical data each product carries from its regulatory lab test, and matches it against the user's stated intent — relaxation, focus, sleep, social — through a recommendation engine that scores molecular fit instead of trusting the strain name. Personal profiles track what each user said worked and what didn't, so future recommendations close the feedback loop. Direct dispensary integration brings live inventory into the match, so a recommendation always maps to a product on the shelf, not an idea. React on the front end, Node.js services on AWS (EC2, S3, Lambda), Firebase for the realtime sync and analytics layer.

Decisions

What we picked, and what we rejected

01

Match on lab-tested terpene + chemical profile, not strain name

Strain names are marketing taxonomy and don't survive across labs and producers — two products with the same name can have very different terpene profiles. The lab tests every cannabis product already comes with carry the actual data; the recommendation engine scores against that. Defensible, reproducible, and works across producers a customer's never heard of.

02

Personal-profile feedback loop over single-shot recommendations

What worked last time matters more than what theoretically should work this time. The platform tracks what each user reported back about a recommendation — landed, didn't, somewhere in between — and feeds that into the next match. Over a few visits the system gets specifically right for the user, not generically right for the category.

03

Live dispensary inventory in the recommendation loop

A perfect recommendation for a product the dispensary doesn't stock is worse than a good recommendation for one they do. Direct integration with the dispensary's inventory system means every match is for a product actually on the shelf when the customer is at the counter.

04

Structured UI, not a chatbot

Cannabis matching is a structured-data problem — terpene profile, stated intent, history, available inventory. A structured UI lets the user adjust intent and see the match shift; a chatbot has to back out of its first guess. The structured form gets the user to a defensible answer faster and lets the dispensary staff use it as a second opinion.

Trade-off

What we didn't build

We did not build this as a generic e-commerce site that happens to sell cannabis. Shopify-style commerce already exists — the product here is the recommendation, not the cart, and adding a third storefront would have helped neither the staff nor the customer pick. We also did not put a chatbot in front of the experience. Cannabis matching is a structured-data problem (terpene profile, intent, history) and a structured UI gets the user to a defensible answer faster than a conversation that has to back out of its first guess.

Outcome

What changed after we shipped

Live in beta with the first dispensary integration at Mother Earth Wellness. Customers and retail staff get terpene-grounded product matches against a stated intent, the inventory the dispensary actually has on the shelf is in the loop, and the personal-history feedback closes the cycle on what worked for that user the next time they walk in.

Talk to us

Have a similar project in mind?

Tell us what you're working on. We'll let you know whether it's a fit.