Methodology

How this project turns raw state testing records into a dataset you can read. The same principles apply in every state. The state-specific rules live on each state's own methodology page.

Where the Data Comes From

Every record on this site comes from a state cannabis regulator's own compliance-testing files. Before a package can reach a retail shelf, a sample is sent to a licensed lab and tested for potency and for contaminants — pesticides, microbials, heavy metals, residual solvents, and others. The result is recorded as a pass or fail and logged in the state's seed-to-sale tracking system, Metrc or BioTrack, then filed with the regulator. That filing is the record this project is built from.

Some states publish these files as a matter of routine. Others release them only in response to a public-records (FOIA) request. The route differs by state; the source does not. In every case the underlying data is a government record, not something I generated. Which fields end up in a state's public record varies by state, so what you find on each state page reflects what that state chose to make public — no more, and no less.

How the Data Is Processed

Raw seed-to-sale exports do not arrive in a readable shape. A single package can generate dozens of rows — one for each pesticide screened, each heavy metal, each microbial test, plus potency. Three principles govern how those rows become the figures on this site, and they hold in every state.

Deduplication to the package or sample

The analyte-level rows are collapsed down to the individual package or sample, so each test is counted once. A package that produced 30 analyte rows becomes one package. This is what makes counts mean what a reader expects them to mean.

Filtering to completed compliance tests

Only finished, compliance-relevant results are counted. Records that do not belong in a compliance picture — informational-only tests, shelf-life and stability tests, and similar non-compliance categories — are set aside so they do not distort the numbers. Exactly what is excluded, and why, is listed on each state's methodology page, because the categories a state records differ from state to state.

Subtractive only — nothing added

Nothing is added, nothing is estimated, nothing is modeled. Every processing step is subtractive: it removes or collapses rows, never invents them. There are no imputed values, no projections, and no synthetic records anywhere in this data. The record you see is the state's own.

How Identities Appear

Operators and labs are shown exactly as each state released them. That falls into three patterns:

Named

The state releases cleartext records with operators and labs identified by name. Those names appear here as the state published them.

Coded

The state de-identifies some or all participants by design, releasing the record under codes or letters rather than names. Those codes appear here as the state assigned them.

Numeric

The record arrives carried by system-assigned numeric IDs. Those IDs appear here unchanged.

The rule across the whole site is the same: I do not de-identify named data, and I do not re-identify coded or numeric data. Where a state published names, you see names. Where a state withheld them, they stay withheld. The difference between a named state and a coded state is a difference in what each state chose to make public — not a gap in the data, and not an editorial choice on my end.

One caveat holds everywhere: some strain or product names in the underlying data contain brand references, and a coded operator or lab may be inferable by someone with industry knowledge who cross-references public licensing records. Coding limits casual identification; it cannot prevent determined cross-referencing — and the underlying records are public to begin with.

What Each State Page Adds

The principles above are universal. The details are not. Every state structures its testing program differently — different test categories, different pass/fail definitions, different units, different identity coding, different date ranges, different known quirks in the raw files.

So each state has its own detailed methodology page. That is where you will find the exact data source and how it was obtained, the precise filtering and exclusion rules for that state, how pass/fail is computed there, how potency is handled, the date window covered, and the specific limitations of that state's record. If you want to reproduce a number, the state methodology page is where the recipe lives.

Start from the state directory and open any state to reach its dashboard and its methodology.

License and Underlying Records

The compiled datasets, charts, and analysis on this site are released under Creative Commons Attribution 4.0 (CC BY 4.0). You can copy, republish, adapt, and build on the work — commercial or not — as long as you give credit and link back. No permission required, no fee.

The underlying testing records are public-domain government data. Facts and government records are not mine to own, and I make no copyright claim over them. The license covers my contribution: the work of collecting, cleaning, structuring, analyzing, and presenting those records in a form anyone can read.

Full license terms, attribution wording, and the as-is notice are on the Data Use page.

Provided As-Is

This data is only as accurate as the entries in the state's tracking system. Operator input errors exist. Lab input errors exist. I did not produce, audit, or independently verify the underlying records, and I make no representation as to their accuracy or completeness. Do not rely on this data as the sole basis for any business, financial, legal, regulatory, or purchasing decision. The conclusions you draw are your own.

Cannabis Wise Guys is independent. It is not affiliated with, endorsed by, or sponsored by any state regulator, and no regulator has reviewed or approved this analysis.

Questions

If you have questions about the methodology, want to reproduce the analysis, need the raw data for your own research, or spotted something that looks wrong: max@cannabiswiseguys.com