The work
SalesAgencies

Somebody on a phone call says a website address, and the research that used to follow the call happens during it.

Liberators

There is no interface. The whole product is one call and one spoken paragraph.

The situation

How this used to work

A voice agent on a phone call is a much narrower thing than a chat agent. It cannot show a table, it cannot open a document, and it cannot make six tool calls while somebody waits on the line listening to silence.

It also cannot read JSON aloud. Anything handed back to it has to already be a sentence, in the right order, with no formatting in it, because the next thing that happens to that text is a synthetic voice saying it.

So the usual shape of an integration, a set of small composable tools the model orchestrates, is exactly wrong here. Every extra call is a pause the person on the phone can hear.

What we built

The system

One tool. It takes a URL and returns a paragraph. Everything else is hidden behind it.

Inside that single call the site is scraped, the business type and the technologies are worked out, three opportunities are drafted, a formatted report is generated, the report is emailed to the address found on the site, and the lead is written into the CRM. The caller waits once.

There is a second tool for one situation only: when no email address could be found on the site and the person on the call offers one. It sends the report from the previous analysis rather than running the whole thing again, so the caller does not sit through a second scrape for a report that already exists.

The output is deliberately prose. It opens by naming the company, states the industry, numbers the three opportunities, and finishes by saying where the report was sent. That structure is not decoration, it is the running order of a sentence somebody is about to speak.

How it works

The pipeline, step by step

01 / Read

The site, and the addresses on it

The page is scraped to plain text and every email address in it is pulled out by pattern. That address is what the report is going to be sent to, so finding it is part of the same pass rather than a later step somebody has to trigger.

02 / Work it out

What kind of business is this

The industry and the technologies in use are inferred from the text, each constrained to a short answer so the result is a category rather than an essay. Every one of these has a defined fallback, so a failure here degrades the answer instead of ending the call.

03 / Draft

Three opportunities, in the site's own language

The content's language is detected first, so a Greek site is not answered in English. Then three specific opportunities are drafted against what the business actually appears to do.

04 / Send

The report goes out during the call

A formatted report is generated and emailed to the address found on the site, while the conversation is still happening. The thing that usually gets done afterwards, by somebody, if there is time, is finished before the call ends.

05 / Speak

One paragraph, no formatting

What returns is a single block of prose assembled in speaking order, and nothing else. No markdown, no fields, no structure for a model to interpret. The voice agent's job is reduced to reading.

06 / Fail out loud

Every branch still returns a sentence

A site that blocks scrapers, an analysis that does not complete, a page with no email on it: each has its own written reply that a person can hear and act on. An error that reaches a phone call as silence or as a stack trace is worse than no tool at all.

What changed

The result

It is deployed and connected, and calling it returns a real answer: asked about two of our own sites it came back with each one's actual page title, so the reading half of the pipeline is genuinely running.

The analysis half is not currently producing recommendations. Both checks fell through to the written fallback, which is what the code returns when the drafting stage does not complete, and both reported the industry as the default value rather than a detected one. The system degrades exactly as it was built to, which is the part that works. It is not delivering reports today.

The design idea is the transferable part and it survives the status. A voice agent is not a chat agent with a speaker attached. It gets one call and one paragraph, and building for that constraint means putting the orchestration on the server where the caller cannot hear it.

Two versions of it exist, identical underneath and pitched differently: one offers automation opportunities and files the lead in the CRM, the other offers landing page improvements and posts to a webhook.

The stack

Server

  • Python
  • FastMCP
  • Railway
  • single-tool surface

Pipeline

  • Firecrawl v2 scrape
  • GPT-4o
  • HTML report
  • Gmail API over OAuth2

Built for

  • vAPI
  • Bland AI
  • Retell AI

Status

  • live and connected
  • scrape working
  • analysis stage failing

Free 30 minute call

Let's find where AI fits in your business

A 30 minute call, free, no commitment. You leave with two or three things worth building, whether or not you work with us.

Free, no commitmentYou own everything we buildNo slide deck