

Multi-tenant SaaS for multi-location brands to manage Google Business Profile listings, reviews, posts, Q&A and rank, with metric-first reporting and an invite-only admin panel.

Client
Date
July 2026
Duration
3 weeks
Technologies
13 tools
Nearwise is a location-visibility platform for brands with many physical locations, such as coffee chains, clinic groups, fuel networks and franchises. It connects to each location's Google Business Profile and gives the team one place to manage listings, reviews, posts and Q&A, then shows impressions, calls and direction requests per location and rolled up across the brand. I designed and built the whole product myself: the marketing site, the multi-tenant dashboard, the Google integration, the admin panel for provisioning customers, and the scheduled jobs that sync and publish. It is a personal product, not client work. Access is invite-only and sales-led, with accounts created by a super admin.
Agencies that manage Google listings for big brands usually work in spreadsheets and the native Google interface, which breaks down past a few dozen locations. The product had to keep each customer's data fully separated, store Google OAuth tokens safely, and cope with Google API quotas and failures without losing edits. Publishing to public listings is risky, so changes needed review before going live. The homepage also had to stay honest: only Google Business Profile is live, so no claims about other publishers could be made. All of this had to run on a small hosting plan with no sub-daily Vercel cron jobs.
I built it on Next.js 16 with Prisma and PostgreSQL, using Better Auth for sessions and an organization and member model so every query is scoped to the tenant. Google OAuth tokens are encrypted with AES-256-GCM using a key separate from the auth secret. The schema covers locations, location groups, publisher sync state, reviews with replies and tags, Q&A, scheduled posts with per-target status, metric snapshots, rank keywords, change requests and an audit log. Member edits go through a maker-checker approval queue, and failed publish targets can be retried. Sync and publish run from GitHub Actions cron workflows. A super-admin panel and a create-admin script handle invite-only provisioning. The site also ships a sitemap, robots, manifest, OG image and JSON-LD.
Delivered a working multi-tenant application with a public marketing site, auth flows, a ten-page customer dashboard (dashboard, locations, reviews, posts, Q&A, insights, rank, activity, settings, help), an admin area, legal and security pages, and a go-live checklist for domain, environment variables and Google API access. The repo includes Vitest tests, a CI workflow, a seed script with a demo tenant and a health endpoint for deployment checks. It is deployed on Vercel with Supabase Postgres. Real Google data depends on Google approving Business Profile API quota, which was still pending when I finished.





