The Question
A small business owner knows their category and area, but needs a useful starting point for competitor research. This MVP turns those inputs into a candidate shortlist, comparable listing fields and explicit questions to investigate. It is an independent ZaidanLab portfolio build, not a client deployment, a comprehensive market study or evidence that a business opportunity exists.
Try the Explorer
Open the competitor explorer →
Start with coffee shops in Bandung or Melbourne, or laundry businesses in South Jakarta. Every name, rating, review count and positioning label in sample mode is fictional. Change the radius, filter by rating or price indicator, sort the list and select up to four businesses for a comparison. The area sketch is an illustration, not a street map or real business locations. Unsupported sample category/area combinations are rejected, not silently relabelled.
A Real Connector, Gated Separately
The Cloudflare Pages Function implements Google Places API (New) Text Search: one request resolves the area, and a second requests up to 20 category matches. It filters out-of-radius listings by straight-line distance from the resolved centre, removes exact normalized company-name matches and excludes permanently closed listings. The optional company name does not geolocate the store; the resolved centre and candidate relevance need manual verification. There is no pagination, website crawling, scraping or model call. The connector requires a server-side API key, an explicit enable flag and a separate private access code; without them live search stays unavailable. This page does not claim that deployment credentials, billing or a real provider search have been verified.
Evidence Before Conclusions
Comparison fields include distance, listed category, rating, review count, broad price indicator and website availability when supplied. Missing fields remain unavailable. Deterministic prompts identify a review-volume benchmark, listing patterns and data gaps, with links back to the relevant candidates. They do not invent product ranges, demographics, opening hours, sales, market share or guaranteed differentiation. A sparse or empty search result does not prove a gap in the market.
Data Handling and Cost Controls
Sample mode needs no Places request. Live input is sent over the same-origin endpoint; the category and area go to Google, while the company label is used for exact-name exclusion. API keys remain on the server and access codes are never saved in browser storage or query strings. Live results stay in page memory, without application search history, caching or export. Google Maps and third-party provider attribution remain visible; listing links open Google Maps rather than plotting Google data on the illustrative sample sketch. Private access and a best-effort per-instance throttle reduce casual use but are not a global spending cap: the operator must configure Google-side API quotas and review billing. Separate regional page analytics never receive the search form data.
Validation and Limits
Automated model and mocked-provider tests cover input validation, radius filtering, duplicate and self exclusion, missing fields, fixed-host requests, access controls, no-store responses and safe failure without substituting samples. DOM interaction tests cover presets, filters, the comparison limit, safe rendering and stale-response cancellation. These are not real Google account, browser-layout, accessibility certification or market-accuracy tests. The cover is an original workflow diagram. Provider activation, actual field availability and real-device layout need independent verification before broader live use.