Understanding how a large organization's buying function really works, where it is strong, where it is broken, how mature it is, used to be a two to three week exercise. A small team ran structured interviews with five or six senior people, typed the answers into spreadsheet after spreadsheet, and then a group of analysts pored over those workbooks to assemble a diagnostic deck. The whole expensive effort rested on whoever happened to sit in those few interviews. It was not slow because the conversations were slow. It was unsound, because five or six voices were being asked to speak for an organization of hundreds, and nobody could hear the rest.
There is a second trap. The most valuable thing in any of those rooms is disagreement: the head of operations swears the intake process works, and the clerk who actually files the requests says it is broken every single day. Roll those interviews up into a tidy average and you erase the single most expensive finding in the building. The real product was never a faster interview. It was hearing everyone, and surfacing exactly where they contradict each other.
A mobile-friendly web app that an entire procurement organization can talk to, out loud, so the discovery that used to reach five or six people now reaches everyone. A person just speaks, in a normal conversation, and the app reasons alongside them: it draws on a built-in knowledge base of what a strong buying function looks like to ask sharper, probing follow-ups, works out how capable the person and their team are and how they actually get things done, and quietly maps every answer onto the specific hypotheses and factors it is there to test. Underneath the conversation, a separate analyst brain scores each answer and decides the most valuable thing to ask next before the voice replies. Every interview then folds into one shared, org-level picture that surfaces where people agree and, more importantly, where they sharply disagree, with each view attributed to who actually said it. I built the whole thing alone: the voice loop, the analyst brain that steers it, the knowledge base and grounding that keep it sharp, and the intake that routes every person to their own interview. It runs live and is in active development.
Two clocks, running at once
A person speaks at the speed of conversation. In the silent beat after they stop, a slower analyst brain scores the answer, finds the highest-value gap still open, pulls the right context, and writes the next question. The voice only speaks once that question is ready. The fast clock keeps it human; the slow clock keeps it rigorous. Neither waits on the other in a way the listener can feel.
Test hypotheses, not vibes
The conversation feels open, but underneath it is methodical. The app carries a structured model of the factors that make a buying function work well, and it treats each one as a hypothesis to confirm or rule out. As a person describes how they actually do things, the analyst brain maps what they said onto those factors, scores how capable the team looks on each, and tracks which factors are still untested so it can steer the next question toward them. By the end it has filled in a known frame, not just collected a transcript.
Take turn-taking away from the voice
The voice model is muted by default: it is structurally forbidden from replying on its own. A separate, deterministic controller is the only thing allowed to start a turn. That single inversion is what lets the slow analyst brain decide every question instead of letting a chatty model run the room, and it is what makes the whole thing feel like one calm expert rather than an eager chatbot.
Referee the race between the human and the models
Most of the hard code is handling collisions. If the person keeps talking while a scoring pass is mid-flight, the system quietly drops the question it was about to ask so the topic does not silently move on without them. Fragmented, stop-start speech is gathered into one real turn before anything reacts. Stray auto-replies the model tries to emit on its own are suppressed by id. None of this shows on a good day. It is simply what running two clocks costs.
Ground it so it never name-drops
The base voice model already knows too much, and left alone it will confidently name real tools and the real client mid-sentence. So before it improvises, the system pins a short expert briefing on the topic at hand, refreshed when the conversation moves. Then, as a last line of defense, a deterministic scrubber rewrites any forbidden term out of every sentence right before it is spoken. You cannot trust a probabilistic model to reliably not say a name, so the guarantee is made by plain code, not by hoping.
Route every person to their own interview
The bottleneck on interviewing hundreds of people was never interview quality. It was setup: tailoring each conversation to what that specific person actually owns. So an intake step maps the whole org, each person finds themselves in it, and they are auto-routed into a role-scoped interview before being handed to the voice. That mundane screen, not the AI, is what turns 'interview six' into 'interview everyone.'
Roll many interviews into one diagnosis
Every interview feeds a single shared picture with each reading attributed to the speaker who gave it. Where people genuinely disagree on the same point, that gap is elevated as the headline finding, with the most positive and most negative voice quoted side by side. The picture also knows where it is thin, and steers later interviews toward the questions only certain people can answer, so coverage closes instead of piling up on whoever talks most.
Scope each person's interview
One generic interview script is the wrong tool for a whole organization. A senior leader and the person filing the requests live in different parts of the work, and asking each of them the same questions wastes the leader's time and overwhelms the junior. So before anyone speaks, the app places them in the org and routes them into an interview scoped to what they actually own, pitched at the right altitude: leaders get asked about direction and blockers, the people doing the work get asked about the specific steps they run. It costs a setup layer most voice demos skip, but it is what makes the conversation respect each person's time and only ask what they can truly answer.
Ground it to probe like an expert
Left to itself, a voice model asks shallow, generic questions and fills the gaps with whatever its training suggests. That makes for a friendly chat and a useless diagnosis. The decision was to feed the model a working brief of what a strong version of this function looks like, on the topic at hand, before it speaks, and to refresh that brief as the conversation moves. So its follow-ups land like someone who already knows the terrain and asks the sharp second question, not the obvious first one. The grounding is there to raise the quality of the questions, not just to keep the model on script.
Aggregate without averaging
Many interviews could be rolled into one tidy score, but a single number hides the places where people see the same thing differently, and those gaps are often where the real story is. So instead of averaging, the picture keeps every reading attached to the person who gave it, and where two people describe the same process in opposite terms, it holds both side by side rather than blending them away. The org-level view is built from named voices, not an anonymous summary, so a finding can survive the obvious question of who actually said it.
Being one turn stale is a price worth paying
The expensive scoring does not block the reply. The voice answers against the last completed picture, while the heavy analysis runs in the background and is consumed as context for the next question, not this one. Letting the answer be a single turn behind is what keeps the conversation human-paced. That staleness is a deliberate, accepted tradeoff, not a bug.