Studio retrospective

CallAPM. Voice-first PM expertise on demand.

One phone number. Real-time strategic conversation in, structured artifacts out. Built to make senior product judgment reachable in the ten minutes someone actually had for it.

2024–2025·Consumer voice AI·Status: archived

The thesis

The cheapest senior product manager in the room is the one you do not have to hire. Founders, individual PMs, and small product teams kept hitting the same wall. A decision worth ten minutes with a senior PM. No senior PM in reach. No Slack channel where one was idling. No calendar slot for two weeks. The decision got made badly or got deferred. We thought the right surface for that conversation was not another chat window but a phone call. Voice is the medium people use when they want to think out loud. It was also the medium nobody had wired to a competent product manager.

We picked the most legible packaging we could find. A vanity number that spelled what it did. No app to install. No account to create before the first call. Dial, talk, get artifacts.

What we shipped

The product was one phone number, 1-680-CALL-A-PM, and a website at callapm.ai. The number connected the caller to “Alex,” a voice persona tuned to be a succinct PM buddy. Visual thinker. Opinionated. Willing to push back. Partial to sequence diagrams. Alex moved between four modes the user could slip in and out of: mock interview, guided coaching, hands-on task help, and casual second opinion. The conversation was full-duplex and low-latency, with interruption handling and barge-in. Alex could be cut off mid-sentence the way a person can.

When the user hung up, the work began. The transcript was captured turn by turn during the call, parsed into structured JSON, and run through a summarization pass. From the conversation the system inferred which artifacts the caller actually wanted. A one-pager. A sequence diagram. A feature brief. A framework applied to their problem. Markdown got rendered into a PDF with Mermaid diagrams baked in by headless Chromium. The PDF went to S3 with a signed URL. An SMS landed on the caller’s phone within a few minutes of hanging up, with a link into a dashboard at callapm.ai where every past call, every transcript, and every generated artifact lived.

Identity was the phone number. There was no signup before the first call. A short opt-in flow ran after the fact, linked the number to a session, and turned on text delivery. Returning callers were texted automatically.

Capabilities the work demonstrated

Several pieces of this stack are the work clients ask us into now.

  • Realtime voice bridge.Twilio Media Streams handed raw audio over a websocket. A Fastify gateway proxied it to OpenAI’s Realtime API in both directions, with interruption, speech detection, and Twilio buffer clearing wired correctly enough that the audio felt like a phone call rather than a chatbot reading aloud. Callers noticed the difference inside a second.
  • Voice persona engineering. The system message was a real piece of product work. Format-for-TTS rules. Mode-switching logic. Casual fillers. Anti-bullet-point instructions for spoken delivery. We learned how much of the perceived quality of a voice agent lives in the prompt, and how much lives in the audio path.
  • Asynchronous artifact pipeline.Transcript parse, summarization, artifact-type classification, Markdown generation, Mermaid render, Puppeteer-to-PDF, S3 upload, signed URL, SMS dispatch. A small agent pipeline by today’s standards. At the time, a fair amount of plumbing.
  • Phone-number-as-identity.Supabase Auth driving SMS OTP for verification, plus a separate token-based file access flow so a recipient could open the link from the text without signing in. The pattern shows up wherever the user’s first touch is not a browser.
  • SMS compliance work. A2P 10DLC registration, opt-in language, opt-out handling, carrier filtering. Unglamorous. Required.

What we learned

CallAPM did not become the company. The retrospective is what travels.

The first lesson was about the cost stack of voice. Realtime audio is not text. Per-minute model cost, telephony cost, and the synthesis quality required to keep a caller on the line all push in the same direction. Free first calls were the right acquisition move and the wrong unit economics. We did not solve that, and the solution probably involved a tighter scope and a paying customer profile we never identified cleanly.

The second lesson was about the habit of a phone call. The hypothesis was that people would dial a number to think. Some did. The ones who did, did it once, found it useful, and did not come back for weeks. The use case was real and episodic, and episodic use cases are hard to build a consumer business around. The dashboard with the transcript history mattered more than we expected, because it was the thing that kept the relationship warm between calls.

The third lesson was about the post-call work. We thought the conversation was the product. The artifacts were the product. The diagram a founder could paste into a deck, the framework a PM could forward to their manager, the sequence diagram of the user flow they had just talked through: that was what made the call worth taking. Voice was the interface. The PDF was the deliverable. Every voice agent we have touched since starts from that assumption.

The fourth lesson was about who we are. CallAPM lived inside the same pattern as Tadah. A real-time pipeline taking unstructured input and producing structured output, with all the orchestration and evaluation work that implies. The same patterns now run inside client engagements where the input is a meeting recording or a customer call and the output is the report someone’s manager actually reads. The product did not need to keep running for the discipline to keep traveling.

Status

No longer in service. The number is dark. The codebase is archived. The patterns from CallAPM, real-time voice ingress, structured artifact generation, phone-as-identity, run inside client systems today.