I won’t call it an AI agent — though that would be the fashionable label. It was a CRM for cold-calling companies, with two AI layers on top. One turned out to be blind. The other — genuinely good. And still, the most important part of the whole thing is the most boring code I wrote in it.
I built it, it works, nothing broke. The problem is subtler: the value landed somewhere completely different from where I thought it would (not true).
What I actually built
It worked like this: you pull companies from Google Places, open the calling screen, hit RECORD, the recording attaches itself to the lead, and a status funnel walks you through the sale. Two AI layers on top: one before the call — it reads the company’s website and hands you context plus a script; one after the call — transcription, analysis, and a quote by email.
Concretely, the sales process went like this: I call → introduce myself and ask for a moment → offer a free 20-minute consultation → if they want it, I ask for a text with their email address and send them a message (if they don’t send it, it wasn’t worth it anyway); if they’re not interested, I say fine, get in touch if you change your mind (position of strength, no time wasted) → I send a meeting link (by hand, or once I have the email, I paste it in and send from the app), a confirmation of the slot and a polite closing line → after the consultation I do an analysis or a demo → a quote.
And that is exactly what the lead statuses in the system mirror: NEW → CALL_BACK → NOT_NOW (with a follow-up date) → NO → CONSULTATION BOOKED → LINK SENT → AFTER CONSULTATION → QUOTE → CLIENT / LOST. The whole system is essentially a machine for pushing companies through that one funnel.

The status funnel right there in the UI. The whole system is a machine for moving companies through these stages.
What happens when I actually walk through it
Then I walked step by step through what really happens — and it turned out that what I considered the core is blind, and something else is doing the work.
First: someone has to make those calls. That’s the entire problem. Not the technology — the calls. And an engineer doesn’t like calling people. I built a machine that perfectly organises the activity I avoid myself. That’s not a product. That’s a guilty conscience with a progress bar.
Second: a number from Google Maps is almost always the reception desk. Either that, or you have to go to the website and hunt down the direct line to the CEO yourself. Either way, to get through to someone who decides, you need a salesperson who knows how to get through. That skill isn’t in any API.
(Someone will ask: why call at all, when you can buy emails from Apollo and run a cold campaign? Because I don’t trust Apollo — especially in Poland. First: if everyone has the same addresses from Apollo, I’m one of many writing to them — and I land in spam. Second: the database for the Polish market is thin. I’m saying this on intuition, not hard data — but it’s enough to send me back to the phone.)
Third — and this was “the AI part” that failed first: fetching the website + the cheat sheet + the pre-call script turned out to be useless. Company websites are irregular, thin, chaotic. The salesperson has to visit them anyway — because they won’t trust an AI summary for something they’re putting their own face behind. And once they’re there, a glance or pasting the content into ChatGPT gives them a better script, faster, than my elegant pipeline. That’s my streetlight, planted where there is no sensible entrance at all.
But there’s a second half — and I’m honestly proud of it, because it works: post-call transcript analysis. You record the consultation, transcribe it, and AI extracts what actually happened — the client’s pains, what was agreed, the next steps — and assembles a quote by email, so that you’re not staring at a blank page the moment you hang up. Here AI finally does something useful, because for the first time it gets real material: not a chaotic company website, but the record of a live conversation a human just extracted.
One thorn: GDPR. You take a recording of someone’s voice, transcribe it, and send it to a model — you’re processing another person’s personal data externally. A small problem, not a death sentence. But it didn’t exist while the conversation stayed in my head (or maybe it did).

The GDPR thorn built into the UI: until you tick consent, the RECORD button stays locked.
And one more thing that looks like a feature: the sheer rigidity of that funnel — either you walk it with me step by step, or you drop out — genuinely sells. Just not because there’s AI in it. It sells because it’s the scarcity principle: I have a process, I’m selective, whoever doesn’t move to my rhythm falls away — and what’s selective gains value. That’s Cialdini from the eighties, not GPT from 2025.
What actually holds value here
So what in this system actually holds value? Two things — and both on the same side of the line.
One dull as dishwater: the CRM itself. Save the recording, attach it to the lead, set the status. Code you could have written in 2010, without a single token. The other clever, and I’m proud of it: the transcript analysis that turns a conversation into a quote.
Look at what they have in common: both only enter the game after the call. After a human got past reception, held the conversation, and drew the truth out of a stranger. AI doesn’t acquire that material — AI organises it.
Why we look in the wrong place
And here’s the pattern I can’t unsee anymore.
You know the parable:
A drunk man is looking for his keys under a streetlight. You ask where he lost them — he points at the darkness a few metres away. “So why are you looking here?” — “Because the light is better here.”
Architecture — the agent loop, RAG, tool calling, evals — is our streetlight. Bright, warm, we know our way around it, a weekend’s work. So that’s where we look for value. And the keys — sales, trust, getting past reception, the conversation itself — lie in the darkness we don’t like and don’t look into. Not by accident: we aim at architecture not because that’s where the problem is, but because it’s the part we know and enjoy.
AI is excellent at illuminating and organising whatever you bring back from the darkness. It just won’t go into that darkness to get it.
The sad conclusion I can’t work around: an AI engineer still needs people. A human walks into the darkness and comes back with a conversation. We — and our models — turn it into a decent note and a nice quote. Useful, genuinely. But we’re not the ones who won the client.