dialessa Have it call me

Build in public

Splitting the blog from the build log, a voice playground, and fixing gaps in live calls

Today was a long one: 1 working session with coding agents, 15 prompts, 33 commits, 5 deploys and about 7 hours of active work. The diff came to 31854 lines changed, though much of that is new pages and a new engine that isn't live yet. The website and a background worker went to production.

Separating the writing

Until now, the search articles and the build-in-public posts were mixed together. I've split them. The blog now holds the articles meant for search, and the daily posts live in their own build log. Both are linked from the top nav and the footer, so neither gets buried.

I also automated the build log. A background process turns each day's work into a summary, and I check it on a review page before it goes up. One thing I had to correct early: the summaries were treating my prompts as finished work. If I asked for something, the summary would say it was done. Now a prompt counts as a request, not an outcome. It's a small wording rule, but without it the log would quietly overstate what I'd shipped, and that defeats the point of writing in public.

A voice playground

Visitors can now hear example calls on the website, sorted by industry and situation, and each one uses a different voice. The full voice list has its own page.

I trimmed that list so it only shows voices that actually work on live calls, with the recommended ones at the top. Showing a voice that sounds great in a sample but can't be used on a real call would just set people up to be disappointed.

A shorter demo form

The demo request form used to ask for everything at the start. Now it asks only for the essentials, then collects optional details while the phone is ringing. People are waiting anyway, so that seemed like a better time to ask than making the form longer.

What broke on live calls

Most of the hard work was in the voice agent. I fixed several problems on live calls:

  • Silent gaps where nothing was said
  • Requests to stop that could be missed
  • Opening lines getting cut short
  • Some lines never being spoken at all

There was a related bug where the agent played only the tail end of a rendered line instead of the whole thing. With greetings, that meant a call could start in one voice and change partway through. Now the agent plays the full line, and greetings stay in the same voice.

These are the kinds of bugs that make a voice agent feel broken even when the logic is right. A caller doesn't care why there's a pause. They just hear dead air and assume nobody's there.

A new conversation engine, not live yet

I also built a new live conversation engine for the voice agent. It's being kept separate from production for now and isn't live.

What I took away

The common thread today was being honest about what's real: summaries that don't claim work is done when it was only requested, a voice list that hides voices that can't handle a real call, and fixes for gaps a caller would hear straight away. Polishing the surface is easy. Making sure it matches what actually happens takes more work.

Written from that day's build log: the work sessions, commits and deploys recorded for it.

← All posts