Building Production-Grade LLM Evaluation Systems for HR Tech Interview Intelligence

zebra · HR · 2024 · source Agentic: no · promotional bias: low · source-backed · extracted with prompt 0.5.5 (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: HR technology, interview intelligence, and production LLM evaluation

Spotted Zebra needed to move an AI-powered interview intelligence product from a slow research feedback loop into production client delivery without losing fairness, transparency, prompt quality, model comparability, auditability, or human control over hiring decisions.

Constraints:

Architecture

Spotted Zebra built an evaluation-centered LLMOps workflow around its Skills Evaluation product. A bot joins interviews, transcribes calls, and passes transcripts to AI models that extract skill/value evidence into structured outputs. Occupational psychology experts frontload judgment into golden examples, which become a gold-standard evaluation set. Prompt files are versioned semantically and executed through a shared model gateway that captures latency, cost, retry logic, prompt versions, model versions, and correlation IDs. Closed tasks use golden examples; open-ended interview-question generation uses LLM-as-judge criteria. Production failures are added to adversarial testing banks, logs are stored/searchable for audit and future fine-tuning data, and evaluation reports are generated for client communication and compliance.

Diagram confidence: reconstructed (reconstructed from prose).

flowchart LR
  interview-bot["Interview bot"] --> transcription-pipeline["Transcription pipeline"]
  transcription-pipeline --> evidence-extraction-model["Evidence extraction model"]
  evidence-extraction-model --> golden-example-evaluator["Golden example evaluator"]
  evidence-extraction-model --> human-hiring-decision["Human hiring decision"]
  occupational-psychology-experts["Occupational psychology experts"] --> golden-examples["Golden examples"]
  occupational-psychology-experts --> golden-criteria["Golden criteria"]
  golden-examples --> golden-example-evaluator
  golden-example-evaluator --> evaluation-metrics["Evaluation metrics"]
  prompt-files["Prompt files"] --> model-gateway["Model gateway"]
  prompt-files --> prompt-changelog["Prompt changelog"]
  prompt-files --> production-config["Production config"]
  production-config --> prompt-files
  model-gateway --> api-logging-store["API logging store"]
  golden-criteria --> llm-judge["LLM judge"]
  llm-judge --> evaluation-metrics
  adversarial-testing-bank["Adversarial testing bank"] --> golden-example-evaluator
  api-logging-store --> compliance-reporting["Compliance reporting"]
  evaluation-metrics --> compliance-reporting
  prompt-changelog --> evaluation-metrics
Drag to pan · scroll or use +/− to zoom · reconstructed from the source's described component topology

Components

Component Role Interacts with
Interview bot Call participant that joins in-person or online interviews and captures the conversation. Transcription pipeline
Transcription pipeline Converts interview audio into transcripts for downstream evidence extraction. Evidence extraction model
Evidence extraction model AI model that extracts evidence of soft skills, technical skills, and company-value alignment from transcripts into structured output. Golden example evaluator, Human hiring decision
Human hiring decision Hiring manager or user who receives decision-support evidence while retaining final decision authority. —
Occupational psychology experts Domain experts who define correct outputs, criteria, and best-practice judgment for hiring evidence. Golden examples, Golden criteria
Golden examples Human-authored gold-standard input/output pairs for closed tasks such as evidence extraction. Golden example evaluator
Golden example evaluator Evaluation runner that compares model-extracted evidence against golden examples and reports metrics. Evaluation metrics
Prompt files Structured YAML prompt artifacts containing provider, parameters, system prompt, user prompt, and templating information. Model gateway, Prompt changelog, Production config
Model gateway Shared function/library for executing prompt files, packaging API calls, retries, latency/cost metrics, and provider details. API logging store
Production config Runtime configuration that selects prompt versions and enables fast rollback without restarting production. Prompt files
Prompt changelog Record of prompt-version changes and performance deltas across experiments. Evaluation metrics
Golden criteria Human-defined success criteria for open-ended tasks where no single correct output exists. LLM judge
LLM judge Separate model-family evaluator that scores open-ended outputs against criteria and provides qualitative feedback. Evaluation metrics
Adversarial testing bank Collection of edge cases, prompt injections, empty inputs, password-protected PDFs, and production failure cases converted into tests. Golden example evaluator
API logging store Searchable log storage with metadata, prompt version, correlation IDs, usage, model version, audit evidence, and future fine-tuning data. Compliance reporting
Evaluation metrics Coverage, accuracy, precision, recall, F1, role/industry slices, latency, cost, model quirks, and judge feedback. Compliance reporting
Compliance reporting Client communication, fairness/transparency evidence, Google Docs reporting, audit support, ISO certification, and EU AI Act preparation. —

Data flow

An interview bot joins a call and records/transcribes the conversation. The transcript goes through an evidence-extraction model that returns structured evidence for skills, technical skills, and company values. During development, outputs are compared against golden examples created by human domain experts. Prompt files and model parameters are versioned, then executed through a shared model gateway. Metrics and logs capture prompt version, model version, latency, cost, usage, and correlation IDs. For open-ended generation, an LLM judge evaluates generated interview questions against golden criteria. Production failures and edge cases are added to adversarial test banks, and CI/reporting scripts publish evaluation results for clients and compliance.

6 supporting quotes
“a busy day, lots and lots of candidates, lots of cognitive load. What our software does is you have a bot that joins your call. So whether that's in person, we might have the laptop beside you or we might do that online with teams or some other conferencing”transcript, stated
“that bot will transcribe the call and then pass that transcript to our AI models where we postprocess that and try and get some nice rich insights. So what we might do in this case is try and extract all of the evidence we can find in that transcript for”transcript, stated
“extract all of the evidence we can find in that transcript for evidence of soft and technical skills, maybe values if they align with the company values. And really what that helps to do is reduce that cognitive load of the user but helps them make their”transcript, stated
“A golden example is just a document where you pass an input into a a model and then the human actually creates what the output should be.”transcript, stated
“where you have your interview transcript comes in, we extract some evidence using our model and then we can compare that evidence to the golden examples.”transcript, stated
“we get all of our latency metrics cost metrics anything else that you'd like in there retry logic and so on. So actually doing that all in one place allows you to just frontload that effort again and and not duplicate. Keeping a change log very useful. It's”transcript, stated

Why this architecture

The team discovered that evaluation infrastructure gave more client impact than fine-tuning, RAG, or agents because it converted subjective occupational-psychology judgment into repeatable tests, made prompt/model changes measurable, enabled day-one model evaluation, supported rollback and logging, and gave clients evidence that a black-box hiring system was working fairly.

5 supporting quotes
“the biggest impact that we've had with clients is when we nailed the fundamentals of evaluation. So what I'm going to show you this evening is six lessons that we've learned in evaluating Gen AI. So first of all, a little bit about the company with the funny”transcript, stated
“we frontloaded the domain experts effort at the start of the project and we created some golden examples. A golden example is just a document where you pass an input into a a model and then the human actually creates what the output should be. And in that”transcript, stated
“moving away from this idea of prompt engineering being based on gut feel or feeling like a bit of an art form to now being quantifiable experiments.”transcript, stated
“good that model is. And we learned a lot a lot of lessons here because when GPT5 came out, we actually managed to test that on day one. Whereas before maybe companies might have naively switched to to that model because it's new, it's better. May maybe we”transcript, stated
“How can you say it's fair? Having all of your information in one place, all of your tests is so helpful. We actually have a Python script that when we commit to main and we merge, that actually runs our evaluation script and just uploads that to Google Docs.”transcript, stated

Models used: Interview transcription model · Evidence extraction LLM · LLM-as-judge evaluator · GPT5 · Mistral · Anthropic models · OpenAI models

Scale

Alternatives considered (roads not taken)

Keep domain experts in every prompt-iteration loop.

Rejected because: That made each party wait for feedback and became too slow under client-driven iteration pressure.

“to prompts. I'd go to OP get feedback and we'd run that cycle and that's a lot of effort. I'd wait for them to respond, they wait for me to respond. So, it's quite slow. So, what we did here was we frontloaded the domain experts effort at the start of the project and we created some golden”transcript, stated
“them to respond, they wait for me to respond. So, it's quite slow. So, what we did here was we frontloaded the domain experts effort at the start of the project and we created some golden examples. A golden example is just a document where you pass an input into a a model and then”transcript, stated

Hardcode prompts in application code.

Rejected because: Hardcoded prompts make versioning, rollback, metrics, and experiment control more difficult.

“first one here is to use a structured file system. Please don't hardcode your prompts. It makes things so much more difficult. I see that in a lot of places. If you just take them out into a file, it makes the whole rest of this process so much easier because you can start to version them”transcript, stated
“If you just take them out into a file, it makes the whole rest of this process so much easier because you can start to version them properly. We actually use semantic versioning. So you could use something like we've got where we have a major, minor, and”transcript, stated

Use golden examples for every task.

Rejected because: Golden examples work for closed tasks with correct outputs, but open-ended interview-question generation needs criteria and LLM-as-judge evaluation.

“one. So, hopefully I've convinced everyone there's a lot of benefit with golden examples. Small caveat, you can't use them for absolutely everything. And I can explain when you can and when you can't. So golden examples work really well for closed tasks. So that's a task”transcript, stated
“there's no one correct interview question. You could probably write thousands that are good. So what do you do instead? Well, actually you can define some golden criteria which is your success metric. So what defines a good question in this case? So with”transcript, stated

Let engineers call model APIs in their own ad hoc wrappers.

Rejected because: Duplicated API-call logic prevents consistent retries, metrics, prompt execution, and model-gateway behavior across the business.

“thought into how you run your prompts, people might or engineers across the across the business might start re-implementing that logic. So you actually have lots of different little Python calls or TypeScript calls just running these API calls which is fine but actually if you bring that into one”transcript, stated
“Python calls or TypeScript calls just running these API calls which is fine but actually if you bring that into one place into a single function like we've done we've just put that in our commons library now everyone can use that and we have something in there that”transcript, stated

Treat production errors only as incidents to dread.

Rejected because: The team converted production failure causes into adversarial tests so the same error would not recur.

“every time we find an error on prod, we then put that error or the the cause of that error, we put that into our testing bank.”transcript, stated
“we then put that error or the the cause of that error, we put that into our testing bank. We make sure that we never have the error again. And this is a quote that we like to throw around internally. We used to absolutely dread seeing errors, of course, but now”transcript, stated

Patterns

eval-driven-development (quality)

Golden examples, metrics, adversarial banks, prompt comparisons, model tests, and CI reports make development quantifiable rather than gut-feel prompt tuning.

“moving away from this idea of prompt engineering being based on gut feel or feeling like a bit of an art form to now being quantifiable experiments.”transcript, stated
“coverage you know how many pieces of evidence did we capture might call that accuracy precision recall F1”transcript, stated

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

Human occupational psychologists define gold standards and criteria, while hiring managers retain decision authority from AI-supported evidence.

“you need humans in the loop somewhere. It's just where do you want to place that effort?”transcript, stated
“And really what that helps to do is reduce that cognitive load of the user but helps them make their decision as a human. So really is about driving skill science at scale using AI to help humans make decisions that that they are best placed to make.”transcript, stated

prompt-versioning (operations)

Prompts live in structured YAML files with semantic versioning, changelogs, config-driven rollout/rollback, provider parameters, system/user prompts, and templating.

3 supporting quotes
“Lesson two was to version our prompts. Hopefully I've convinced you that prompts can be viewed now as experiments.”transcript, stated
“We actually use semantic versioning. So you could use something like we've got where we have a major, minor, and patch.”transcript, stated
“you need to quickly roll back, you can just update that file, the config file, and roll back.”transcript, stated

llm-as-judge (evaluation)

Open-ended interview-question outputs are evaluated by a separate LLM against golden criteria, enabling development-time and inference-time quality assessment.

3 supporting quotes
“LLM as a judge. This is a really nice one. So, hopefully I've convinced everyone there's a lot of benefit with golden examples.”transcript, stated
“your model outputs. Our model generates an interview question. We then have an LLM that has our criteria in it. Preferably a different LLM from a different model family. There's things like self bias that we can get into and then what happens there is you get a really nice informationrich list of”transcript, stated
“with LLM as a judge you don't need a human you can evaluate it at inference time”transcript, stated

observability-tracing (operations)

API logging captures model version, usage, prompt version, correlation IDs, latency/cost, searchable storage, audit history, and future fine-tuning data.

3 supporting quotes
“Open, sorry, not open AI, logging API calls properly. Not the sexiest topic, but if you don't do the work now, you will hate your past self.”transcript, stated
“something like Langmith, I assume people may have used Langmith before. See some mods. You do get things like datetime, model version, your usage metrics, etc. you won't get things like your prompt version because now your version of the prompts you can put that in as c as as a custom field if”transcript, stated
“some kind of correlation ID U ID unbelievably helpful make them searchable”transcript, stated

guardrails-io-filtering (safety)

The adversarial test bank includes prompt injection attacks, empty inputs, password-protected PDFs, and production errors that become regression tests.

3 supporting quotes
“We have an adversarial testing bank also. really recommend this.”transcript, stated
“So, prompt injection attacks, empty inputs. We've had people on prod upload password protected PDFs and wonder why their outputs aren't coming through nicely.”transcript, stated
“upload password protected PDFs and wonder why their outputs aren't coming through nicely.”transcript, stated

data-quality-loop (operations)

Production errors and golden-example gaps are fed back into test banks, eval sets, prompt changes, and future fine-tuning datasets.

“when they do occur, we get a little bit excited because now we can put something in our test pan.”transcript, stated
“also nice for auditing and compliance and building your own fine tuning data set down the line”transcript, stated

Tradeoffs

Frontload domain-expert judgment into golden examples.

Chose Gold-standard datasets and automated metric comparisons over Manual expert review of every prompt change.

Rationale: This preserves expert judgment while making iteration faster and more measurable.

“we frontloaded the domain experts effort at the start of the project and we created some golden examples.”transcript, stated
“autonomous development. It allows you to move much faster because you're not waiting for that feedback loop”transcript, stated

Use LLM-as-judge for open-ended tasks.

Chose Golden criteria and a separate model-family judge over Forcing open-ended tasks into fixed golden examples.

Rationale: Criteria are faster to create and can evaluate outputs at inference time, but require hard workshops to define what good means.

“Golden [snorts] criteria so much faster. It's literally just a list of rules.”transcript, stated
“trying to get down out of your head what a definition of good is onto paper or onto a screen. That's hard.”transcript, stated

Centralize prompt execution through a model gateway.

Chose One shared function/library for prompt file execution, metrics, retries, and API packaging over Each engineer re-implementing provider calls in local code.

Rationale: Centralization reduces duplicated logic and ensures consistent latency/cost/usage/retry instrumentation.

“different little Python calls or TypeScript calls just running these API calls which is fine but actually if you bring that into one place into a single function like we've done we've just put that in our commons library now everyone can use that and we have something in there that passes YAML files”transcript, stated
“we get all of our latency metrics cost metrics anything else that you'd like in there retry logic and so on.”transcript, stated

Keep recent prompt versions available in production config.

Chose Config-selectable prompt versions for quick rollback over Deploying one prompt with code changes/restarts for rollback.

Rationale: Fast rollback matters when prompt updates cause production issues.

“Don't need all your prompts versions but you could have like the last five or something like that.”transcript, stated
“you need to quickly roll back, you can just update that file, the config file, and roll back.”transcript, stated

Move logs out of weak search tooling into queryable storage.

Chose S3-backed/searchable logs over Relying only on LangSmith search.

Rationale: Queryable logs support debugging, auditing, compliance, and future fine-tuning data creation.

“Langmith logs it's got a built-in search feature it sucks it's really poor and we got bitten by that”transcript, stated
“we move actually moved everything over to S3 so we can query everything really nicely now”transcript, stated

Gotchas (what bit them)

Human review of every prompt iteration becomes a development bottleneck.

Root cause: Domain experts and AI engineers wait on each other while client feedback accelerates.

Resolution: Frontload expert judgment into golden examples and use automated metrics for most iteration.

“I'd wait for them to respond, they wait for me to respond. So, it's quite slow.”transcript, stated
“we frontloaded the domain experts effort at the start of the project and we created some golden examples.”transcript, stated

Golden examples do not fit open-ended generation.

Root cause: Interview guide generation can produce thousands of acceptable questions, so there is no single correct answer.

Resolution: Define golden criteria and evaluate generated questions with a separate LLM judge.

“there's no one correct interview question. You could probably write thousands that are good.”transcript, stated
“you can define some golden criteria which is your success metric.”transcript, stated

Prompt changes are not reproducible if prompts are hardcoded or unversioned.

Root cause: Hardcoded prompt logic hides provider, parameter, system prompt, user prompt, and template differences from experiment tracking.

Resolution: Use structured prompt files, semantic versioning, changelogs, and config-driven prompt selection.

“Please don't hardcode your prompts. It makes things so much more difficult.”transcript, stated
“If you just take them out into a file, it makes the whole rest of this process so much easier because you can start to version them properly. We actually use semantic versioning.”transcript, stated

Edge cases become normal at scale.

Root cause: Production traffic exposes prompt injections, empty inputs, password-protected files, and other inputs that are rare in small tests.

Resolution: Collect difficult inputs and production failure causes in an adversarial test bank.

“Remember, at scale, it's no longer an edge case. It's becomes the norm.”transcript, stated
“every time we find an error on prod, we then put that error or the the cause of that error, we put that into our testing bank.”transcript, stated

Logs are only obviously necessary after something has gone wrong.

Root cause: Teams cannot predict which metadata they will need during production debugging, audit, or compliance.

Resolution: Log prompt version, model version, usage, correlation IDs, searchable metadata, and store logs in a queryable system.

“you don't need them until you do. You can't predict when you're going to need them.”transcript, stated
“you really want to be able to tie those together some kind of correlation ID U ID unbelievably helpful”transcript, stated

Evaluation

The evaluation stack combines closed-task golden examples, stratified gold sets, model/prompt version experiments, LLM-as-judge criteria for open tasks, adversarial regression banks, API-call logging, and client/compliance reports. Metrics include coverage, accuracy, precision, recall, F1, role-level slices, industry slices, latency, cost, usage, prompt/model versions, and production failure regressions.

Metrics: Coverage of extracted evidence · Accuracy · Precision · Recall · F1 · Junior versus senior role performance · Industry-stratified performance · Latency · Cost · Usage metrics · Prompt version · Model version · Correlation ID · Adversarial-bank pass/fail · Client fairness/transparency evidence · Compliance evidence for ISO/EU AI Act readiness

5 supporting quotes
“coverage you know how many pieces of evidence did we capture might call that accuracy precision recall F1”transcript, stated
“we could actually tell how well our prompts were performing for junior roles versus seniors.”transcript, stated
“we get all of our latency metrics cost metrics anything else that you'd like in there retry logic and so on.”transcript, stated
“something like Langmith, I assume people may have used Langmith before. See some mods. You do get things like datetime, model version, your usage metrics, etc. you won't get things like your prompt version because now your version of the prompts you can put that in as c as as a custom field if”transcript, stated
“we don't even have to think about it. Once you set it up, honestly, it is so freeing.”transcript, stated

Outcomes

The transcript reports large clients over 5,000 employees, hiring examples with 200 job roles and about 10,000 candidates, hiring managers with five to 10 interviews per day, a development push compressing a year's work into a few months, and EU AI Act readiness by 2026.

5 supporting quotes
“And I'm very happy to say that this is now a product that we do offer and is in production. And the idea here is that our customers, they have many users, right?”transcript, stated
“And we learned a lot a lot of lessons here because when GPT5 came out, we actually managed to test that on day one. Whereas before maybe companies might have naively switched to to that model because it's new, it's better.”transcript, stated
“The product quality is so much better than it was before. Client communication. I think everyone's had that question where you get asked by a client, how do you know that your blackbox system is working well?”transcript, stated
“How can you say it's fair? Having all of your information in one place, all of your tests is so helpful.”transcript, stated
“I don't think we would have gotten that without all of our evaluation metrics.”transcript, stated