Software · Own tool

Who operates here,and who is missinga website?

A local tool for market research on a region. It finds businesses by location and sector, filters by rating and website presence, and lays the contact details out side by side. Everything stays on your own machine.

Role
Concept and engineering
Period
since 2025
Stack
Python, FastAPI, SQLite, HTML, CSS, JS
Status
Beta, runs locally

The functions

Four of them, each answering part of the same question: which businesses operate in a region, how they stand, and how to reach them.

  1. 01

    Regional search

    Location with live suggestions via OpenStreetMap and Photon, up to six sectors at once, a radius from one to fifty kilometres. Nationwide instead of a fixed location as an option.

  2. 02

    Pre filters

    Minimum rating and website present or missing apply during the run. What does not fit is never enriched, which saves the bulk of the runtime.

  3. 03

    Contact details

    Phone number automatically, email address on demand from the company website. Plus rating, review count, distance and opening status.

  4. 04

    Post filters and export

    Free text search across name, sector and address on the loaded result, a toggle for website present or missing, CSV export of the filtered selection.

The starting point

Market research on a region almost always starts the same way. Who operates here, how visible are they, and where is a digital presence obviously missing? By hand that research costs hours, location by location and sector by sector.

What remains is a spreadsheet nobody opens again, because gathering it took longer than the question was worth. The tool bundles exactly that step.

The interface

Built deliberately without a build tool: plain HTML, CSS and JavaScript in front of a FastAPI backend. Running it takes Python and nothing else.

  1. 01

    Search form

    Function
    Location with suggestions, up to six sectors at once, radius, minimum rating and website presence as pre filters, plus a nationwide mode
    Benefit
    The filters apply before collection, not after. Looking only for businesses without a website means not waiting for the others to be enriched first.
  2. 02

    Results

    Function
    Post filters on the loaded result, free text search across name, sector and address, a summary of website and email coverage, CSV export of the filtered selection
    Benefit
    From 148 hits down to the subset that actually matters, without running the search again.
  3. 03

    One card per business

    Function
    Sector, rating, website, distance and opening status as tags, phone number automatically, email address on demand from the company website
    Benefit
    Whether a business is worth a closer look is decided on the card. No switching to Google Maps and back.
Captured from a real run. Company names, addresses, phone numbers and email addresses have been replaced with invented ones for this page; ratings and coverage figures come from the run itself.

Limits that come with it

The tool reads publicly visible information from Google Maps. That conflicts with their terms of use, and the interface says so on the spot. The licensed route to the same information is the Places API, billed per request. For an analysis of this size that would be the clean but paid path.

The tool is meant for internal market research, not for cold outreach. That distinction is not a formality: approaching a business without prior consent is only narrowly permitted under German competition law, and analysing a region says nothing about who may be contacted.

There is no shared instance and no server on the internet. Anyone using it installs their own, and the collected data sits in a SQLite file on their machine. That is a deliberate decision: a central service holding the same data would be an entirely different proposition, legally and in how it treats the businesses concerned.

Status

The tool is in beta, runs locally and is still being developed. The source is open, and the readme covers setup and operation including the limitation above.