# Menu Copy Rules

A compliance-first checklist for product descriptions, whether a person or an AI wrote them. From lesson 04-05 of Distru's No Bullshit AI Course. Version 1.0, 2026-09-17. CC0 1.0.

**This is not legal advice.** Advertising rules are set state by state and change. Two examples of the range: California defines a "health-related statement" broadly and prohibits false or misleading advertising, with placement and audience rules in [4 CCR §15040](https://www.law.cornell.edu/regulations/california/4-CCR-15040) and the definitions in Business and Professions Code §26150; Michigan's [R 420.507](https://www.law.cornell.edu/regulations/michigan/Mich-Admin-Code-R-420-507) bars any health-benefit claim in marketing or labeling unless it meets an FDA standard. The FDA and FTC have sent warning letters over disease claims on cannabis-derived products for years ([FDA warning letters](https://www.fda.gov/news-events/public-health-focus/warning-letters-cannabis-derived-products)). Your compliance lead reads your state's rule; this sheet is the pre-filter that keeps most of the bad sentences from ever reaching them.

## The one rule

**Describe the product. Never describe what it does to a person.**

Everything below is that sentence, spelled out.

## Forbidden patterns

Reject any description that contains, or implies, these. The regex column is what `product-data-cleanup.py` uses; edit it to match your state and your compliance lead's word list.

| Pattern | Examples that fail | Regex (case-insensitive) |
|---|---|---|
| Names a condition or symptom | pain, anxiety, insomnia, stress, nausea, inflammation, PTSD, arthritis, depression, seizures, appetite | `\b(pain|anxiety|anxious|insomnia|stress|nausea|inflammation|inflammatory|ptsd|arthritis|depress|seizure|epilep|appetite|migraine|cancer|tumou?r|glaucoma|adhd|chronic)\w*` |
| Says it helps, treats, cures, relieves | helps with, relieves, treats, cures, heals, soothes, eases, alleviates, remedy, medicine, medicinal, therapeutic | `\b(help(s|ing)? (you |with )?|reliev|treat(s|ing|ment)?\b|cur(e|es|ing)\b|heal|sooth|eas(e|es|ing) (your|the)|alleviat|remed|medicin|therapeut)` |
| Promises a feeling or effect | you will feel, guaranteed, melts away, knocks you out, energizes you, calms you, makes you | `\b(you('ll| will) feel|guarantee|melts? (away|stress)|knock(s|ed)? you|energi[sz]e(s|d)? you|calm(s|ed)? you|makes? you)` |
| Sleep and wellness as outcomes | helps you sleep, sleep aid, wellness, healthy, health | `\b(sleep aid|help(s)? you sleep|fall asleep|wellness|healthy|health)\b` |
| Safety or potency superlatives | safe, non-addictive, no side effects, strongest, most potent | `\b(safe(ly|st)?|non-?addictive|no side effects|strongest|most potent)\b` |
| Appeals to minors (most states) | candy, cartoon, kid, toy, gummy bear shapes, school | `\b(candy|cartoon|kids?|children|toy|school)\b` |
| Dosing instructions beyond the label | take two for, dose up, double | `\b(take (one|two|three|\d+) (for|to)|double (the )?dose|dose up)\b` |
| Unverified test numbers | any THC/CBD percentage not copied from the COA | (checked by hand: compare to the COA field, not by regex) |

A hit is a stop, not a suggestion. Rewrite the sentence or drop it.

## Allowed patterns

What the product *is*, from your own data:

- **Form and size**: "1g live resin cartridge", "3.5g jar of hand-trimmed flower", "ten 10mg gummies".
- **Strain, lineage, grower**: "Blue Dream, a Blueberry x Haze cross, grown indoors in Humboldt County by Acme Farms."
- **Flavor and aroma, as taste words only**: "citrus and pine on the nose, sweet on the exhale." Taste is not an effect.
- **Terpene and cannabinoid facts copied from the COA**: "Dominant terpenes: myrcene, limonene. Total THC 22.4% (batch 0426)." Copy, never round or estimate.
- **Process**: "solventless rosin pressed from fresh-frozen flower", "cold-cured", "sun-grown".
- **Category words your state allows**: check whether "indica", "sativa" and "hybrid" are fine as classification words where you are; most places they are, as long as no effect is attached ("an indica that knocks you out" fails on the second half).
- **Practical facts**: child-resistant packaging, batch date, "sold in 5-packs only".

## Words on the fence

These pass the regex but a compliance lead may still strike them. Decide once, write the decision down, add it to the regex:

`relaxing`, `uplifting`, `calming`, `euphoric`, `focus`, `creative`, `mellow`, `chill`, `nighttime`, `daytime`, `body high`, `head high`.

They describe an experience, which is a step toward describing an effect. Some states and some lawyers allow them as flavor-adjacent mood words; some do not. If you keep them, never pair them with a body part, a time of day plus a verb ("nighttime, helps you unwind"), or a condition.

## The house-rules block for an AI

Paste this above any batch of product rows you hand to a model:

```
Write product descriptions for a licensed cannabis menu in [state]. 40 to 60 words each.
Describe only the product: form, size, strain and lineage, grower, process, flavor and aroma as taste words, and terpene or cannabinoid facts copied exactly from the fields I give you.
Never say or imply what the product does to a person: no conditions, no symptoms, no "helps", "relieves", "treats", no sleep, no wellness, no "you will feel", no safety or potency superlatives, nothing that appeals to minors.
Do not invent lab numbers, awards, or origin. If a field is blank, leave it out.
Tone: [paste two descriptions you already like].
Output: one row per product, columns sku | description. Nothing else.
```

Then run every row through `product-data-cleanup.py --check-copy` before it goes anywhere near a live menu. The model will still slip one through; the regex catches the words, your compliance lead catches the meaning.

## Review log

Keep a one-line log per batch: date, how many rows, how many regex hits, how many your compliance lead struck after the regex passed. That last number is the one that tells you whether your rules are good enough yet.
