Building an AI Interview Coach for Product Discovery Training

product_talk · Education · 2024 · source Agentic: no · promotional bias: low · source-backed · extracted with prompt 0.5.4 (schema v2)

Generated from extraction.json — do not edit by hand. Every claim cites verbatim source evidence; stated means the quote directly asserts the claim, implied means it supports it indirectly.

Problem

Domain: Product discovery training feedback

Product Talk needed to give students useful feedback on practice customer interviews at course scale without mis-teaching story-based interviewing or mishandling real customer transcript data.

Constraints:

Architecture

The Interview Coach evolved from custom GPT/Claude prototypes into a production workflow. Students submit transcripts through LearnWorlds; consent and privacy filtering gate processing; Airtable stores traces; Anthropic API calls evaluate rubric dimensions; the system emails feedback to students and Teresa; error analysis turns trace annotations into code-based and LLM-as-judge evals; and the production path is moving from Zapier to AWS Lambda and Step Functions with Vistaly for SOC 2-compliant real interview transcripts.

Diagram confidence: explicit (topology described by the source).

flowchart LR
  student[Student] --> learnworlds-course-platform[LearnWorlds Course Platform]
  learnworlds-course-platform --> zapier-workflow[Zapier Workflow]
  zapier-workflow --> airtable-trace-store[Airtable Trace Store]
  zapier-workflow --> anthropic-api[Anthropic API]
  zapier-workflow --> email-feedback[Email Feedback]
  email-feedback --> student[Student]
  email-feedback --> human-reviewer[Human Reviewer]
  human-reviewer --> airtable-trace-store[Airtable Trace Store]
  airtable-trace-store --> eval-notebook[Eval Notebook]
  eval-notebook --> aws-lambda[AWS Lambda]
  learnworlds-course-platform --> aws-step-functions[AWS Step Functions]
  vistaly[Vistaly] --> aws-step-functions[AWS Step Functions]
  aws-step-functions --> aws-lambda[AWS Lambda]
  aws-lambda --> anthropic-api[Anthropic API]
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
Student Course participant submitting practice or real interview transcripts for feedback. LearnWorlds Course Platform, Email Feedback
LearnWorlds Course Platform Course platform that collects transcript assignments and consent. Student, Zapier Workflow, AWS Step Functions
Zapier Workflow Early automation layer that filtered consent, stored transcripts, called LLM prompts, and emailed feedback. LearnWorlds Course Platform, Airtable Trace Store, Anthropic API, Email Feedback
Airtable Trace Store Trace database and annotation interface for transcripts, LLM responses, errors, and release logs. Zapier Workflow, Eval Notebook, Human Reviewer
Anthropic API LLM provider used for rubric-dimension feedback prompts. Zapier Workflow, AWS Lambda
Email Feedback Delivery channel for AI-generated feedback to students and monitoring copies to Teresa. Student, Human Reviewer
Human Reviewer Teresa and future instructors who inspect outputs, annotate traces, and correct feedback when needed. Airtable Trace Store, Email Feedback, Eval Notebook
Eval Notebook Jupyter/Python environment for error analysis, code-based evals, and LLM-as-judge evals. Airtable Trace Store, AWS Lambda
AWS Lambda Production function runtime for Interview Coach code and eval execution. AWS Step Functions, Anthropic API, Eval Notebook
AWS Step Functions Production orchestrator for Node.js and Python parts of the workflow. LearnWorlds Course Platform, Vistaly, AWS Lambda
Vistaly SOC 2-compliant product discovery platform for real customer interview transcripts. AWS Step Functions

Data flow

A student submits a transcript and consent through the course platform; a Zap or later Lambda/Step Functions workflow stores the trace, runs separate LLM calls for rubric dimensions, formats JSON into feedback with excerpts and tips, emails the student and Teresa, runs evals against the resulting trace, and feeds errors back into prompt/model/temperature changes.

“Once they submit this assignment, it triggers a zap. You can see this is triggered by a LearnWorlds assessment.”transcript, stated
“So when a student uploads a transcript either to Vistaly or through the course interface, um my my um Interview Coach code runs.”transcript, stated

Why this architecture

The system evolved as real usage exposed failure modes. Chat interfaces were abandoned because students wanted multi-turn coaching that the tool was not designed for; one long prompt was split into rubric-dimension calls; traces became the evaluation substrate; and AWS/Vistaly replaced Zapier/Airtable where reliability and SOC 2 handling mattered.

“I realized that I didn't actually need a chat interface. And the chat interface was causing a lot of the problems”transcript, stated
“real production environment. So I moved out of Zaps. I'm now working out of AWS Lambda and Step Functions. I'm doing that for a couple of reasons. It's a much more reliable production environment. It's still using I can run a mix of Node.js, which is what most of my code base is in, and Python.”transcript, stated

Models used: ChatGPT · Claude · Anthropic API · GPT-4o mini

Scale

Alternatives considered (roads not taken)

Keep the custom GPT/Claude prototype.

Rejected because: It was useful for proving feedback quality but not a deployable course tool.

“a custom GPT just lets you set some custom instructions. You can upload some files. And I started very simple.”transcript, stated

Keep the Replit chat-interface builder.

Rejected because: Students used chat turns for follow-up questions, rate limits broke, and the tool became hard to extend reliably.

“I could not get Replit to reliably extend my tool. Now, part of this is because it got really confused about its own development context. I've seen a lot of people on LinkedIn share similar”transcript, stated

Use one long prompt for the whole coach.

Rejected because: The model confused rubric criteria as the prompt grew longer.

“my prompt was getting really, really long. Like, pages and pages long. And that's because I was using one prompt”transcript, stated

Split every rubric dimension into independent prompts without cross-dimension context.

Rejected because: The split improved excerpts but caused inconsistent feedback when one dimension judged another's concern.

“splitting my prompts dramatically improved how the LLM did on each dimension, but it meant that sometimes it gave feedback on things that it shouldn't have”transcript, stated

Use Zapier/Airtable for real customer transcripts long term.

Rejected because: The setup was not SOC 2 compliant and not intended for real customer interview data.

“freaked out a little bit because I don't have SOC 2 compliance. I was storing these um transcripts in a Airtable. Uh I was a little bit worried about like am I set up to store real customer interview transcripts? And you're going to see this is a theme that's going to”transcript, stated

Patterns

eval-driven-development (quality)

Trace error analysis drives code-based and LLM-based evals that decide whether prompt, model, temperature, or chunking changes improve the coach.

“You start by analyzing your traces and doing error analysis. You identify your most common error categories.”transcript, stated

llm-as-judge (quality)

LLM judges detect qualitative failures such as leading-question recommendations in coach responses.

“One of my most common error categories was the LLM was suggesting a leading question. So I wrote an LLM as judge eval.”transcript, stated

prompt-chaining (workflow)

The coach split rubric dimensions into separate LLM calls and then formatted their JSON outputs into one response.

“I wanted to split each dimension into its own AI call.”transcript, stated

observability-tracing (operations)

The system stores user inputs and LLM responses as traces for monitoring, annotation, evals, and release decisions.

“This is really important, cuz I'm trying to get those traces, user input plus LLM response.”transcript, stated

human-in-the-loop-gate (quality)

Teresa reviewed outputs, corrected students when necessary, and annotated traces before broader automation.

“I also email myself the response. And I did this for a long I still do this, because I'm really concerned about quality.”transcript, stated

privacy-preserving-processing (data-governance)

The workflow added consent, sensitive-data removal instructions, 90-day trace storage, and Vistaly for SOC 2 handling.

“before you upload a transcript, remove any sensitive data.”transcript, stated

durable-execution (workflow)

The production version moves orchestration to AWS Step Functions so Node.js and Python steps can run reliably.

“A step function lets me orchestrate both.”transcript, stated

Tradeoffs

Prototype speed

Chose ChatGPT/Claude and Replit first over Starting with production infrastructure.

Rationale: Cheap prototypes quickly proved whether LLM feedback could model the rubric.

“This was literally my MVP. And I think I did this on day one.”transcript, stated

Student-facing form factor

Chose Assignment submission with emailed feedback over Embeddable chat interface.

Rationale: The intended job was one feedback pass over a transcript, not a multi-turn coaching conversation.

“It was intended to be upload your transcript, get the same type of feedback you might get from an instructor.”transcript, stated

Prompt architecture

Chose Multiple rubric-dimension calls over One monolithic prompt.

Rationale: Splitting prompts enabled excerpts and better dimension-specific feedback, though it required new evals for consistency.

“by doing that, I saw a dramatic improvement. I can now do excerpts.”transcript, stated

Eval implementation

Chose Own Jupyter/Python evals first over An off-the-shelf eval tool.

Rationale: Torres wanted to learn the process and avoid adopting a tool's point of view before understanding evals.

“I didn't want to deal with the off-the-shelf eval tool. I wanted to learn this process myself.”transcript, stated

Production orchestration

Chose AWS Lambda and Step Functions over Zapier automation.

Rationale: The production version needed a more reliable environment that could orchestrate Node.js and Python.

“It's a much more reliable production environment. It's still using I can run a mix of Node.js”transcript, stated

Gotchas (what bit them)

A chat interface changed the intended product behavior.

Root cause: Students treated feedback as a multi-turn coaching conversation, consuming message-based rate limits.

Resolution: Move from chat to transcript submission plus one structured feedback response.

“students wanted to chat with the LLM about their feedback. But I didn't build it for that purpose.”transcript, stated

Long prompts blurred rubric criteria.

Root cause: One prompt carried context for all dimensions and grew unwieldy as errors were patched.

Resolution: Split dimensions into separate calls, then add evals to catch cross-dimension inconsistencies.

“it had to know the context for all four dimensions. As I uncovered errors, I was updating the prompt.”transcript, stated

Splitting prompts improved local quality but introduced inconsistency.

Root cause: Each dimension-specific prompt lost awareness of what another dimension was supposed to cover.

Resolution: Use trace review and evals to catch inconsistent cross-dimension feedback.

“now my setting the scene coach doesn't know what a good story-based question is anymore”transcript, stated

Vibe-checking AI feedback hid serious errors.

Root cause: Student praise and manual trace inspection did not reveal systematic bad recommendations.

Resolution: Annotate traces, identify error categories, and build code/LLM evals for those failures.

“the eye test, just vibe checking my LLM responses, my interview coach looked great. I was getting great feedback from students.”transcript, stated

Practice-transcript infrastructure was not safe for real customer data.

Root cause: Students uploaded real interviews even though transcripts were stored in Airtable without SOC 2 compliance.

Resolution: Add consent and sensitive-data instructions, then partner with Vistaly for SOC 2-compliant real transcript handling.

“once I realized I was getting real student data, I freaked out our real customer data”transcript, stated

Evaluation

Product Talk evaluates the coach through trace review, Airtable annotations, error analysis, code-based evals, LLM-as-judge evals, judge scoring against human grades, and repeated experiments over model, prompt, temperature, and chunking changes.

Metrics: Pass/fail by error category · Human grader agreement · Judge false positives · Judge false negatives · Code-eval failures · Student feedback usefulness · Release/toss decision by eval grid

“I can now take a set of traces, so interviews plus LLM responses, run them across all my evals.”transcript, stated
“Every time I make a model change, every time I make a prompt change, every time I make a temperature change or a chunking strategy change”transcript, stated

Outcomes

The talk cites a one-hour/day-one prototype, two-day Replit build, two practice interviews per week, 90-day trace storage, seven coach dimensions, about a dozen evals for one dimension, three days to build initial Python evals, a late-July beta, and a larger September launch.

“one-hour prototype already starting to get some pretty interesting feedback.”transcript, stated
“I make the change. I run my evals. I decide to release it or toss it.”transcript, stated