Geo-Grid Rank Tracker.
An internal tool that checks a business's Google Maps ranking from every point of a map grid. I took it from a teammate's v1 to a secure, deployed product.
A teammate built v1: the scan engine, the API and the first UI, including comparisons and a PDF report. I made it production-grade: Argon2 sign-in with hashed session tokens and lockout, Postgres, test-gated CI/CD with database migrations and health checks, and read-only share links for clients that can expire or be switched off. I also redesigned the app around map, competitor, comparison and insight views, and rebuilt the client PDF report around the questions a business owner actually asks.
- Role
- Full-stack, team of 2 · Softaims
- Time
- 2026
- Stack
- FastAPI · SQLAlchemy · Alembic · PostgreSQL
- Access
- Private: internal tool
Constraints
It replaces paid grid-tracking tools, running scans at the data provider's cost price. Clients had to see their results without an account, while the agency's costs, newer scans and every other client stayed private.
Key decision
A share link pins the newest finished scan and serves nothing newer, through a token-scoped, read-only copy of the private API: links can expire after 7, 30 or 90 days or be switched off at any time, cost fields are stripped, and no-store headers mean a revoked link can't linger in a CDN cache. I also changed scan-to-scan comparisons to use only the grid points both scans answered, so a partial scan can't fake a ranking change.
- Share: Making a share link pins the newest finished scan. The link can be set to expire after 7, 30 or 90 days.
- Open: The client's request reaches a token-scoped, read-only copy of the private API, with cost fields stripped. Responses are marked no-store, so the CDN keeps no copy.
- New scan: The link serves nothing newer than its pinned scan, so new scans in the private app never reach the client.
- Revoke: When the link expires or is revoked, it's gone, and there's no cached copy in the CDN to linger.
Share. Making a share link pins the newest finished scan. The link can be set to expire after 7, 30 or 90 days.
Live, in internal use
Stack
FastAPI · SQLAlchemy · Alembic · PostgreSQL · React · Vite · TanStack Query · Leaflet · ReportLab
Want to talk about this build?
I'm open to remote full-time roles and freelance work, and happy to walk through the decisions behind it.