Retainer · upstream of AEO · Michigan dispensaries

Local SEO for Michigan dispensaries. The layer AEO inherits from.

We ship the Google Business Profile, the schema.org blocks, the entity record, and the neighborhood citations a Michigan dispensary needs to be the citation upstream its AEO layer reads from. Without it, the AI assistants name a competitor instead of you.

Talk to us about local SEO

Local SEO ships inside the retainer. Submitted intake starts the four-step engagement.

What we ship

Four pillars. The citation graph the AEO layer lifts from.

One pillar per surface. Each pillar stands as a deliverable and a check the AI assistants run when they decide whether to name your dispensary or a competitor in the answer.

Google Business Profile

What we ship

A full GBP buildout per location: primary and secondary categories, attribute set matched to the license class, hours that match real-world hours, weekly posts, and a photo cadence that keeps the listing from drying out.

Where it lands

The map pack, the local finder, and the citation block that Gemini and AI Overviews read as the canonical name-and-address answer for a Michigan dispensary.

Why it matters

The map pack is where an AI assistant starts reading whether a dispensary exists. A sparse GBP reads as a thin local entity across every model we query downstream.

Schema and structured data

What we ship

A schema.org shipment per location and per menu page: LocalBusiness with all of the cannabis-specific property extensions, Menu and MenuSection on the storefront, and Product nodes with strain lineage, THC percentage, and terpene profile where the menu vendor supports it.

Where it lands

The JSON-LD blocks the menu vendor publishes, the schema.org blocks the in-house developer ships, and the citation panels Google AI Overviews lift into the answer.

Why it matters

Schema is the surface the assistants lift. A LocalBusiness, Menu, and Product shipment is the difference between a citation and an absence in the AI answer.

Entity work and NAP

What we ship

Name, address, phone, license, hours, and store URL consolidated across every surface that publishes them, with a single canonical record a citation vendor can reconcile to and an agency can re-use without divergence.

Where it lands

Citation directories, Wikidata, license-tie aggregators, your own site, your menu vendor, and the disambiguation between your store and your brand.

Why it matters

Every citation surface that disagrees with another splits your store in the entity graph. Two records of your store at the same address read as two competitors to the model.

Neighborhood citations

What we ship

A citation plan built per city, not at the brand level: cannabis-friendly directories, Michigan-specific aggregators, neighborhood press, and the city-level pages that link to your dispensary rather than to the brand.

Where it lands

Per-city citation graphs, the link neighborhoods the assistants scan when a shopper asks for the best dispensary in a specific ZIP, and the local press surfaces AI Overviews lift into the citation panel.

Why it matters

Brand-level citations do not fire for a ZIP-level query. A shopper near Ypsilanti is not asking which dispensary has the best brand mentions. They ask which dispensary lives in their city.

In the retainer

Two headline builds. Two supporting reviews. One retainer.

Every local-SEO engagement ships the same four pieces. What changes is the content inside the GBP buildout, the schema shipment, the NAP review, and the fix list.

GBP audit and buildout
A per-location GBP audit plus the buildout the audit names. The audit reads as a list of attributes that are sparse today, the buildout ships the listing a Michigan dispensary would keep if it had a person owning it each week.
  • Per-location pass / fail list with categories, attributes, hours, and the cannabis-specific fields filled.
  • Weekly post and photo cadence with a calendar document your team can hand to anyone.
  • A monthly GBP health check that catches new gaps before they read as stale in the local pack.
Schema and structured data
A schema.org shipment per location and per menu page. LocalBusiness, Menu, MenuSection, and Product where the menu vendor supports it. The shipment ships as JSON-LD blocks a developer can paste and a Markdown doc a menu vendor can read.
  • JSON-LD blocks per location, ready to paste, with the cannabis-specific extensions included.
  • Menu and Product schema the menu vendor can ship without a custom build, plus a doc naming the parts that need a developer.
  • A validation report naming the schema that passes Google Rich Results and the schema that needs a second pass.
NAP hygiene review
A name-and-address scrub across every citation surface your store appears on. Mismatches listed by severity, with the canonical record a vendor can hand to a citation network to reconcile them.
Prioritized fix list
The order to ship fixes in, the cost of skipping each fix, and the names of who could ship the wired pieces (your developer, your menu vendor, your agency). The list is rooted in the AEO audit when one exists, in the GBP audit when it does not.

Pairs with the AEO audit

Local SEO builds the citation graph. AEO measures who lifts from it.

The two halves of the engagement layer. Local SEO ships the surfaces the assistants read. AEO reads those surfaces and names which prompts still leave the answer blank. Run the local-SEO retainer first, then the AEO audit on top.

Local SEO is the upstream layer
The citation graph, the schema.org shipment, the entity record, and the neighborhood citations are the surfaces an AI assistant reads before it names a dispensary. Get those wrong and the AEO audit reads every prompt as a gap. Get them right and the AEO audit is a refinement, not a rescue.
AEO is the downstream layer
Once the local-SEO surfaces are clean, the AEO audit can read which assistants cite your dispensary, which competitors own the answer, and which prompts still leave the answer blank. The two engagements layer: local SEO builds the citation graph, AEO measures which assistants actually lift from it.

Who the retainer is for

Three operator profiles that contact us first.

The local-SEO retainer fits operators who already know the map pack is a gap but do not yet have someone shipping the schema, the entity work, and the citations. Three profiles that show up in intake most often.

Single-store Michigan dispensaries
You own the local pack for your city. The map pack is where the AI assistants start reading whether you exist. The local-SEO retainer is the engagement that ships the GBP, schema, entity record, and citations a single-store owner cannot build alone.
Multi-store brands and operators
Each location needs its own GBP, schema, and citation graph. Brand-level work on its own does not fire for ZIP-level queries. The local-SEO retainer handles each location individually while keeping the brand-level entity graph consistent.
Marketing leads whose menu vendor works against them
The menu vendor ships its own markup, and the markup does not include the schema fields the assistants read. The local-SEO retainer reconciles the menu markup with the citations and entity work without going to war with the vendor.

The four-step engagement

From submitted intake to an ongoing retainer.

The local-SEO engagement runs the same four steps every time. What varies is the city set, the competitor surface, and the gap the GBP audit reads on day one.

  1. 01

    Intake and city set

    A five-field form at /contact. Your dispensary, your license, your city set, the menu URL, and the competitor name you keep losing the map pack to.

  2. 02

    GBP audit and entity scrub

    Per-location GBP audit, name-and-address scrub, and entity graph check. The audit names what is missing today and the surfaces that need a developer versus a citation vendor.

  3. 03

    Schema shipment and citation plan

    JSON-LD blocks per location, schema shipment to the menu vendor, and a per-city citation plan with the directories and aggregators that fire for a ZIP-level query.

  4. 04

    Ongoing retainer

    Weekly GBP posts, monthly schema checks, quarterly citation refresh, and the AEO audit running in the second month so the local-SEO upstream layer gets measured against the AI answers that follow.

“AEO is what an assistant answers today. Local SEO is the citation graph that makes that answer possible. Every recommendation in the retainer is rooted in a Michigan surface we can ship this month, not a national tactic a vendor is pitching you.”
Randi Bagley, dispensaryAEO
Local SEO retainer · Michigan dispensaries · upstream of AEO

The local-SEO retainer ships the graph. The AEO audit measures who lifts from it.

One practitioner ships the GBP, the schema, the entity work, and the citations. Randi reads every submission and replies within one business day.

Talk to us about local SEO

Same practitioner. Same person shipping the build.