Territory Agent

An agent that canvasses a city so your team can clean it.

Our client runs commercial cleaning, businesses only, no households, with teams on the ground in several cities. The service was proven and the capacity was there. What was missing, in every city, was the same thing: knowing which companies to talk to. Which businesses have offices worth a contract, who is big enough to need regular cleaning, who just moved into a new space. That knowledge exists, scattered across public registries, directories, and company websites, and gathering it by hand for one city is weeks of work. We built an agent that does the gathering, the qualifying, and the first contact. The client's people show up to conversations, not to cold streets.

Hermes runtime Public-source research Email + SMS outreach Per-city playbooks Supabase

Commercial cleaning is won locally, one building at a time. For every city where the client had teams, growth meant answering the same questions from scratch: which companies operate here, which of them run offices rather than empty registered addresses, which are the right size, and how do you reach the person who decides about facility services. The answers were all technically public, in business registries, directories, and the companies' own websites, but assembling them into a usable list was a research project nobody had time to run.

So outreach ran on whatever was at hand: personal contacts, drive-by observations, the occasional purchased list of dubious freshness. The result was uneven coverage, in every city the client was reaching a fraction of the businesses that were genuinely a fit, and had no way to know how large the unreached remainder was.

Expansion made it worse. Every new city reset the problem to zero. The client did not need a bigger sales team. They needed the city mapped.

> map

For each city, the agent runs deep research across public sources: business registries, directories, company websites. The output is a map of the city's companies, who exists, where they sit, what they do, and how large they appear to be.

> qualify

Raw companies become a qualified shortlist. Office-based businesses of contract-worthy size are kept, empty registered addresses, home offices, and out-of-profile industries are filtered out. Every kept company carries a note on why it qualified.

> profile

Shortlisted companies get an individual profile: their business, their premises, and the angle that makes cleaning relevant to them specifically, a growing team, a client-facing space, a recent move.

> reach

First contact goes by email to the company's official address, written around the profile, offering the client's service in that city. Every message carries a working opt-out.

> follow

Where email brings no response, a short SMS follows to the company's publicly listed business number, two sentences, the offer and a way to decline. Channels are sequenced, never simultaneous, and the total number of touches per company is capped.

> handoff

Any reply, email or SMS, ends automation for that company and lands with the client's local team, profile attached. The agent opens doors. People walk through them.

Does

  • Deep-researches each city's companies from public sources into a qualified map
  • Documents why every shortlisted company qualified, the list is auditable, not a black box
  • Runs sequenced email and SMS outreach to official business contacts, B2B only
  • Caps touches per company and honors every opt-out permanently
  • Hands every reply to the local team with the full company profile attached

Does not

  • Contact private individuals or households, businesses only, through their official channels
  • Buy contact lists or use anything that is not publicly available
  • Blast both channels at once, SMS exists only as a measured follow-up, not a second barrel
  • Keep contacting a company that said no, one decline closes the record for good

Layer I · Visual Architecture

One diagram: city in, research, qualification funnel, profiles, sequenced outreach, replies out to the local team. The funnel shape is the point, the system is designed to throw most of the city away and contact only the slice where the offer genuinely fits.

Layer II · Contracts

The qualification criteria are a written contract: what counts as a fit, what is excluded, how many touches a company may receive, and what the messages may promise. The outreach rules, opt-out handling, channel sequencing, contact caps, are part of the same document. Restraint is specified, not improvised.

Layer III · Technical Diagrams

Per-source research adapters, the qualification pipeline, profile assembly, channel sequencing logic, and reply routing to the right city team, specified before implementation. The city playbook structure was designed once so that every new city is a configuration, not a project.

Layer IV · Implementation

Hermes runtime on a dedicated isolated instance. Research across public registries and directories, email plus SMS delivery through the client's business channels, Supabase holding the city maps, company profiles, contact history, and the permanent opt-out index.

runtime        Hermes
research       public registries, directories, company websites
qualification  contract-defined criteria, auditable shortlist
channels       email first, SMS follow-up, capped touches
state          Supabase (city maps, profiles, history, opt-out index)
handoff        replies routed to the client's local city team

The ghost company

Registries are full of businesses that exist on paper only. Qualification cross-checks registry entries against directories and web presence, an address with no observable activity is filtered out before anyone writes to it.

Stale contact data

A directory listing from four years ago is a bounce waiting to happen. Contact details are verified across sources before use, and bounces feed back into the map so the same dead address is never tried twice.

The SMS line

SMS is the channel with the least patience for abuse, which is why it is last, short, capped, and aimed only at publicly listed business numbers. One decline, by any channel, closes the company across all channels permanently.

Repeat contact across cities

A company with offices in two of the client's cities is one company, not two prospects. Deduplication runs on the company, not the address, so nobody gets the same offer twice from two directions.

The stale map

Cities change, companies move, open, and close. The map is refreshed on a cycle, and re-qualification runs before any new outreach wave, so campaigns always fire against the city as it is, not as it was.

4

cities mapped and in active outreach

2,000+

companies researched per city on average

~15%

of researched companies survive qualification

weeks

from entering a new city to first booked walkthroughs

0

spam complaints across both channels since launch

Figures from the first months in production across the client's active cities.

The list is the moat. The outreach gets the attention, but the durable asset is the map: a qualified, documented, continuously refreshed picture of every business in a city worth talking to. Campaigns come and go, the map compounds. The client now knows their addressable market per city as a number, not a feeling.

Throwing companies away is the value. The qualification funnel discards roughly 85% of what the research finds, and that discard rate is the product working. Every filtered-out ghost company is an email that did not waste anyone's time and a reputation cost that was never paid.

A city is a playbook, not a project. The first city took design work. The fourth city took a configuration file. When growth is systematized this way, "should we expand to another city" stops being a resourcing question and becomes a scheduling one, which is a different and much better business to be in.

Your next city is already mapped. You just have not run the agent yet.

> ../book_a_call.sh