Inspiration
Every small business owner has googled their own shop and felt that gut-punch of seeing a competitor sitting at #1 with worse food, worse service, or a website from 2012 — with zero idea why. Local SEO agencies charge thousands of dollars a month to answer a question that should take 30 seconds: "what are they doing that I'm not?" We wanted to build the tool that democratizes that answer — no consultant, no jargon, no monthly retainer. Just a business owner typing in their shop name and getting a straight, actionable answer powered by the same live search data the algorithm actually uses.
What It Does
You enter your business name, business type, and location (e.g., "Sunrise Coffee Co.", "coffee shop", "Austin, TX"). The app:
- Pulls live local/map pack results via SerpApi's Google Maps engine for that query.
- Locates your business within those results by name match, and pulls the competitors currently ranking above you (or the top 5, if you're not showing up at all).
- Sends your listing and those competitors' structured data — rating, review count, category/type, address, phone, website, hours — to OpenAI, which reasons comparatively about why they're outranking you.
- Returns a plain-English summary, a breakdown of the specific ranking factors driving the gap (e.g. "Competitor has 340 reviews at a 4.8 average — you have 12 at 4.2"), and a prioritized action checklist (each item tagged high/medium/low priority with its expected impact).
- Saves every search — target business, full local results, and the AI analysis — to a local SQLite database, so past scans are browsable from a History tab and nothing needs to be re-run to review it later.
How We Built It
- Frontend: A vanilla PHP single-page app (
index.php) — no framework/build step. Bootstrap 5 + Bootstrap Icons for layout, jQuery for AJAX and DOM rendering, Google Fonts (Poppins/Inter) for type, and a lightweight hand-rolled router that swaps between the "New Search" and "History" views without a page reload. - Data layer: SerpApi's
google_mapsengine (includes/SerpApiClient.php) for real-time local pack results — position, rating, review count, category, address, phone, website, and hours for every listing in the query. - AI layer:
includes/OpenAIClient.phpcalls the OpenAI Chat Completions API withresponse_format: json_objectand a system prompt that forces the model to reference the actual numbers in the payload rather than generic advice, returning a fixed JSON shape (summary,reasons[],checklist[]) the frontend renders directly. - Backend: Two small endpoints —
api/analyze.php(runs a new scan: SerpApi → match → OpenAI → persist) andapi/history.php(list/view/delete past scans) — both plain PHP, no framework. - State: SQLite (via PDO) stores every scan — target business, full normalized SERP results, and the AI analysis JSON — powering the History tab. No external DB server required.
Challenges We Ran Into
- Entity disambiguation: Matching the user's typed business name to the correct listing in noisy Maps data (common names, near-duplicate branches) currently uses a case-insensitive partial-string match; a manual "is this you?" confirmation step is the natural next iteration for chains/common names.
- Turning raw data into causal insight: SerpApi gives us what competitors have, not why it works. We spent significant effort prompt-engineering the AI (structured JSON in, constrained JSON schema out) so every recommendation ties back to a specific data point instead of reading like boilerplate ("get more reviews!").
- Zero-dependency PHP: Building the SerpApi/OpenAI clients as thin raw-cURL wrappers (no Composer/SDK) kept the app deployable on any plain PHP host, but meant hand-rolling error handling, timeouts, and JSON response validation ourselves.
- Graceful degradation: If the target business isn't found in the current local pack at all, the app still returns the top 5 competitors and general recommendations instead of failing outright.
Accomplishments We're Proud Of
- Built a fully live, end-to-end pipeline — real search input → real competitor data → real AI-generated, evidence-backed recommendations — with no mocked data.
- The action checklist reads like something a paid local-SEO consultant would deliver, generated in seconds, with priority/impact tagging out of the box.
- Zero build tooling required: the whole app runs on stock PHP + a couple of CDN-hosted frontend libraries, so it deploys to virtually any shared host.
- Every scan is persisted automatically, so the History tab doubles as a lightweight audit trail with no extra effort from the user.
What We Learned
- SerpApi's structured local data (
google_mapsengine) is rich enough on its own — rating, review count, categories, and profile completeness — to build a legitimate first pass at competitive intelligence without needing a separate reviews-text pipeline. - The hardest part of "AI-powered insight" tools isn't generating text, it's forcing the AI to reason comparatively and specifically rather than defaulting to generic advice — a constrained JSON output schema mattered more than model size.
- Small business owners don't want more data, they want fewer, ranked decisions — the checklist mattered more than the raw comparison table.
What's Next for LocalRank Radar
- "Is this you?" confirmation step: Let the user pick their exact listing from a short list of candidate matches instead of relying purely on name matching.
- Radar/spider chart comparison: Visualize you-vs-top-competitor across rating, review count, profile completeness, category match, and recency as a 5-axis chart.
- Review-keyword theme clustering: Pull review snippets for top competitors and cluster them by theme (e.g. "fast service", "parking") to make the "why" even more concrete.
- Automated re-scanning & alerts: Scheduled re-scans with notifications when a competitor overtakes you or a new opportunity opens up.
- One-click action execution: Integrate with the Google Business Profile API so checklist items (updating categories, requesting reviews) can be actioned from inside the app.
- Multi-location dashboard for franchises/chains to monitor rank health across all locations at once.
- Industry benchmarking: Aggregate anonymized data to show "average scores" by industry/city so businesses know what "good" actually looks like.
Log in or sign up for Devpost to join the conversation.