GeoGrid
Show a local business exactly where it vanishes from Google — and whether AI recommends it — in a report that ends with a plan, not a pitch.
A local-search auditor for service-area businesses. It answers the question an owner cannot answer by googling themselves: not “do I rank?”, but “where do I disappear?” — then asks the AI assistants the same question, and writes the 90 days of work that follow.
- Open the sample report — A real 7×7 audit on a dental practice, anonymised
- Its 90-day plan — The month-by-month plan the same audit produced
- Who it's for
- Service-area businesses — dentists, roofers, plumbers, clinics, gyms — and the agencies and consultants who sell them local search.
- Who it isn't for
- Not for national ecommerce, and not a rank tracker you log into every Monday. GeoGrid is a one-shot audit that produces a document and a plan, not a dashboard that produces a habit.
- What it replaces
- A per-seat geo-grid subscription, or the afternoon you'd spend googling from six different postcodes and still not have anything you could send.

A real 7×7 audit on a dental practice, anonymised.
What it’s like
without it.
A roofer, dentist or plumber googles their own business from the office, sees themselves at the top, and concludes local search is handled. Three miles away — where half their customers actually live — they are not on the map at all.
Rank is not one number. It is a surface that changes with every mile you move. Nobody shows that surface to the business owner in a form they can act on, and the reports that do measure it stop at the measurement.
Meanwhile the search box is moving. When a customer asks ChatGPT, Gemini, Claude or Perplexity for a dentist instead of Google, being invisible there is a second, newer hole — and a 4.9-star listing with no presence on the directories those assistants read from is exactly the business that falls into it.
What’s different the day you start using it.
You see your own service area, with your name on it
Every point on the grid is a real Google search for a real keyword, from that spot. The report maps where you rank, where you drop out of the top three and where you are nowhere — point by point, keyword by keyword — then scores it, and shows the derivation of every score.
You find out whether AI recommends you
The same audit asks four assistants for a business like yours in your own neighbourhood and records whether they name you — and, when they don't, which competitor they name instead. Every answer is quoted, so a disputed zero can be checked by retyping the question.
You get the next 90 days, written for you
The report ends in a month-by-month plan: specific actions with steps an office manager could execute, each grounded in a number the audit measured, each with the figure that should move by month-end. A guard rejects any line that invents a number or promises a result.
You get a file, not a login
The deliverable is one self-contained HTML page that behaves like an app — a hub of scored sections, each a page of its own — and prints straight to PDF. It opens offline and survives being forwarded to a business partner who will never create an account.
Everything in the box.
Every line below is built and running. Nothing here is a roadmap item wearing a tick.
The scan
- A geographic grid of map searches — up to 9×9 points — with every keyword searched at every point, concurrently
- Catchment-aware geometry: a dentist is measured at neighbourhood zoom and half-mile spacing, a roofer at city scale — because nobody crosses a city for a cleaning
- The business is matched by its Google place identity, so an audit can never silently profile a similarly-named competitor
- A dry run prints the grid and the exact credit cost before a single API call is made; a live progress panel shows each step as it completes
What comes out
- One overall score and a score per section — visibility, reputation, website, Google profile, listings, organic, AI — with the derivation of each printed in an appendix
- Average rank, top-3 share, coverage and dead-zone count; the competitors occupying the space where the business vanishes
- AI-assistant visibility across OpenAI, Google, Anthropic and Perplexity, with every engine's answer quoted and the named rival identified
- Review reply rate and response time, unanswered reviews quoted verbatim; website checks, page speed and the marketing tags actually installed
- Cited competitor and market research, with uncited claims discarded and contradictions against measured checks removed before rendering
- A 90-day plan — month by month, action by action, with steps and an effort word on each — plus a plain-English “what this means for you” line per section
Built for three markets
- India, the UK and the US, each with its own search locale — a UK audit is scored against UK Google
- Per-market citation sources, researched rather than guessed — an Indian report names Practo and Justdial, not Yelp
- 23 niche packs — dental, roofing, legal, HVAC, vet, salon and more — each with its own keywords, prompts, catchment and directories
- The niche is detected from the business's own Google category, so a dentist gets dental keywords without anyone choosing from a dropdown
- White-label export: the report and plan carry an agency's name, logo and accent colour, with every link back to me removed
Run by invitation. No subscription, no seats.
The public checkout is switched off: audits run on access codes I issue, and the product's home page takes a free-check request. The report arrives as a permanent link and an email; the 90-day plan is its own page. The sample is a real audit on a dental practice, anonymised — open it and you have seen the whole deliverable.
- A free visibility check on request — the sample shows exactly what comes back
- Agency use is metered per audit, with per-code caps on grid size and keyword count, so a plan can never quietly cost more than it was sold for
- White-label delivery — the report under your name, every link to me removed — is priced per engagement on a call
The stack,
without mystique.
Standard, boring technology your next developer will recognise. That’s the point — nothing here is a proprietary runtime you’d be locked into.
- Language
- Python
- Hosting
- Vercel serverless — one function
- Database
- None for the audit itself. Upstash Redis for metering, stored reports and live progress
- Search data
- Serper — map, organic and reviews
- AI layer
- OpenRouter — Perplexity Sonar Pro for research, four web-connected assistants for AI visibility, Claude Opus for the plan
- Report
- Jinja2 + inline SVG, one self-contained file
- Metering
- Access codes compared in constant time; caps denominated in search credits, reserved before the run
- Tests
- 1,110 automated tests
What you’re trusting when you use it.
Anyone can list features. These are the calls that decide whether the thing survives contact with real customers and real money — explained without jargon, because you should be able to judge them without being an engineer.
- 01
The model is never allowed to touch a number
Every figure in the report is computed in Python from API data. The AI layer only writes prose about a finished set of facts — and a guard checks that prose against those facts, rejecting any number that does not appear in them. It retries once, then falls back to deterministic template text. An audit that quietly hallucinates a figure is worse than no audit, so the architecture makes it impossible rather than unlikely.
- 02
Unknown reads “not measured”
Where a value could not be established, the report says so and the score is computed over the sections that were measured — never over a zero. A website that blocks the checker is reported as “blocked”, not “broken”. This is the difference between a document a business can act on and a document that merely looks like one.
- 03
The plan is held to the same contract as the report
A written plan is the easiest place for a model to promise results. So the writer gets the full fact bundle and the competitor research, and its draft is rejected for any number not in the facts, any promise, any cadence word that isn't tied to an event, and any claim about map cells that the scan did not make. Two failures and the deterministic rule-table plan ships instead.
- 04
Identity comes from the link, not a guess
A pasted Google Maps URL already contains the listing's identity. The audit reads it and checks it first, so a same-named neighbour can never take over the report — the failure that once listed a healthy business as its own top competitor.
- 05
The yardstick matches the trade
A 7×7 grid at one-mile spacing is a six-mile ruler. Fine for a roofer; wrong for a dentist, who competes across a neighbourhood and was being scored invisible in places no patient would ever search from. Each niche now carries its own zoom, spacing and catchment, and the AI question names the neighbourhood rather than the city.
- 06
Spend is reserved before the run, corrected after
Cost scales with grid size times keyword count, so every code carries caps in the unit actually paid for — search credits — and the estimate is reserved before the first call and corrected to actual afterwards. A tool that spends real money per click needs a brake before it needs features.
- 4
- AI assistants asked, every answer quoted
- 23
- niche packs
- 3
- markets — India, UK, US
- 0
- numbers written by a language model
One bespoke copy has been sold and delivered to a single agency client, for $250. The public checkout is switched off while the tool runs by invitation and white-label; the sample is a real, anonymised audit. That is the entire commercial history of this tool.
Want one of these for your business?
GeoGridtook the shape it did because of one specific business problem. Tell me yours and I’ll tell you what it would take — and if GeoGrid is already most of the answer, running on it beats rebuilding it.
Got a project to scope? Start there. Want to watch real software work first? Take the back-end demo — CommunityOS or GrowthOS, you pick.