Client requirements in.
Qualified companies out.

A client sends a spec, a brief or just a chat message: who to find, by which signs, what each lead card should include. Lead Hunter turns it into criteria, shows what it understood, and searches Ukraine's state business registry, maps and websites.

No sign-up needed. All data is anonymized.

The client sets the criteria, not the code

The first version did one thing: find businesses that already pay for ads. The first real spec asked for the opposite: newly registered companies without a website, where having a CRM is a reason to skip them. So the signal direction became a field that is read from the document.

What you upload
Lead generation spec.pdf PDF, DOCX, plain text or a chat screenshot

A language model reads the document. It also makes the most important call: are we looking for companies with infrastructure or without it. A mistake here flips the whole selection, so the result is shown for review before the run.

What the tool understood
  • Directioncompanies with no digital presence
  • Ageup to 90 days since registration
  • Verticals9, with priorities A+ / A / B
  • Must-haves5
  • Card fields18, in the order given in the spec
  • Not availableactivity code (KVED), the open registry does not include it

Parsed from a real six-page spec. The tool added the last line on its own.

Pipeline

Each step is either backed by data or says plainly that it is not. The script does not message anyone: a person sends every message.

  1. 1

    State business registry

    Ukraine's state business registry (EDR), open data from the Ministry of Justice: a 330 MB archive, 3.2 GB of XML, updated weekly. It is read as a stream, so a full pass over 2,017,706 records takes about ten seconds.

    The only free source that gives the registration date and the director's full name. In the run on September 10, 2026, the director was found for 100% of the selected records. So the "decision maker" field in the card is filled without paid services.

  2. 2

    Maps and directories

    Google Places or OpenStreetMap, when the target is local businesses with an address rather than a registration date.

  3. 3

    Website search

    Tries likely domains and checks who owns them. A match with the domain name alone does not count, because it only proves itself.

  4. 4

    Tech footprint

    Ad pixels, telephony, CRM, chat widgets, online booking, shopping cart, mobile layout, domain age via RDAP.

  5. 5

    Qualification

    Code checks the mechanical conditions. The model decides the industry and the need. The two are kept apart: the first is proof, the second is judgment.

  6. 6

    Lead cards

    A report in the format the client asked for, plus CSV and Markdown. Each card explains why this company and why now.

Real numbers from the demo

Real runs. Each number is a funnel step: how many businesses were left after it.

Dental clinics, Kyiv

  • 483scanned
  • 114website opened
  • 54pay for traffic
  • 48record calls
  • 38passed both filters
  • 25in the first-contact queue

Car repair shops, Kyiv

  • 250scanned
  • 71website opened
  • 26pay for traffic
  • 28record calls
  • 17passed both filters
  • 15in the first-contact queue

New LLCs, all of Ukraine

  • 2,017,706registry records
  • 6,010registered within 90 days
  • 1,701within 30 days
  • 120passed the website audit
  • 106have no website at all

The demo uses anonymized data: names are replaced with pseudonyms like "Dental Clinic D-017", addresses are reduced to the district, and phones, domains and tag IDs are hidden. Scores, reasons and the company facts in each first message are real, from the runs on August 28, September 4 and September 10, 2026. This English version is translated from Ukrainian, and the offer part of each first message is replaced with a placeholder.

What it does not do

A list of limits is more useful than a list of features. It shows where proof ends and guessing begins.

  • It does not make up the activity code or the address. The open registry has not included them since 2022. The industry is inferred from the company name and website, and the activity code (KVED) in the card stays empty. The client is told this up front.
  • It does not scrape search engines. Google and Bing return an anti-bot page, and getting around that protection is not something you can show a client. So search presence stays a manual check: every card has ready-made links, and checking one lead takes seconds.
  • It does not count a website unless ownership is proven. A domain that matches the company name only proves itself. The page must show the company's registry code (EDRPOU) or its name in Cyrillic. A weak match passes only if the domain age does not contradict the company age.
  • It does not message anyone on its own. It drafts the first message. A person sends it.

Under the hood

  • Node.js, ESM
  • No dependencies in the pipeline
  • Streaming read of 3.2 GB of XML
  • Ukraine's open EDR registry
  • Google Places API (New)
  • Overpass / OpenStreetMap
  • GTM container unpacking
  • RDAP for domain age
  • Gemini via Vertex AI
  • JSON · CSV · Markdown · HTML output

Unpacking GTM is the key finding. The website only shows an empty container GTM-XXXX, but the container itself sits at a public URL, and inside it is the Google Ads conversion tag. Nobody installs that tag "just in case": it is free proof that the business is paying for ads right now. It stands in for the Meta Ad Library, which is not available for Ukraine.

See what the queue looks like

Dental clinics and car repair shops in Kyiv: score, priority, signals, review quotes and a sample first message for each lead.

Open the demo
Lead Hunter demo: lead table and an open lead card with signals and reasons