How geo-grid scans work
A geo-grid scan starts with a center point — usually the customer’s business address — and a service-area shape (a polygon, like a metro boundary, or a radius). The generator places N×N cells inside that shape, where N is the density (3, 5, or 7). For each cell, the system runs a localized SERP query anchored to that cell’s lat/lon, matches the customer’s Google Business Profile in the result set, and records the rank.
The final artifact is a rank vector — one integer per cell — that gets rendered as a color-banded heatmap. Where you rank top 3 stays green; where you fall off the map stays red. The implementation lives in backend/app/core/etl/geo/grid_generator.py and the per-cell SERP scrape is a DataForSEO Maps request pinned to the cell coordinates.
Why grid scans beat single-point checks
A single rank check tells you where you appear from one geocoded location — usually the centroid of your business address. The trouble is that “your rank” for a service-area query is genuinely a function of where the searcher is standing. Two blocks apart, the local pack can flip entirely.
A geo-grid scan exposes that variance. Where a single check says “you’re #4”, a grid scan says “you’re #1 in your immediate neighborhood, invisible three miles east, and rank #18 in the suburb where your competitor opened a second location.” That’s the difference between a number you can report and a heatmap you can act on.
Choosing a grid density
Density is the matrix dimension and the per-scan cell count. The tiers in backend/app/schemas/grid.py are:
- LOW (5×5, 25 cells). Right for rural service areas where the next neighborhood is 20 minutes away and a block-by-block view doesn’t add signal.
- MEDIUM (10×10, 100 cells). Default for most service-area businesses. Resolves city-wide variance without burning credits on duplicate cells.
- HIGH (15×15, 225 cells). Dense urban metros where the SERP flips block by block and you need the resolution to see it.
Density only affects cell count — the per-cell methodology is identical across tiers, so a HIGH grid is just a MEDIUM grid with more resolution, not a different product.
Knowledge Panel ownership detection
When a query matches a specific business name (rather than a category like “plumber near me”), Google sometimes returns a Knowledge Panel instead of the standard local pack. From the searcher’s perspective, owning the Knowledge Panel is the strongest signal a brand can have — it’s the entire SERP branded for you.
Our geo-grid pipeline detects this case via backend/app/core/etl/audit/knowledge_panel.py (P-13). Cells where your business owns the Knowledge Panel get a crown overlay on the heatmap on top of the normal rank color band, so you can distinguish “ranks #1 in the pack” from “owns the entire Knowledge Panel” at a glance.