← AI Agents & Automation

Lead-hunt

A public agency register turned into a scored list of leads.

Problem

KRAZ, the state register of employment agencies, is open to anyone and useless: several hundred entries with no phone, no website, and nothing that says whether the company does what you need.

Solution

A seven-stage pipeline that turns a list of names into a call queue. Contact details and ratings come from maps first. Then a language model reads each company's own website and answers what the register never says: does it house people, at what scale, in which sectors. A second pass drops whatever is not an agency, and a score from zero to a hundred sets the order. The result waits in a database until an agent reads it out on Discord.

What it does

  • Pulls the public employment-agency register, several hundred names at a time
  • Adds phone, website, rating and review count from maps
  • A language model reads the company site and fills in housing, scale and sectors
  • A second pass drops anything that is not an agency
  • Scoring 0-100: housing 30, scale 25, reach 15, credibility 15, contact 15
  • The result lands in a database an agent reads from Discord

How it's built

  • Seven Python scripts run in order, each writing its own CSV
  • Stage two resumes from a progress file, so an interruption does not cost the whole run
  • Trafilatura extracts the company page, Gemini reads it across threads
  • A separate classification pass answers only one question: is this an agency at all
  • Scoring in plain pandas, with a ceiling for anything carrying a disqualifying marker
  • The result lands in Firestore, read by the agent's own skill

What it changed

  • 481 names from a public register turned into 214 leads carrying a phone, a website and a rating. 266 dropped out before anyone called them
  • 480 companies scored in a single run; by hand that meant opening every one of their sites in turn
  • That run took about a month: this is not an evening's work, it builds the calling queue once
  • 209 confirmed as real agencies by a separate classification pass
  • Mean score 34.3 of 100; highest 100. The call queue orders itself
  • How many of those 214 picked up the phone is not recorded here: nobody measured it

Stack

  • Python
  • pandas
  • Gemini
  • trafilatura
  • Firestore
  • Google Sheets

Story

Scoring has a safety ceiling: if the model's note contains a disqualifying marker, the score cannot pass twenty-five whatever else is true. Without it, one well-written website pushed the wrong company to the top.