Pure Cannabis menu field notes — capture and tools pack
Built 2026-10-23 18:06 UTC. Independent study by Mousa Batarseh (hireme@mousabatarseh.com).
Not commissioned, reviewed or endorsed by Pure Cannabis Outlet, Dutchie, Weedmaps or Leafly.

Contents
  data/raw/manifest.json          capture timestamps and SHA-256 of every raw file
  data/raw/products_<store>.json  verbatim FilteredProducts responses (all pages), five stores
  data/raw/specials_<store>.json  verbatim FilteredSpecials responses
  data/raw/filters_<store>.json   verbatim MenuFiltersV2 responses (brand filter lists)
  data/raw/entry-links.json       every /stores/ link on four WordPress pages with HTTP status
  data/raw/html/                  saved HTML of the pages measured (homepage, locations, loyalty, /mi/warren/, flower pages, sitemaps)
  data/analysis.json              aggregates used by the website
  data/export/records-all.csv     every captured record with the ten check results
  data/export/specials-all.csv    every current special
  data/export/brands-all.csv      every brand-filter entry with its classification
  tools/capture.py                re-capture the five menus (python3, curl)
  tools/entry_links.py            re-check the links
  tools/analyze.py                rebuild analysis.json, the site datasets and the CSVs
  tools/build_workbook.py         rebuild the workbook (python3 + openpyxl)
  tools/make_leaf.py              the leaf illustration generator
  tools/tests.mjs                 node tests for the shared rules and shipped files
  site/assets/js/checks.js        the ten checks and the Record Lens parser (browser)

To re-run: python3 tools/capture.py && python3 tools/entry_links.py && python3 tools/analyze.py && python3 tools/build_workbook.py && node tools/tests.mjs
All requests are plain GET requests to public pages. Be considerate: the capture makes about 60 requests.
