// when_chatgpt_recommends_a_dispensary · it_should_be_yours
Dutchie Menu SEO PlatformAPEXMENUEDGE®
When Google or ChatGPT recommends a dispensary, it should be yours. But if you suffer from your dispensary menu not showing on Google, your organic traffic will collapse.
Apex MenuEdge is the ultimate dutchie seo and dutchie menu seo solution. We convert dynamic menu scripts into crawler-friendly SSR pages to make your dutchie menu indexable. Whether you need a legacy dutchie plus seo transition or a new edge implementation, we ensure bots and humans see identical, fully optimized data. We intercept your response at the Cloudflare edge and rewrite it for three audiences from one URL, built by a preferred partner.
// the_macro_shift · 2026 onwards
AI SEARCH IS THE NEW SERP.
The 10-blue-link world is over. ChatGPT runs 4+ billion queries a month. Google AI Overviews now appear on the majority of commercial searches. Voice assistants handle "near me" cannabis queries the way Google did in 2015. The discovery layer for the next decade isn't a results page — it's a recommendation. The brands that engineer the substrate for that recommendation today own the next decade of cannabis e-commerce.
ChatGPT, Claude, Perplexity, Gemini
4B+ monthly queries · zero blue links · the answer wins
Google's AI Mode + AI Overviews
On 60%+ of commercial queries · cited brands win the click
Alexa, Siri, Google Assistant
Single-answer-only · the citation is the conversion
Browse / shopping agents
Buying decisions made by AI on your behalf in 2027
Every one of these channels has the same requirement: structured, schema-rich, entity-anchored content that AI models can extract cleanly. Reverse-proxied dispensary menus do not have this. Apex MenuEdge is the only solution that gives them this — for the entire cannabis vertical.
“The brands that exist in AI-search by 2027 will be the brands that built the substrate in 2026.”
— The Apex Doctrine
// every_dispensary_is_choosing · whether_they_know_it_or_not
Two Futures.
ChatGPT, Claude, Perplexity, Google AI Overviews, Alexa, Siri — they're all making the same decision a million times a day: which dispensary do we recommend? You will be on one side of this line by 2027. Pick now.
You Stay
Invisible.
- Crawlers see <div id="__next"></div>
- Zero AI citations. Zero voice queries answered.
- Local map pack and AI Overview slots go to competitors.
- Every quarter, the gap widens. Every quarter, harder to close.
You watch competitors take the AI-search slot you should have owned. By 2027 it's structural. The window closes.
You Become
The Answer.
- Every crawler sees a fully-rendered, schema-rich, voice-ready page
- ChatGPT, Claude, Perplexity, AI Overviews all cite YOUR menu
- Voice assistants name your dispensary on "near me" queries
- You compound. Every week, more queries route to you.
You own the citation layer. By 2027, when half of all dispensary discovery happens through AI assistants, you're the answer the assistants give.
The choice isn't between two SEO strategies. It's between relevance and irrelevance, in a world where the SERP is no longer the SERP. Apex MenuEdge is the only path to the right side of this line for cannabis menus running on Dutchie — and Bud Authority is the only Dutchie Pro Preferred Partner shipping it.
// the_silent_problem · costing_you_market_share_today
YOU'REA GHOST.
Every customer who asks ChatGPT "best dispensary near me" — you don't exist. Every voice query to Alexa about cannabis delivery in your zip code — you're not in the answer. Every Google AI Overview that recommends a brand — it's not yours.
Why? Because the menu — the engine of your revenue, the page that converts — lives inside a JavaScript shell that AI crawlers cannot read. Run this in your terminal right now. We dare you.
$curl -A "GPTBot" \ https://yourdispensary.com/stores/yourstore | wc -c → 29,847 bytes // looks fine, right? → body content: <div id="__next"></div> → indexable text: 0 words → verdict: invisible
Googlebot will eventually render it (days behind, queue-delayed). The AI bots that decide who gets cited in 2026 — GPTBot, ClaudeBot, PerplexityBot — won't. Your competitors are losing this race too. The first one to fix it wins the entire decade.
no products · no schema · no answer
// structural_disadvantage · documented_by_google · permanent_until_fixed
WHY EVERY OTHER
DUTCHIE MENU LOSES.
This isn't opinion. It's how Google's own systems classify reverse-proxied dispensary menus. Every Dutchie storefront on the internet — yours, every competitor's, every brand the algorithm has ever seen — ships the exact same HTML payload to crawlers: an empty React mount wrapping the same JavaScript bundle. From a search engine's perspective, every dispensary in the country looks structurally identical at the HTML layer. That is the floor for the entire industry. Apex MenuEdge is the only product that breaks it.
Duplicate Payload Penalty
Every reverse-proxied Dutchie menu ships an identical <div id="__next"></div> React shell. Google's Helpful Content Update, Site Reputation Abuse policy, and Panda-era duplicate-content systems all classify near-identical templated HTML across thousands of domains as low quality. Without Apex, every dispensary inherits the same floor — no differentiation, no entity signal, no ranking lift.
AI Bots Don't Render JS
GPTBot, ClaudeBot, PerplexityBot, OAI-Search, Applebot-Extended, Cohere-AI, Mistral-AI, DuckAssistBot — none of them execute JavaScript. Ever. They hit your Dutchie menu, see zero indexable bytes, and leave. They don't come back to render. You're not behind in AI search — you're structurally invisible.
Crawl Budget Burn
Even Googlebot — which does render JS — runs a separate render queue days behind first crawl. For thin or duplicate content, Google cuts crawl budget aggressively. Your menu pages get crawled less and indexed slower. Compounded across 500–3000 product URLs per store, the lost discovery is catastrophic.
No Entity Graph
Dutchie's React eventually injects schema client-side. AI bots never see it. Without Organization, LocalBusiness, Product, Brand, and Speakable nodes in the raw SSR HTML, your dispensary has no anchor in the knowledge graph AI assistants build their world model on. You aren't a known entity. You're a JavaScript stub.
// the_unlock · structural · first_mover · uncopyable
Apex MenuEdge is the only middleware in the cannabis ecosystem that solves all four at the structural layer.
Edge-injected before bots arrive. Bespoke per URL — no duplicate content surface. Full SSR for crawlers that don't render JS. Linked @id schema graph that anchors every dispensary in the AI knowledge layer. Nobody else ships this — not Dutchie, not Yoast, not RankMath, not your current SEO agency. The window to lock in first-mover citation dominance closes the moment a competitor catches up. It hasn't closed yet.
market_position
N = 1
we are the category
// live_scanner · paste_your_url · 14_checks_in_15_seconds
SCAN YOUR OWN MENU.
Don't take our word for it. Paste your dispensary URL — or any competitor's — and watch the scanner light up red. The same 14 checks Apex MenuEdge fixes on every install. Real audit, in your browser, in real time.
See exactly what AI sees on your menu.
Paste your dispensary's menu URL. We fetch the page in your browser, run 14 AI/voice/search-readiness checks, and grade the result. No login. No tracking. Sub-15-second scan.
no login · no email · zero data leaves your browser · CORS-proxied fetch · pattern fallback
// this_is_what_winning_looks_like
YOU'RE
THE ANSWER.
When a customer asks an AI assistant, "best dispensary near me open now," this is what they hear. Your dispensary, by name. Your address, your hours, your delivery zones. With a citation that points back to your own menu.
Apex MenuEdge wires the schema graph, the Speakable selectors, the FAQ extraction, and the entity-anchored prose that AI models reach for first. The answer isn't the brand with the biggest ad budget anymore. It's the brand the AI can read, parse, and cite without ambiguity.
Sourced from Hii NYC's licensed cannabis dispensary entity with schema-graph attribution, FAQ extraction, and Speakable metadata — all delivered by Apex MenuEdge® at the Cloudflare edge.
// same_query · two_outcomes · only_one_for_you
EVERY QUERY IS A
BATTLE FOR THE CITATION.
A customer asks. The AI decides. Three brands get named, or one. Without Apex you're competing for a slot the model doesn't see you eligible for. With Apex you're the first brand the model reaches for.
“near me cannabis dispensary that delivers tonight”
Voice + AI assistants typically name 1-3 brands. If you're not in the top 3, the customer never hears your name.
A single AI citation can route hundreds of customers to one location over a year. Compounded across the catalog of queries — career-defining.
Models entrench. Once a brand becomes the canonical answer for a query, displacing it gets exponentially harder.
“A single AI citation routes hundreds of customers a year. Compounded across the entire catalog of queries — career-defining.”
// measurable_deltas · same_dutchie_url · one_structural_change
THE OUTCOME GAP.
Numbers, not claims. Same Dutchie storefront. Same products. Same checkout. One structural change at the Cloudflare edge. Two completely different realities for what AI search engines, voice assistants, and the next generation of buying agents ever see.
Day 14 first AI citation · Day 60 voice-search routing · Day 90 AI Overview placement · Year 1 category dominance. Every new AI crawler that comes online finds your menu already optimized for it.
Once a brand becomes the canonical citation for "dispensary near me" in a zip code, displacing it gets exponentially harder. Models reinforce their own outputs. The window is now.
A single AI citation can route hundreds of customers to one location over a year. Compounded across 500 product URLs, 50 categories, and 8 geo pages — the entire decade-defining advantage from a 72-hour install.
// architecture · weaponized_at_the_edge
SAME REQUEST. TRANSFORMED IN FLIGHT.
We don't replace your menu. We don't change your stack. We don't touch checkout, OAuth, payments, or the bypass header your engineers care about. We just intercept the response from Dutchie at the Cloudflare edge — and stream it through ~30 distinct optimization patterns (including a flagship voice-search layer) before it reaches the crawler.
REQUEST
Crawler or human hits /stores/<slug>
FETCH
Worker fetches dutchie.com upstream
CLASSIFY
60+ crawler signature match · <1ms
INJECT
HTMLRewriter streams cassette into HTML
RETURN
Enhanced response · cached at edge
// inside handleRequest return await fetch(proxyRequest);
// inside handleRequest const proxiedResponse = await fetch(proxyRequest); return await injectApexMenuEdge(request, proxiedResponse, env, ctx);
↑ that's the entire change · two lines · we deploy it for you in 72 hours
// five_surfaces · five_schema_treatments · zero_overlap
ONE INSTALL. FIVE PAGE TYPES.
A product page is not a category page. A brand page is not a store home. A neighborhood landing page demands different entities than a flower SKU. Apex MenuEdge classifies every URL the Dutchie storefront serves and emits a purpose-built schema graph for each — no template reuse, no entity collisions, no wasted markup.
Product
Per-SKU surface — strain, brand, weight, effect anchors.
- BreadcrumbList
- Product
- Store
- Speakable
Category
Flower, edibles, vape, pre-rolls — buyer-intent surfaces.
- CollectionPage
- BreadcrumbList
- Store
- Service · Delivery
- Service · Pickup
- Speakable
Brand
House and partner brand surfaces — Stiiizy, Cookies, RYTHM, et al.
- CollectionPage
- Brand
- Store
- BreadcrumbList
- Speakable
Store Home
Per-location anchor — full NAP, hours, areaServed, delivery zones.
- WebPage
- BreadcrumbList
- Store · full address
- telephone
- areaServed
- openingHoursSpecification
Geo / Neighborhood
L-train, Bedford Ave, Bay Ridge, Sunset Park — discovery geometry.
- WebPage
- BreadcrumbList
- Store
- Place
- Service
Every surface gets the entities AI search engines actually reach for. No FAQPage schema (Google killed FAQ rich results 2026-05-07 — we serve Q&A as prose instead, which is what models extract anyway). No AggregateRating without real reviews. No fake Offer pricing. Schema discipline beats schema volume.
// three_audiences · one_url · three_payloads · zero_collisions
ONE URL.
THREE AUDIENCES.
The same Dutchie URL ships three distinct payloads, segmented by audience. Head metadata and the schema graph land in the raw SSR HTML for everyone. A fully-rendered body aside lands hidden in the markup for crawlers only. And a layer of JS overrides — surviving React's hydration and re-renders — fixes the visible tab title, the on-page H1, and the product description for humans only. Same install. Three audiences. Three payloads.
in raw SSR HTML · bots AND humans
- · Unique <title> — 165-210 chars, entity-stacked, geo-haloed
- · Unique meta description — 140-158 chars, keyword + geo first
- · Canonical URL — self-referencing, per page
- · Open Graph title + description for social previews
- · Linked @id JSON-LD schema graph — page-type-specific
- · Speakable selectors — voice-search hint at H1 + intro
hidden body aside · display:none · invisible to humans
- · Short, scannable H1 — page-type specific
- · 4-block intro — entity statement, KeyFacts, prose Q&A, differentiator
- · Plain-text NAP block — auto-pulled from store config
- · Five cross-links — sibling categories, store home, related brands
- · Real-time "Open until X today" status with itemprop
- · Updated timestamp with dateModified microdata
JS-injected overrides · survives React hydration
- · Browser tab title locked to our copy — defeats React's <Head>
- · Visible on-page H1 swapped — survives 30 seconds of re-renders
- · Product description swapped on PDPs — bespoke, brand-voiced
- · Same live Dutchie menu, products, pricing, checkout — untouched
- · Empty <div id="__next"> preserved · React hydrates normally
- · Zero added load · zero behavior change · zero UX risk
Bots ignore the JS layer. Humans never see the hidden aside. The head serves both. Three signals from one wire — no collision, no cloaking penalty, no shipped-then-stripped React fight.
// optimization_surface · six_layers · ~30_patterns · voice_search_flagship
EVERY PAGE.
FULLY OPTIMIZED.
Six layers across ~30 distinct optimization patterns: head metadata, schema.org entity graph, server-rendered body, flagship voice-search layer, image alt, and compliance disclosure. Every page rewritten bespoke per URL from your client's own store data, brand voice, and inventory. Your Bay Ridge store doesn't share a single sentence with your Williamsburg store.
across 6 layers · voice search flagship · plus 3 forward-compatibility signals
Click any layer to expand. This is what your competitors are missing — every element they don't have is a query you win.
// no_two_urls_alike · deterministic_shuffle · zero_template_collisions
NO TWO URLS ALIKE.
Bay Ridge isn't Williamsburg. The flower category isn't the pre-rolls category. Stiiizy isn't Cookies. Apex generates a unique payload for every URL — title entity-stacked with a deterministic geo halo of 8-10 nearby neighborhoods, NAP block auto-bound from the matching store, five cross-links pulled from the same client's inventory. No template reuse. No copy collisions. Run the diff and see for yourself.
8-10 nearby districts
Each URL's title pulls neighborhood anchors deterministically shuffled by slug — L-train, Bedford Ave, North Brooklyn for one store, R-train, 86th St, Bay Ridge, Sunset Park for another. Same script, different geometry.
165 – 210 characters
Entity-stacked: primary keyword + geo + differentiator + brand. Long enough to dominate the SERP snippet, short enough for AI assistants to extract cleanly.
140 – 158 characters
Primary keyword + geo in the first 60 chars. Ends with a differentiator. Tuned for both Google rich snippets and AI Overview citation copy.
Pulled from store config
Multi-location dispensary? Every URL auto-matches to the right physical address, phone, hours, neighborhood. No copy-paste. No drift between schema and prose.
Auto-generated per page
Sibling categories, store home, related brands — pulled from the same client's inventory map, not a generic template. Internal link equity flows where it should.
"Open until 11pm today"
Hours table emits openingHoursSpecification AND a live-rendered "open until" string. Recomputed on the worker, not on the client. AI assistants extract it on first read.
59 crawlers fingerprinted
Every request is classified at the edge in <1ms. Crawler hits get full SSR injection. Human hits get head enhancement only — Dutchie React hydrates normally.
ChatGPT, Claude, Perplexity, Gemini answers
Google, Bing, Apple Maps, DuckDuckGo SERPs
Instagram, TikTok, LinkedIn, Facebook previews
Alexa, Siri, Google Assistant 'near me'
Ahrefs, Semrush — competitive parity
// dual_win · google_search · ai_search · same_install
WHY THIS WINS. EVERYWHERE.
Most SEO products solve one surface. Apex MenuEdge structurally fixes the SSR layer of your Dutchie menu — and that single structural change lifts you across classic Google search (Maps, Knowledge Panel, Rich Results, local pack) AND AI search (ChatGPT, Claude, Perplexity, AI Overviews, voice assistants). The same SSR fix unlocks both — because what AI bots need to cite and what Google needs to rank live in the same place: the raw HTML, before JavaScript runs.
Knowledge Panel + Map Pack
Full LocalBusiness schema with NAP, openingHoursSpecification, areaServed, geo coordinates, telephone — the exact entity set Google reaches for when building the Knowledge Panel and selecting brands for the Local 3-Pack.
Site Reputation Abuse defense
Google's Site Reputation Abuse policy demotes large sites running near-duplicate templated content. Every Dutchie reverse-proxy ships the same shell. We make each URL structurally unique — different title, meta, prose, schema — so your menu reads as authored, not templated.
Helpful Content Update resilience
HCU rewards content that demonstrates first-hand expertise and unique value. Entity-first prose, KeyFacts, brand-voice copy, real store-specific NAP — Apex injects exactly the signal HCU classifiers reward.
Rich Results eligibility
Product schema on every PDP, LocalBusiness on every store home, BreadcrumbList on every page. Eligible for Product rich snippets, Sitelinks, Image SERP, and the "open now / closes at X" SERP labels Google ships from openingHoursSpecification.
Crawl budget reclaimed
Google cuts crawl budget for thin or duplicate content. Move every menu URL from "empty React shell" to "entity-rich SSR" and Google reclassifies the site upward — every product, every category, every store page gets crawled and indexed.
Featured Snippets + People Also Ask
Voice-friendly prose Q&A in the intro block — exactly the structure Google extracts for Featured Snippets and PAA. Schema-less by design because Google killed FAQPage rich results 2026-05-07. Prose still wins the snippet.
Canonical hygiene
Self-referencing canonical on every URL. Dutchie's default canonical chaos (params, sort orders, filters) gets cleaned up. No cannibalization across multi-location stores, no duplicate signal dilution.
Multi-location ranking lift
Multi-store dispensaries suffer hardest from the duplicate shell problem — every location looks identical to crawlers. Apex generates per-location bespoke content + per-location LocalBusiness graph, letting each store rank on its own geographic merit instead of cannibalizing the others.
Indexable content for AI bots
GPTBot, ClaudeBot, PerplexityBot, OAI-Search, Applebot-Extended, Cohere-AI, MistralAI, DuckAssistBot — none execute JavaScript. Apex serves full SSR HTML so they actually have something to index. Without this, AI search is closed to you. Period.
Entity-first citation copy
AI assistants cite the cleanest entity-anchored sentence on a page. Our intro block leads with an entity statement (≤240 chars) — the exact format models extract first when building citations.
Linked @id knowledge graph
Dispensary → Menu → Product → Brand → Store → Place — all interlinked via @id references. Gives AI assistants a clean entity graph to bind your dispensary into their world model. You become a known brand, not a JavaScript stub.
Voice assistant routing
Speakable schema with cssSelector + xpath on every page. Alexa, Siri, Google Assistant Read-Aloud, and AI voice agents extract these blocks directly. "Find me a dispensary in Williamsburg open now" routes to your store.
Google AI Overviews placement
AI Overviews appear on the majority of commercial searches and cite a handful of sources. Eligibility requires extractable SSR content + schema + entity signal — exactly the substrate we ship. Without it, you are categorically not eligible.
Geo halo for 'near me' queries
Every URL anchors a deterministic shuffle of 8–10 surrounding neighborhoods. AI assistants resolving location-aware queries get a dense match-surface to bind your store to nearby intent — without spamming or cloaking.
Real-time hours in the answer
"Open until 11pm today" gets emitted in the SSR HTML with openingHoursSpecification + a live-computed string. AI assistants ingest the current status and answer correctly the moment a user asks.
First-mover entrenchment
Once an AI assistant adopts a brand as the canonical citation for a query in a geography, displacing it gets exponentially harder — models reinforce their own past outputs. Ship now and you entrench. Ship later and you fight an established incumbent.
One structural fix at the edge. Sixteen distinct ranking + citation surfaces unlocked — across two search ecosystems. Same Dutchie URL. Same checkout. Same install. The exact unlock no other product in the cannabis ecosystem ships.
// operator_platform · not_a_one_off_install
RUNS LIKE
A PLATFORM.
Behind every client deploy is a full operator dashboard — built and owned by Bud Authority — where overlays are scanned, generated, edited, published, monitored. Multi-tenant from day one. Bulk operations across thousands of URLs. Run telemetry, cost tracking, per-client health monitor, client-facing proof pages. The Worker on your edge is the spear. The dashboard is the war room.
Multi-Tenant Roster
Every client a separate row — slug, primary domain, injection targets, store catalog. Switch context in one click. Clean isolation, zero cross-bleed.
Auto URL Discovery
Pulls every URL from the domain sitemap plus per-store sitemaps in ~5–10 seconds for typical clients. Broken Dutchie category URLs auto-normalized at scan time.
Bulk Per-URL Editor
Filter by overlay status, page type, store. Edit head, schema, body, raw JSON with live preview. Auto-save with 2s debounce. Bulk select → publish in one action.
Generation Telemetry
Every generation run logged — tokens, cost, per-store outcomes, success/failure status. Full audit trail across every page ever generated.
System Monitor
Live status across Postgres, Anthropic, GitHub, per-client Worker reachability. Watch every edge node from one screen.
Client-Facing Demos
Per-client demo page with Cloudflare bot-analytics deep-link and SE Ranking project deep-link. The dispensary's "here's what we shipped" surface.
Create client record
Slug, primary domain, injection targets, store catalog.
Add stores + hours
7-day hours grid per location. Auto-emitted as openingHoursSpecification.
Auto-scan sitemap
Every URL pulled in ~5–10 seconds. Dutchie path drift auto-normalized.
Bulk generate
Store homes → categories → brands → products. ~$0.05 high-value · ~$0.0013 product.
Bulk publish
Select all → publish drafts. Live within ~5 minutes at the edge.
Deploy to edge
Two-line addition to the client's reverse-proxy Worker. Verified via crawler-UA curl.
~$0.05
Store home, category, brand — frontier LLM tier
~$0.0013
Per-SKU at scale — fast LLM tier
~$3.15
50 high-value × $0.05 + 500 products × $0.0013
~$3–$5
Full annual refresh including regen
<$200/yr
Vercel + Supabase + Anthropic + OpenAI/Gemini
<15ms
Streaming HTMLRewriter — zero-copy
The economics are not what your last SEO agency quoted. This is edge infrastructure, not retainer hours. We can run the entire platform across thirty dispensary clients for less than what a single agency charges per month.
“The structural fix lives in the SSR HTML. That single fix unlocks both Google ranking and AI search citation — because both ecosystems read the same wire before JavaScript runs.”
// glossary · category_we_built
SPEAK THE LANGUAGE.
These are the levers Apex MenuEdge pulls on every page. If your current SEO agency can't define them, they aren't competing in 2026.
Search Engine Optimization
Classic Google/Bing ranking signals. Still required. Still not enough — because the search engine itself is no longer the destination.
Answer Engine Optimization
Optimization for ChatGPT, Claude, Perplexity, Google AI Overviews. Schema, FAQ, and entity-anchored prose so the AI cites you, by name, with attribution.
Generative Engine Optimization
Newer term, same surface. Specifically targets generative AI surfaces — both citation patterns and the prose form models prefer to extract.
Voice Assistant Optimization
Speakable selectors, conversational h3 patterns, near-me anchors. Single-answer-only outcome means the citation IS the conversion.
Server-Side Rendering
Delivering fully-rendered HTML so crawlers don't have to execute JavaScript. AI bots don't render JS. SSR or invisibility — pick one.
Linked Schema Entity Graph
JSON-LD nodes that reference each other via @id. Dispensary → Menu → Product → Offer all interlinked. The substrate of Knowledge Graph trust.
// the_ninety_day_arc · what_actually_happens
DAY 1 TO DOMINANCE.
Most agencies promise "results in 6-12 months." Apex MenuEdge shows up in AI search within two weeks because the citation layer is structurally different from organic SEO — bots crawl the new SSR, schema graph indexes immediately, voice queries start routing to you the moment your speakable selectors land.
And then it keeps compounding. Every weekly cassette regen sharpens the entity. Every new AI crawler that comes online in 2026 and 2027 finds your menus already optimized for it. Every voice query about cannabis in your zip code routes to the dispensary the assistant has the most structured data on. You get the flywheel. They get the void.
// why_competitors_cannot_ship_this · structural_advantage
WHY NOBODY ELSE CAN SHIP THIS.
Not because building it is hard. Because shipping it requires a stack of operational capabilities, vertical knowledge, and ecosystem positioning that took years to assemble — and that nobody outside Bud Authority has built yet.
Cannabis-Vertical Depth
Years of dispensary SEO work, NY/NJ/CT compliance fluency, multi-location optimization patterns, brand-voice patterns across premium / lifestyle / community / wellness / fun archetypes. Generic SEO agencies don't have this. Cannabis tech vendors don't have this either.
Dutchie Pro Preferred Partner
Vetted, authorized, in good standing inside the Dutchie partner program. The relationship that lets us ship integrations into the Dutchie reverse-proxy layer without breaking client menus.
Operator-Grade Platform
Multi-tenant dashboard, bulk per-URL editor, auto-sitemap scanner, run telemetry, per-client health monitor. Not a one-off script — a real platform managing thousands of URLs across multiple clients.
Schema Discipline
Curated entity set Google + AI actually use. No FAQPage (deprecated), no AggregateRating (manual-action risk), no fake Offer pricing. Precision over volume — the schema graph that wins, with nothing flagged.
Per-URL Bespoke Generation
No template reuse. Every URL gets unique title, meta, prose, schema — generated from the client's own store data, inventory, and brand voice. Defeats Site Reputation Abuse, Helpful Content demotion, and duplicate-content penalties.
First-Mover Entrenchment
We started shipping in 2026. Live on real Dutchie menus today. Every AI assistant that adopts our clients as the canonical citation for a query reinforces that selection over time. Models entrench. The window for displacement closes the longer we run.
// ba_manifesto · 2026 · authored_by_mark_wallace
“We don't sell SEO. We sell the only path to relevance for the next decade of cannabis e-commerce. The brands that exist in AI-search by 2027 will be the brands that built the substrate in 2026. Apex MenuEdge is that substrate.”
// deployed_now · live_data
RUNNING RIGHT NOW.
Apex MenuEdge is live on Hii NYC's reverse-proxy worker today, serving both the Williamsburg and Bay Ridge dispensary pages. Every Googlebot, GPTBot, ClaudeBot and PerplexityBot hitting those URLs is reading our cassettes — schema graph, FAQ extraction, Speakable selectors, the works.
The operator dashboard streams every crawler hit, every overlay update, every generation run. Your build looks exactly like this from day one — except with your dispensary, your knowledge base, your wins.
// discipline_as_a_feature · what_we_deliberately_skip
WHAT WE LEAVE OUT.
Every WordPress SEO plugin packs in everything it can — FAQPage, AggregateRating, Offer markup, duplicate Organization schema. We don't. Each one of these is a deliberate skip, grounded in either a Google policy change, a manual-action risk, or a discipline call. Schema discipline beats schema volume.
Google deprecated FAQ rich results 2026-05-07. Search Console reports and Rich Results Test support are gone by 2026-06; API support gone by 2026-08. We serve Q&A as prose in the intro — AI assistants read prose, not schema, for Q&A intent. We don't waste markup on a dead spec.
Self-issued review schema is a manual-action risk. We don't emit ratings unless they come from a real third-party review platform. Honesty trumps shiny stars in the SERP.
We don't have a live Dutchie pricing feed. Emitting stale or fake Offer schema is worse than emitting none. We'll add it the day we wire real-time inventory.
Dutchie's React already injects an Organization node client-side. Emitting a second from our edge would conflict and dilute. We skip it cleanly.
Our optimization runs on initial page load — the moment crawlers index. The next SPA navigation re-runs naturally on the next request. We don't patch Dutchie's router.
The head metadata and schema graph are visible to bots AND humans in the SSR HTML. The hidden body aside is display:none — declared markup, not stealth. AI Overviews extract it cleanly. Google sees the same content twice. Zero cloaking penalty surface.
Every other tool wants to look exhaustive. We want to look precise. The schema graph we emit is the schema graph AI assistants actually use — nothing more, nothing flagged, nothing wasted.
// category_creator · we_have_no_peer
NO ONE ELSE HAS THIS.
Yoast doesn't do this. RankMath doesn't do this. Your current SEO agency doesn't do this. Even Dutchie itself doesn't do this. There is no SaaS, no plugin, no Dutchie Pro Preferred Partner — anywhere — that injects bespoke per-page SEO/AEO/GEO/voice-search content into the Dutchie reverse-proxy response at the Cloudflare edge. Bud Authority does. That's the entire pitch.
| Capability | Apex MenuEdge® | WordPress SEO Plugins | Generic Edge SEO | DIY Schema Pages |
|---|---|---|---|---|
| Reaches reverse-proxied Dutchie menus | yes | no | partial | no |
| Cannabis-vertical content depth | yes | no | no | no |
| AI crawler SSR injection | yes | no | partial | no |
| Per-page bespoke generation (no templates) | yes | no | no | no |
| State-specific cannabis-ad compliance | yes | no | no | no |
| Brand-voice scoring (per-element) | yes | no | no | no |
| Encrypted per-tenant cassettes | yes | no | no | no |
| 60+ crawler fingerprint table | yes | no | partial | no |
| Voice-search Speakable + near-me anchors | yes | no | no | partial |
| Linked @id schema graph (entity SEO) | yes | partial | no | partial |
// platform_receipts · numbers_dont_lie
RECEIPTS.
Production-grade telemetry from the Apex MenuEdge operator dashboard. Every metric is what dispensaries running Apex MenuEdge are actually getting today.
page-type schema treatments · Product · Category · Brand · Store · Geo
AI / search / social / voice / SEO crawlers fingerprinted at the edge
median rewrite latency at the edge
paranoid wrapper · Worker never serves a broken menu
audiences per URL · head metadata · hidden crawler aside · JS-injected human overrides
client onboarding · auto-scan → bulk-generate → bulk-publish → deploy
// 2027_preview · agentic_commerce
WHEN AI
DOES THE BUYING.
In 2027, half of cannabis purchases will start with a customer asking an AI assistant — and end with the assistant making the purchase decision. ChatGPT's Agent Mode, Anthropic Computer Use, Google's upcoming Gemini-Agents: the buyer-bot is no longer hypothetical. It's shipping.
The agent doesn't scroll your homepage. It doesn't see your hero photo. It reads structured data — schema graphs, FAQ markup, hours, delivery zones, license verifications. If your menu emits that data, the agent picks you. If your menu emits a JavaScript shell, the agent picks the brand that does. Apex MenuEdge is the agent-readable substrate.
Schema · FAQ · Speakable · linked @id · structured availability
Hero images · paragraphs of marketing prose · empty React mounts
“Buy me 1g of indica flower from a Brooklyn dispensary that delivers tonight, under $40. Pick a licensed shop with verified hours.”
“In 2027, the agent doesn't scroll your homepage. It reads your schema. The brand that wins is the brand the agent can read.”
// questions_we_get
FAQ.
What does Apex MenuEdge® actually do for my dispensary?+
How quickly will I start showing up in ChatGPT and AI Overviews?+
Do I have to change my Dutchie menu?+
Will it slow down my website?+
How is this different from a WordPress SEO plugin or what my agency does today?+
Why is Bud Authority the only one with this?+
Why is access limited to Bud Authority clients?+
How many page types do you optimize per store?+
How fast can you onboard a new client?+
Same URL, different content for bots vs humans — isn't that cloaking?+
Why don't you emit FAQPage schema even though you have Q&As on every page?+
“Ten years from now, every dispensary owner will tell the story of what they did in 2026. You're writing yours right now.”
// 72_hours_to_live · q2_2026 · 12_slots
BETHE ANSWER.
We deploy Apex MenuEdge into your reverse-proxy worker in 72 hours. By day 14 you're showing in ChatGPT. By day 90 you own the citation layer. The window to enter the AI search era is open now. It will not stay open. Ten years from now, every dispensary owner will tell the story of what they did in 2026. You're writing yours right now.
Dutchie Pro Preferred Partner · Bud Authority clients only · 12 slots Q2 2026