
The hard part of an AI product is not the AI. I learned this the way most founders do, by building the thing first and discovering the actual problem second. My product is an AI voice agent for service businesses, the kind of company that loses real money every time a call goes to voicemail. A dental office that misses an after-hours emergency call loses a patient to the next clinic on Google. An HVAC company that cannot pick up during a heat wave loses a $400 job. The pitch writes itself. The software, it turns out, also mostly writes itself now. What does not write itself is getting a single one of those businesses to pay attention. This is a teardown of both halves: how the system is architected, and why the part I assumed was the moat (the engineering) turned out to be the cheap part, while the part I assumed was trivial (distribution) turned out to be the whole game. The Build is Boring on Purpose Here is the architecture: Inbound call | v Voice layer (speech-to-text, LLM, text-to-speech) | v Orchestration layer (workflow engine) | | | v v v Calendar CRM / Sheets Notifications booking logging (SMS / email) \ Three layers, each one a commodity: Voice layer. A managed voice platform handles the real-time pipeline: transcribing the caller, running the language model, synthesizing a reply, and doing it fast enough that the latency does not feel robotic. A few years ago, this was a research project. Today, it is a config screen and an API key. \ Orchestration layer. This is where the actual business logic lives. When the agent decides a caller wants to book an appointment, it fires a webhook into a workflow engine that checks calendar availability, books the slot, logs the lead, and sends a confirmation. I run this on a single self-hosted VPS. The whole thing is a directed graph of "when this happens, do that." \ Integration layer. Calendar, a lightweight CRM, SMS and email. All off-the-shelf. \ The most interesting engineering decisions were not about making the AI smarter. They were about constraints: Latency budget. A conversation dies if the agent pauses too long before responding. Every integration call in the critical path is a threat to that budget, so anything that does not need to happen before the agent speaks gets pushed to an async branch in the orchestration layer. The caller hears a natural reply; the logging and the CRM write happen after. \ Self-hosting to control cost. A single VPS runs the orchestration in a container with execution-data pruning turned on, because workflow engines happily fill a disk with run history if you let them. I plan to move to a dedicated box the day there is a paying customer to justify it, and not one day sooner. Pre-revenue, every recurring dollar gets scrutinized. \ The compliance fork in the road. The obvious version of this product is outbound: an AI that cold-calls businesses or their customers. I killed that idea early. In the US, automated outbound calling runs straight into TCPA and FCC rules, and the downside of getting it wrong is not a strongly worded email, it is statutory damages per call. So the entire product is inbound only. The agent answers calls that the business already wants answered. That single constraint shaped everything downstream, and it is a good example of regulation forcing a cleaner design rather than a worse one. Everyone Can Build This When the marginal cost of building the product approaches zero, the product stops being the moat. I knew that as an abstract truth. I did not feel it until I had a working demo, a clean landing page, a list of around 1,600 qualified businesses, and a reply count of zero after reaching out to all of them. Zero is a clarifying number. It does not let you blame your subject line. It forces you to look at the parts of the funnel you were proud to ignore. Here is what it taught me. The inbox is a technical product, not a writing exercise. I had treated cold outreach as a copywriting problem, when the real bottleneck was underneath it: domain authentication, sender reputation, and the slow warmup before a new sending domain reaches a primary inbox at all. The best email in the world lands in spam if the domain is cold. Delivery was the bottleneck, not the words. Distribution deserves the same rigor as the system diagram. I had an architecture diagram for the software and nothing equivalent for how a stranger becomes a paying customer. The voice agent had a latency budget and failure handling. My go-to-market had a hope. Channels are not interchangeable. I defaulted to the channels I understood instead of the ones my buyers use. A dentist or a plumbing-company owner is not scrolling a professional feed looking for AI vendors. Reaching them is slower and less comfortable than the channels a software person reaches for by instinct. A good product is the price of entry, not the win. The engineering is the fun part and the part you control, which is exactly why it is the trap. A working product with no distribution loses to a mediocre product with a real distribution engine. The market does not grade your code. What I would tell myself before the build The system you are about to build is the easy 20 percent. Before you write a line of orchestration logic, spend real energy on how a human in your market will ever hear about this and decide to trust you. Concretely: validate the channel before you build, by trying to start ten real conversations with nothing but a description. Treat deliverability as infrastructure, measured in weeks, not an afternoon. Let constraints shape the build, the way TCPA forced my product inbound-only and made it simpler. And draw the distribution diagram before the architecture diagram. If you cannot map the path from stranger to paying customer as precisely as a request flow, you do not understand your business yet. I did not. The AI is a commodity. So is the orchestration, and so are the integrations. The one thing that is not is being the company a skeptical small-business owner trusts with their phone line. I built the easy part first. I am still building the hard part. :::info Author’s note: I am the founder of an inbound AI voice agent for dental, HVAC, plumbing, and electrical businesses. The lessons above come from doing it in the wrong order so you do not have to. ::: \
View original source — Hacker Noon ↗

