Built and written with Claude as a coding and writing assistant.

The Need

The best advice I got from my Entrepreneurship professor in college is to "fall in love with the customer" before building anything for them. In practice, discovery is slow: recruiting, scheduling, transcribing, coding, synthesizing, and myriad other steps often take weeks before a single insight reaches the roadmap.

I wanted to test a specific question: could an AI-run discovery process get me to a real, defensible product insight, and where would it fall short of a human researcher and human subjects?

So, I built a tool, ran it on a real product space, and looked hard at what it actually produced, including the parts that broke.

Note on the data

How I was thinking about this going in

<aside> 💡

I started by thinking, “where does the synthesis phase usually fall apart?” I learned that AI is an expert at handing you really convincing insights with basically nothign backing it up, and you’d have no way to know if you didn’t practice the due diligence on its output on your end.

So I built the whole thing around two main rules: Nothing counts as a finding until it is backed up with a real quote from the transcripts/sources it is provided, and nothing moves forward unless a person looked at it and said yes.

</aside>

Here’s How It Works (Big picture)

IMG_86D7324D4EAD-1.jpeg

1. You describe a persona You enter details about your project and potential participants. To generate synthetic interviews, you provide specific information about them so there is more to actually mine for insight instead of getting generic non-answers. Vague personas give you vague interview insights, and we would like to avoid that.

2. It simulates an interview Same 6-question guide every time, so you can actually compare across people later. If I let it freestyle a new set of questions each run, there'd be nothing consistent to synthesize afterward.

3. A separate pass extracts themes Generating the interview and extracting themes from it are two different calls on purpose. That way I can check each stage on its own instead of trusting one big black box output.

4. A human reviews everything Every AI-generated finding/insight/implication shows up with its quote right next to it. Nothing moves on until someone clicks accept, edit, or reject. (We can ofcourse write code to let AI take over this step, while the user rubber stamps the output)

5. Themes get built only from what's been approved The tool clusters the quotes and findings that a person has already signed off on. Frequency and severity are tracked separately, so one serious issue mentioned once doesn't get buried under three mild ones mentioned a lot. (How does the AI decide what is serious vs not?)

6. Roadmap prioritization with human override option RICE scoring is genuinely useful framework, but ultimately the person decides the scores.

7. Everything exports into one report Findings, themes, roadmap, limitations.

<aside> 💡

Basically every step came down to: if I only saw what the AI spit out, with no way to check or edit it, would I actually trust it? If not, that step needed a quote, a confidence level based on evidence, or a person in the loop before it went anywhere. It's the same gut check I’d use when evaluating any qualitative research honestly, I just had to actually build it into the tool instead of applying it in my head.

</aside>

How it's actually built

Stack is Python, Streamlit for the interface, Gemini's API for the model calls, pandas for the tabular stuff.

In simple words, the app asks you for a persona and a research question. It sends that to Gemini and asks it to simulate an interview. Then it sends that interview back to Gemini a second time and this time asking it to pull out themes, pain points, and quotes. Every single thing it pulls out has to be a quote you can actually check against the transcript. Then it stops and waits for a person (you) to go through every one of those findings and decide if it's actually right before anything moves forward. Only the ones I approve get used to build themes and a roadmap later.

For anyone who wants the technical version: