Observation Standards

Methodology

Cannabis menus are complicated. Products come in different weights, formats, categories, and pricing structures, and retailers do not always describe them the same way.

GramWise turns publicly available cannabis retailer menus from the New Jersey markets we track into structured market observations that are easier to compare.

One rule guides the process:
Follow the menu. Don't invent what isn't there.

How We Collect Cannabis Menu Information

GramWise collects publicly accessible retailer menus as point-in-time snapshots.

Every observation is tied to when and where it was collected. We do not treat a captured menu as live inventory, and we do not assume it will still look the same when someone visits later.

Retailers also use different menu platforms, so GramWise uses platform-specific extraction tools to read information such as product name, brand, category, size, displayed price, potency, and product link.

GramWise does not bypass passwords, CAPTCHA systems, login requirements, or other access controls.

The HTML and PDF files used during collection are temporary working copies and are deleted within 12 hours of processing and quality review. GramWise retains the source references, hashes, fingerprints, and excerpts needed to trace an observation without maintaining a permanent archive of retailer menus.

We Check the Menu Before We Trust the Products

A perfectly parsed product is still bad market data if half the menu never loaded.

Before products can contribute to published analysis, GramWise checks whether the source capture appears usable and sufficiently complete for analysis.

Empty or unreadable captures are rejected. Readable captures that show signs of truncation, such as a menu ending before its stated product total, are held out of published analysis.

Those records are not erased. They remain available for internal review along with the reason they were withheld.

How We Make Products Comparable

GramWise normalizes menu information only where the evidence supports doing so.

For products compared by weight, stated weights are converted to grams. Common ounce fractions use fixed conversions such as:

Ounce Fraction Fixed Gram Conversion
1/8 oz 3.5 g
1/4 oz 7 g
1/2 oz 14 g
1 oz 28 g

GramWise does not convert milliliters to grams, assume vape density, or invent missing package weights.

If a product does not contain enough information for a particular comparison, it can remain part of the observed market while being excluded from that calculation.

Retailer category labels are also normalized into a consistent structure. When a retailer has already provided a clear category, that stated category takes priority over weaker keyword interpretation.

Potency values are preserved in the units provided. GramWise does not combine THC and THCa into a calculated value the retailer did not publish, and potency does not change the price-per-gram calculation for products sold by weight.

How We Handle Prices and Discounts

Price is where simple menu comparison stops being simple.

A retailer may show a regular price, a discounted price, and a promotional badge. Sometimes those values do not agree.

GramWise records the prices the menu actually displays. When both a higher and lower price are shown, GramWise calculates the discount from those two prices rather than trusting the "% off" badge or using that badge to manufacture another price.

Some retailers also present nearly their entire menu as discounted. In those cases, the lower displayed price may be generally available, or it may depend on membership, loyalty status, or another condition that is not obvious from the individual listing.

GramWise does not automatically assume every lower displayed price is available to every shopper.

When a retailer has at least eight priced products and 95% or more are displayed as discounted, GramWise treats that as a standing-discount pattern and handles the pricing basis at the store level.

Reviewed evidence can establish which displayed price should serve as the benchmark. When that basis has not been confirmed, GramWise uses the higher displayed list price as the conservative default.

GramWise never creates a price that the retailer did not display.

There is an important limitation here. Shopper-specific promotion conditions are not always visible in publicly accessible menus. When qualifying language is available, GramWise preserves it. When it is not, we do not invent a condition.

What Gets Included in Market Analysis

Not every clean observation belongs in every calculation.

GramWise separately asks:

  • Is the record itself valid?
  • Does it contain what this analysis requires?
  • Was enough of the menu captured to trust the source?
  • Is there a known issue that makes the record unreliable for this comparison?

A product can therefore remain a valid market observation while being excluded from a price-per-gram calculation because its weight cannot be established.

Likewise, an individually clean product can be withheld because the source menu appears incomplete.

Non-cannabis hardware and other out-of-scope listings are also held out of cannabis product comparisons rather than being allowed to distort the market.

When GramWise withholds something, it keeps track of the reason.

Questionable data is held and explained, not silently discarded.

Reproducibility and Audit

GramWise's collection pipeline is deterministic.

No AI or probabilistic model makes record-level collection, normalization, or publication decisions.

The same source processed under the same code and rules produces the same normalized result. Runs retain source hashes, record fingerprints, code version, pricing configuration, and accounting checks so the path from source to observation can be reproduced and audited internally.

That does not mean GramWise independently verifies that every retailer menu was correct when it was published.

It means our processing is traceable and reproducible.

What GramWise Cannot Know

A trustworthy methodology should also be clear about its limits.

GramWise works from published menu information. That means:

  • observations are point-in-time snapshots, not live feeds;
  • physical inventory and per-item stock status are not independently verified;
  • some membership and shopper-specific promotions are not visible in public menu captures;
  • prices are currently treated as tax-exclusive based on how the New Jersey menus in scope publish them;
  • some store-level pricing decisions require reviewed human evidence;
  • GramWise covers selected markets and successful captures, not every dispensary or product in New Jersey.

We would rather state those limits clearly than make the data sound more complete or certain than it is.

The Goal

GramWise is not trying to tell the market what something should cost.

We are trying to make what retailers publish easier to compare.

We do the cleanup. You get the market.