PUFF / DEAL INTEGRITYAn independent case studyby Mousa BatarsehNot commissioned or endorsed by Puff Cannabis

07Methods and sources · retrieved 2026-09-28

What is observed, what is modelled, and what is still unknown.

The point of the labels is that you can check the work instead of believing it. Every claim in this case study traces to a row below, and every gap is written as a gap rather than filled in with something plausible.

What I actually did, in six steps.

In the order I did it. Each step feeds the next, and each one is on a page of this case study you can open and check.

Step 01

Read the public pages

One retrieval, on 2026-09-28

I read only what any customer can see: the home page, the specials index, each deal page, the store locator, the sitemaps and the public FAQ. No login, no form, no order, no admin. Every page I relied on is one of the 17 entries in the source register below.

Step 02

Write down every deal as published

30 deal cards → 28 unique offers

Each card was copied as it appears — headline, price, terms, disclaimer, link — before any judgement. Offers shown on both the home page and the specials index were merged, so each one is counted once.

Step 03

Run the same checks on every offer

28 offers × 14 checks

Does it say which products, which store, until when, and on what terms? Does the link land on something you can buy? Every offer gets the same fourteen checks and one verdict. 2 of them block a customer from knowing what they will pay.

Step 04

Label every claim

Five labels, from observed to unknown

Anything I saw is marked as observed. Anything the company says about itself is marked as its own wording. Anything I could not see is either modelled — and says so wherever it appears — or written down as needing internal data. Nothing is filled in to look complete.

Step 05

Turn findings into work

7 confirmed observations, proposals kept separate

Each confirmed finding becomes a ticket a web team can pick up: the evidence, the current and desired state, acceptance criteria and how to verify it. Ideas that are mine rather than observed are labelled as proposals and never mixed in.

Step 06

Define how it would be measured

5 metrics, each with its missing source

Every metric has a formula, a denominator, a time window and the internal source it would need. Where that source is not available from outside, the page says so instead of showing a number.

Five labels, and what each one licenses.

Read left to right, the ground gets softer. Every claim on every page carries one of these, so you always know which kind of floor you are standing on.

  1. 10Public observation

    Read off a public page on the access date. Reproducible by anyone, and it can change tomorrow.

  2. 02Company's own wording

    The company's own published wording. Quoted, not interpreted.

  3. 01Bounded manual check

    A handful of manual checks on one day. It is not a sample of customers and not an analytics report.

  4. 02Modeled demonstration data

    Synthetic and deterministic, built so the workflow can be demonstrated without inventing company performance.

  5. 02Requires company data

    Not knowable from outside. Listed so the gap is visible rather than guessed at.

Every source, and the two things it can and cannot carry.

The "cannot support" column is the useful one. It is where a case study usually overreaches, so it is stated by the author rather than left for a reviewer to find.

  1. 01Public observation

    shoppuff.com home page

    https://www.shoppuff.com/ · retrieved 2026-09-28

    Supports

    The home page leads with deal cards; 18 deal cards were present on the access date. Location names, headline categories and the public FAQ answers.

    Cannot support

    It cannot say which deals are live in which store today, or how often the card set rotates.

  2. 02Public observation

    Specials index

    https://www.shoppuff.com/specials/ · retrieved 2026-09-28

    Supports

    12 deal cards with titles, exclusion sentences and slugs. Category filter chips: Flower, Vapes, Pre-Rolls, Edibles, Concentrates, All Items, Clearance.

    Cannot support

    There is no location filter on this page, no dates, and no list of which products a deal applies to.

  3. 03Company's own wording

    One deal page: 2/$25 Disposables

    https://www.shoppuff.com/specials/2-25-disposables/ · retrieved 2026-09-28

    Supports

    The company publishes, verbatim: "*Website cart may not reflect the bundled price but it will be adjusted at time of payment." The page also carries a title and an exclusion sentence and nothing else.

    Cannot support

    It cannot say how often that adjustment is needed, at which stores, or what it costs the business.

  4. 04Public observation

    "Menu" page (delivered HTML)

    https://www.shoppuff.com/menu/ · retrieved 2026-09-28

    Supports

    The page is titled with product-for-sale language but the delivered HTML carries a deal grid and a store-selector element rather than product records — the product grid is rendered client-side.

    Cannot support

    Nothing about what the rendered client-side menu looks like, and nothing about stock. Only the server-delivered markup was read.

  5. 05Public observation

    Platform stack

    https://www.shoppuff.com/wp-json/joint-api/v1 · retrieved 2026-09-28

    Supports

    WordPress 7.1.2 with Elementor 4.2.4 (generator meta), and a public `joint-api/v1` REST namespace. This is a native first-party storefront on the dispensary's own domain — the product grid is not a third-party embed.

    Cannot support

    Which inventory source feeds it, or when a given product last synced. Only the existence and shape of the namespace was read.

  6. 06Public observation

    One product page, store-scoped

    https://www.shoppuff.com/products/mitten-extracts-disposable-2-in-1-flip-strawberry-gelato-mango-tango-for-sale-monroe-mi/ · retrieved 2026-09-28

    Supports

    This is the finding that shapes the whole case study. The page is scoped to one store in its URL, and its schema.org Product markup carries brand (Mitten Extracts), size ("2g"), price ("25.00" USD) and availability (InStock), with an image served from the ordering platform. **Price and stock are published per store, per product.**

    Cannot support

    One page. It says nothing about how many products carry complete markup, how often the price moves, or what any other store shows.

  7. 07Public observation

    Product sitemaps

    https://www.shoppuff.com/sitemap_index.xml · retrieved 2026-09-28

    Supports

    29 product sitemaps at 1,000 URLs each — roughly 29,000 store-scoped product URLs — plus separate recreational, medical, delivery and stores sitemaps. The product sitemaps carried a last-modified stamp of 2026-09-27, the day before this retrieval, consistent with a daily inventory sync.

    Cannot support

    It does not say which of those URLs are unique products versus the same product repeated per store.

  8. 08Public observation

    Category page (Flower)

    https://www.shoppuff.com/categories/flower/ · retrieved 2026-09-28

    Supports

    A working sub-category taxonomy — Bulk Flower, Infused Bud, Infused Buds, Pre Ground, Premium, Shake Trim, Small Buds, Whole Flower — plus long-form category copy.

    Cannot support

    The page holds no product records and no prices of its own.

  9. 09Public observation

    Shop-by-effect index

    https://www.shoppuff.com/effects/ · retrieved 2026-09-28

    Supports

    Ten consumer-facing effect labels already exist: Happy, Relaxed, Calm, Energetic, Focused, Creative, Inspired, Sleepy, Clear Mind, Uplifted. Each links onward to a filtered shop view.

    Cannot support

    Nothing here states how a product is assigned to an effect, so the assignment rule is not observable.

  10. 10Public observation

    Store locator

    https://www.shoppuff.com/stores/ · retrieved 2026-09-28

    Supports

    Eleven Michigan locations are listed: Bay City, Center Line, Kalamazoo, Madison Heights, Menominee (marked coming soon), Monroe, New Buffalo, Oscoda, River Rouge, Sturgis, Traverse City — plus Utica in the site navigation.

    Cannot support

    It does not state which deals each store honours.

  11. 11Company's own wording

    Public FAQ

    https://www.shoppuff.com/faqs/ · retrieved 2026-09-28

    Supports

    The company's own summary of Michigan purchase limits: "In Michigan, an adult may possess up to 2.5 ounces of marijuana; up to 15 grams of marijuana may be marijuana concentrate." Online pickup ordering is confirmed.

    Cannot support

    It is consumer guidance, not a regulatory determination. It does not cover edible equivalency or medical-patient limits.

  12. 12Public observation

    Brand directory

    https://www.shoppuff.com/brands/jeeter/ · retrieved 2026-09-28

    Supports

    The site publishes per-brand pages. Brand names used in this case study's product sample were taken from these public pages and from the deal titles themselves.

    Cannot support

    It says nothing about which products of that brand are stocked at a given store on a given day.

  13. 13Bounded manual check

    Home-page deal card set

    https://www.shoppuff.com/ · retrieved 2026-09-28

    Supports

    A single retrieval compared the home page's deal cards with the specials index. 18 cards were present on the home page; 12 on the index; the two sets shared 2 titles. Four home-page cards carried a store prefix ("BC |", "Puff |").

    Cannot support

    One retrieval on one day is not a rotation study. Both surfaces may rotate, so this is a snapshot of drift, not a rate.

  14. 14Modeled demonstration data

    Product sample (this case study)

    No external URL — generated by this project · 2026-09-28

    Supports

    A fictional 63-record product sample assembled from publicly named brands, categories and forms so the reconciliation workflow has something realistic to run on.

    Cannot support

    These are not Puff products. No real SKU, price, potency, stock level or image is claimed. Nothing here describes Puff's actual inventory.

  15. 15Modeled demonstration data

    Event stream (this case study)

    No external URL — generated by this project · 2026-09-28

    Supports

    A deterministic, seeded set of 4,500 sessions used only to make the measurement module's formulas inspectable.

    Cannot support

    It is not Puff traffic. It is not a forecast. No uplift shown anywhere is an achieved result.

  16. 16Requires company data

    Search, cart and order logs

    No external URL — a gap, not a source · 2026-09-28

    Supports

    Nothing. Listed to make the missing evidence explicit.

    Cannot support

    Zero-result searches, cart-price adjustments, order completion, basket size and store-level demand all live behind company-owned systems.

  17. 17Requires company data

    Dutchie inventory and cart configuration

    No external URL — a gap, not a source · 2026-09-28

    Supports

    Nothing. Listed to make the missing evidence explicit.

    Cannot support

    Whether a bundle rule exists in the cart, how it is scoped per store, and whether it fires correctly are all inside the ordering platform.

Checked again the next day, with the receipts.

The first reading on 2026-09-28 was taken as notes and quotes, not screenshots. So on 2026-09-29 every source page was captured in full, the key pages were saved to the Internet Archive as neutral dated copies, and every confirmed finding was checked again. Deals rotate daily, so counts move. What matters is whether each finding still stands — and one does not.

  1. T-001Still true

    Deal cards carry no location, and the specials index has no location filter.

    On 2026-09-29 The index now shows 22 cards (12 on the 28th). Its filters are still Flower, Vapes, Pre-Rolls, Edibles, Concentrates, All Items and Clearance — no location control.

  2. T-002Still true

    No promotion publishes a start or end date.

    On 2026-09-29 No card on the home page or the specials index carries a start or end date.

  3. T-003Still true

    The home page and the specials index carry different deal sets.

    On 2026-09-29 Still two different sets. Both deal lists have rotated; one title appears on both surfaces (two did on the 28th).

  4. T-004Still true

    The deal page warns that the cart may not show the bundled price.

    On 2026-09-29 Same sentence, word for word: "Website cart may not reflect the bundled price but it will be adjusted at time of payment."

  5. T-005Still true

    The same terms sentence is published in several different wordings.

    On 2026-09-29 Still several wordings on the specials index alone, in mixed case, plus "Exclusions apply. Limited time offer." on the deal page.

  6. T-006No longer visible

    Home-page cards use an unexplained store prefix ("BC |", "Puff |").

    On 2026-09-29 Not visible on the 29th. Neither prefix appears on the home page any more, so this one cannot be shown from the new captures.

  7. T-007Still true

    A city named in the home-page copy is not in the location list.

    On 2026-09-29 The home-page paragraph still names Hamtramck; the store locator still does not list it.

  8. T-009Still true

    The deal page shows no eligible products and no price.

    On 2026-09-29 The /specials/2-25-disposables/ page still carries a title, a terms sentence and the cart disclaimer, then the store list.

  9. T-010Still true

    A live bundle equals the concentrate limit the company's own FAQ publishes.

    On 2026-09-29 The FAQ still says "up to 15 grams of marijuana may be marijuana concentrate", and "15/$69 Rocket Fuel 1g Live Resin" is still on the specials index.

Every row answers a different review question.

What the role asks for, what this case study puts in front of you, where it came from, what had to be assumed, what the work cannot prove, the internal source that would close the gap, and the metric that would be used in a real engagement.

  1. 01

    Own and maintain the e-commerce storefront

    Put in front of you
    The whole chain — checker, reconciliation workspace, handoff queue, measurement
    Public source
    Public pages, retrieved 2026-09-28
    Assumption
    That promotion records are maintained outside the ordering platform
    Limitation
    No admin, ordering-platform or analytics access was used or requested
    Needs internal data
    Storefront admin, promotion table, ordering-platform login
    Success metric
    Promotion readiness · time-to-correct
  2. 02

    Keep menu and promotion data accurate and consistent

    Put in front of you
    28 offers × 14 checks, with the failure explained per offer
    Public source
    Specials index and deal detail pages
    Assumption
    The 14 checks are the right ones; a real team would cut or add some
    Limitation
    Whether a field is missing at source or dropped in the template is not observable
    Needs internal data
    Promotion table and the ordering-platform item master
    Success metric
    Deal-page resolve rate · cart-price adjustment rate
  3. 03

    Coordinate promotions with stores and marketing

    Put in front of you
    The store-scope finding, the cross-surface comparison, the 30/60/90 plan
    Public source
    Home page, specials index, store locator
    Assumption
    Stores already receive some form of promotion brief
    Limitation
    One retrieval; both surfaces may rotate
    Needs internal data
    The promotion calendar and the store communication channel
    Success metric
    Offers carrying a published location scope
  4. 04

    QA content, links, prices and templates before launch

    Put in front of you
    The handoff queue: 7 confirmed observations with acceptance criteria
    Public source
    Public pages plus one bounded cross-surface comparison
    Assumption
    An agency owns theme templates — stated on the tickets, not left implicit
    Limitation
    No staging environment was available, so nothing was verified against a build
    Needs internal data
    Staging theme and the deployment process
    Success metric
    Open P1 items aged under 14 days
  5. 05

    Report on what the storefront is doing

    Put in front of you
    5 metrics with formulas, denominators, windows and missing sources
    Public source
    Modelled session stream, labelled
    Assumption
    GA4 or equivalent is present with deal-page and product-view events
    Limitation
    No analytics property was read; the funnel is modelled
    Needs internal data
    Analytics property, search logs, order lines
    Success metric
    Deal-to-product continuation · zero-result rate
  6. 06

    Work with an outside development team

    Put in front of you
    Tickets with evidence, impact, acceptance and verification, plus declared dependencies
    Public source
    Confirmed observations and proposals, kept separate
    Assumption
    The agency estimates from acceptance criteria rather than from screenshots
    Limitation
    Effort estimates are indicative and not a quotation
    Needs internal data
    The current backlog and the retainer arrangement
    Success metric
    P1 cycle time
  7. 07

    Excel, reporting and documentation

    Put in front of you
    12-sheet workbook generated from the same modules as the site
    Public source
    This case study's own dataset
    Assumption
    A merchandiser would work in the workbook rather than the site
    Limitation
    The workbook is a stored snapshot; it does not refresh
    Needs internal data
    The real promotion export
    Success metric
    Not a metric — a deliverable

The five things I did not build.

Rejected approaches are more informative than chosen ones. Each of these was considered and dropped for a stated reason.

  1. 01

    Effect-led product discovery

    Puff already has ten working effect labels and strain pages. Building a "find something for sleep" tool would have been a second front end over a taxonomy that exists, and the rule that assigns a product to an effect is not observable from outside. Building it would have meant inventing the thing it recommends on.

  2. 02

    A menu completeness dashboard

    It would need a crawl of roughly 29,000 store-scoped URLs to say anything defensible, and the interesting failures live in the admin, not on the pages. Kept as a supporting issue rather than the centre.

  3. 03

    A general SEO push

    The site already runs programmatic local pages, category copy and structured data. Recommending "improve SEO" without a specific defect would have been noise, and there is no evidence in this case study that SEO is where the money is lost.

  4. 04

    A redesign concept

    The storefront is a native, store-scoped, price-carrying build. A redesign would have been the easiest thing to draw and the least useful thing to hand a hiring manager, because it demonstrates taste rather than judgement.

  5. 05

    Guessing at internal numbers

    Cart adjustment rates, stock levels, search logs and conversion are all knowable internally and not from outside. Filling them in with plausible figures would have made this look more complete and be worth less.

What this case study cannot tell you.

Written as a list rather than a paragraph, because a limitation buried in prose is a limitation that was not really disclosed.

  1. 01

    One retrieval, on one day. Both deal surfaces may rotate, and a rate cannot be established from a single observation.

  2. 02

    The product sample is modelled. It is not Puff's inventory, and no real SKU, stock level or potency is claimed. Exactly one price in it is real, and it is labelled wherever it appears.

  3. 03

    The session stream is modelled and deterministic. It is not Puff traffic and it is not a forecast.

  4. 04

    The ordering platform, the cart and its bundle rules were not loaded or inspected. Nothing is claimed about how the cart actually behaves — only about what the company's own page says it may do.

  5. 05

    The 14 checks are my design. They are the checks I would argue for in a first week with the promotion table in front of me, and they are the part most likely to change.

  6. 06

    Effort estimates on the tickets are indicative. They are not a quotation and were not produced with the agency that would do the work.

  7. 07

    The reference project's mobile behaviour could not be verified in the environment used, and is recorded as unresolved rather than observed.

  8. 08

    No automated accessibility audit was run against this case study. Keyboard operation, focus visibility, contrast and reduced-motion behaviour were checked by hand; that is not the same as conformance testing.

The one that matters most
Nothing here has been validated with Puff Cannabis. If the ordering platform already scopes promotions per store and applies bundle pricing correctly, then the operational half of this case study is unnecessary and what remains is presentational. That is a better outcome than being right, and it is the first question in the 30-day plan.

Independence, and what I claim.

This is independent work by Mousa Batarseh. It was not commissioned, approved, reviewed or endorsed by Puff Cannabis Company, and it is not a claim that they need it. It does not modify any live system, and no account, form or order was used anywhere in the research.

What I claim: that I can read a business's public surface, find a specific and checkable gap, build something that closes it, show the operational work behind it, define the measurement honestly, and write it up so a reviewer can disagree with me precisely.

What I do not claim: any measured business result, any employment relationship with Puff Cannabis, any endorsement, or any internal knowledge of how their systems behave.

Counted figures in this case study describe its own 28 offers and 63sample records. They are not statements about Puff's trading.

Where to go next

  1. 01Start hereWhat is being asked, and why
  2. 02WalkthroughThe argument in seven scenes
  3. 03Deal checkerDoes this deal resolve at my store?
  4. 04ReconciliationWhich promotions cannot be trusted as written?
  5. 05HandoffWhat does the web team get asked to build?
  6. 06MeasurementHow would we know it worked?
  7. 07MethodWhat is observed, modelled, or still unknown
  8. 08Deal OSWhere the checks would run every day
COUNTED, NOT ESTIMATED
THIS CASE STUDY · 2026-09-28
DEAL CARDS OBSERVED30
UNIQUE OFFERS28
  WITH A DATE0
  WITH A LOCATION SCOPE0
  RESOLVING TO A PRODUCT24
SAMPLE RECORDS63
  WITH A REAL PRICE1
BLOCKING FAILURES2
PUBLIC PAGES ONLY · NOT ENDORSED BY PUFF