[Chuseok Special] An LLM Evaluation Harness Engineering Guide from a Silicon Valley Developer
If you’ve ever had trouble determining whether the quality of responses declined after changing a prompt or model while building a service using an LLM, this course may be the solution. You’ll learn how to create your own evaluation criteria and automatically identify responses that have changed.
Implement a tool for collecting and quantitatively and qualitatively evaluating LLM responses
Verify quality differences before and after prompt and model changes through regression testing
How to Design Evaluation Datasets and Clear LLM Evaluation Criteria
Building a Reliable Evaluation Pipeline by Combining LLM Judges and Rule-Based Evaluation
Trace failed responses to analyze the cause of the problem among the prompt, retrieval, and model.
Connect evaluation results to CI/CD to continuously manage the quality of LLM services
AI answer quality · automated grading · pre-deployment checks
I fixed one line of the prompt, but I don't know when it started going wrong
An answer that was correct yesterday quietly becomes wrong today. Without errors or logs. Together with a 13-year backend developer who develops AI in Silicon Valley, we build from scratch, without libraries, the tool that catches it before deployment.
87.5%We kept the answer content the same and only changed the order in which it was displayed, yet 14 out of 16 judgments were reversed. The AI entrusted with grading may be doing this right now.
Evaluation run — new version
$npx tsx demo/gate.ts
16 questions · Compare side by side with the previous version
Handling questions that should be rejected0% → 100%
[Regression]case-01case-08case-10
Check failed
3 degraded items · 2 over the limit → deployment halted
$
Evaluation Report16 questions · Run on a notebook
Did the answer exactly match the correct answer, down to every character—Pass
Did it properly refuse questions it should not answer—Pass
Did the answer include all the required words8 / 113 missing
Did the AI-assigned score match the human-assigned score?11 / 24Less than half matched
Did the evaluation flip just because the order of the options was changed?14 / 16Almost all flipped
Compared to the previous version, the score is -0.125 — it didn’t just fluctuate by chance; it actually got worse.
THE PROBLEM
Is this answer really a good answer?
LLMs produce different answers each time, even for the same input. Plausibility and accuracy are not the same thing, and answers don’t always fall neatly into right or wrong. That’s why most teams remain stuck at “look at it, and if it seems okay, deploy.”
An LLM evaluation harness is a collection of code that automatically grades the answers produced by AI instead of relying on people and catches regressions before deployment. In this course, we’ll build one from scratch in TypeScript, without using tools made by others. We’ll create grading rules, try having AI do the grading too, measure how reliable that AI is, block deployments when things get worse, and even record which stages of execution took how long.
Why doesn't assertEqual work
Too harsh
assertEqual(answer, "15 days of annual leave")FAILFails even when only the wording differs
Too loose
answer.length > 0PASSEven incorrect answers pass
Change the prompt slightly, and what worked yesterday can quietly fail today.
The moment you throw out a few questions and move on with "done" if the answers seem plausible, quality continues to operate without being measured. And before anyone realizes it, it collapses.
BEFORE / AFTER
Same Output, Different Judgment
We replace eyeballing with scores and evidence.
BEFORE
$"That answer seems plausible. Good enough."
Skim it visually and deploy
You don't know what got worse
AFTER
$Scoring complete
Handling questions that should be refused0% → 100%
case-01·08·10 worsened → halt deployment
HOW BAD IS IT
How many points did the AI assigned to grading receive? How many points did the AI assigned to grading receive?
Unverified grading is not much different from flipping a coin. The figures below are the actual results from running all 16 questions.
45.8%
The percentage of times the AI entrusted with grading judged answers the same way as humans. 11 out of 24 — for the rest, it judged them differently from humans.
14 / 16
The number of times the judgment was reversed simply by changing the order in which the answer content was shown, while keeping the content itself unchanged
0% → 100%
The rate of filtering out questions that should not be answered. Fixing just one line in the prompt increased it by this much. If you don’t measure it, it can drop by this much instead.
Failures · 3 worsened items
The test caught case-01·08·10 quietly getting worse and blocked the deployment. Human eyes didn’t catch it.
In the original order
Answer A chosen by AI
Answer B
By changing only the order
Answer B chosen by AI
Answer A
We kept the answer content exactly the same and only changed the order in which they were shown, but both times the first position won. This happened with 14 out of 16 questions. That means the reason for the choice was the position, not the content of the answer.
If you assign grading to AI without knowing this number, you’ll build quality on top of incorrect scores. You’ll also create the method for measuring this number yourself in the course.
WHAT YOU BUILD
Build Order
Starting with rule-based grading, you’ll entrust the grading to AI, validate that AI, and finally build checks that prevent deployment. You’ll build it up yourself, one step at a time.
6 Ways to Grade with Rules
TypeScript
Whether the wording is identical down to the characters, whether it follows the prescribed format, whether it contains the essential words, whether it refused questions it shouldn’t answer, and whether it conveys the same meaning despite different phrasing. Since it doesn’t call an AI, it finishes in the blink of an eye.
Have AI grade it
llama3.2
Hand-grading each response is handed over to AI. We create a grading rubric and use both a method that assigns a score to each answer and a method that places two answers side by side and asks it to choose.
Assessing whether AI grading can be trusted
TypeScript
We measure how closely it matches human-assigned scores, whether the answer changes when only the order of the choices is changed, and whether it has a tendency to automatically regard longer answers as better.
Create a Test Set and Lock in the Reference Answers
TypeScript
We collect questions and expected answers to create a test set, then save the result from one run as the reference answer. From then on, we compare against it.
A check that blocks deployment if things get worse
TypeScript
It determines pass or fail by comparing against the stored reference answers. It also calculates whether “Did it really get worse by 2%, or was it just fluctuation?”
Build the execution process recorder yourself
TypeScript
It displays as a bar graph which stages a single run went through, how long each stage took, and how many tokens it used. You build it yourself without external tools.
WHAT IT LOOKS LIKE
Once it’s all built, you’ll see a screen like this.
This is a screen that actually appeared in the course. The checker blocks the deployment, and the recorder shows why.
Pre-Deployment Check
After running it with the prompt fixed, the checker responds first.
Reference answer
This run
Failed · 3 degraded items · Deployment halted
It compares each of the 16 questions against the stored reference answers and catches that case-01 · 08 · 10 have gotten worse. Instead of having a person compare them by eye, it automatically blocks the release when the preset number is exceeded.
Handwritten logger
So we open the execution to see why it got worse.
evaluate-case
retrieve
No LLM calls
sut-chat
p:152 e:19
semantic-embed
p:34
judge
p:145 e:63
The two cells with long bars are the steps that call the AI. It even shows that one run used 413 tokens (331 for the question · 82 for the answer). This is a screen I built directly in TypeScript without attaching any external tools.
"
Question the grading side first.
Unmeasured evaluation does not safeguard quality. It only creates the illusion that it does. Stripping away that illusion is the backbone of this course.
WHAT YOU CAN CLAIM
Use it as-is in your portfolio and resume.
"Here is a tool I used to evaluate LLMs" and "I measured that the judgment was reversed in 14 out of 16 cases simply by changing the order" are different statements. To write the latter, you have to measure it yourself, and that process is what this course is about.
This is how it is written on a résumé.
01Measured positional bias in LLM-as-judge and quantitatively confirmed 14 judgment reversals out of 16 questionsWe kept the answer content unchanged and only switched the display order, recording numerically how much the grader was swayed
02Implemented six rule-based graders and built automated regression evaluations that run in seconds on every commitBy grading solely with code without calling AI, we created checks lightweight enough to integrate into CI
03Measured the agreement between automated grading results and human scores and presented confidence intervals numericallyWe can now answer with evidence: "How much can we trust this score?"
04Implemented evaluation set version control and a leakage and duplicate question filtering pipelineVersioned the question sets and reference answers together so the benchmark remains consistent even when prompts change
05Configured a gate that blocks deployment when quality regresses, preventing silent performance degradation in advanceFilters changes that worsen without errors or logs into pass or fail
06Build an execution trace collector and visualization from scratch to pinpoint latency and token cost bottlenecksI built step-by-step logging and bar chart screens from the ground up to see what was slow and where tokens were being spent
All six lines are things you build and measure yourself in this course. Even if you’re asked in an interview, "What makes you trust that evaluation?", you’ll have an answer.
WHY NOW
Everyone is using LLMs, but no one validates it.
The point this lecture digs into becomes clear when you look at the numbers.
Half
The percentage of companies that experienced a customer-facing incident after deploying an AI feature that had passed internal evaluation. One in four of them experienced it more than once.
89% vs 52%
Only half of the teams that have added observability to their agents also run evaluations. Observability checks whether they are alive, while evaluation checks whether the answer is correct.
12 types
Biases in LLM judges identified in an ICLR 2025 paper. They include order, length, and a preference for answers they wrote themselves—and remain even in high-performing models.
Liability
In May 2026, a German court ruled that a company is liable for incorrect answers provided by its chatbot. This follows the 2024 Air Canada ruling.
The evaluation tools market is projected to grow from $1.6 billion in 2026 to $8.7 billion in 2033. But buying a tool and determining whether you can trust the scores it produces are two different things. People who know how to do the latter are still rare.
Sources: VentureBeat VB Pulse June–July 2026 survey (professionals at companies with 100 or more employees, 265 responses) · LangChain State of Agent Engineering (more than 1,300 practitioners) · Ye et al., Justice or Prejudice? Quantifying Biases in LLM-as-a-Judge, ICLR 2025 (arXiv 2410.02736) · May 12, 2026 ruling by the Hamm Higher Regional Court in Germany, Moffatt v. Air Canada 2024 BCCRT 149 · Persistence Market Research (AI evaluation tools market size)
If you're wondering, "Is this course right for me?"
What about statistical knowledge? A graphics card? A paid API key? I’ve listed everything you need—and don’t need—below.
WHO IT'S FOR
Recommended for those who
If even one of the following applies to you, this course will be immediately useful.
If you’re this kind of person, you definitely should.
Developers building apps with LLMs attached
For those who get nervous every time they change a prompt or model
Those who want to know how it works under the hood before using an evaluation tool
People who want to turn “looks good” into numbers and evidence
People who want to check whether it’s okay to leave the grading to AI
STACK
Everything runs on your laptop, with no payment required.
The code is written in TypeScript and runs directly in Node.js with tsx. For generating and grading answers, we use llama3.2 running locally through Ollama, and call bge-m3 only when comparing whether meanings are similar. We define the schema with zod to ensure the grading result format doesn’t deviate.
There’s no API key to pay for, no service to sign up for, and no graphics card required. Everything runs from start to finish in a single folder.
PREREQUISITES
What do you need?
No elaborate preparation is required. You can get started with just one laptop.
Prior knowledge
Basic JS/TS skills and experience calling an AI once
If you can read basic syntax and have called an AI API at least once, that’s enough. You don’t need to know statistics or machine learning. Whenever calculations are needed, we’ll walk through them in code during the course.
Practice Environment
macOS + Ollama
We’ll proceed using zsh and Homebrew. llama3.2 generates and grades the answers, while bge-m3 checks whether the meanings are similar—both run on a laptop. You can complete everything without a graphics card.
Cost
Zero external payment cost
There are no API keys to pay for. There are no services to sign up for or servers to rent. It runs from start to finish without the internet.
INSTRUCTOR
Instructor Introduction
SILICON VALLEY · AI ENGINEER
Silicon Valley Developer Waddy
I’m a backend server developer with 13 years of experience. After working at several companies in Korea, I now develop AI-related solutions in Silicon Valley. I’ve seen firsthand how services powered by LLMs can fall apart when they stop at “It seems to be working,” so I build and use my own grading tools and pre-deployment checks. This course faithfully captures the process of creating those tools. I’ll share what I know as clearly and comfortably as possible.
"It covers how to go beyond “It looks good” and maintain quality using numbers and evidence."
TypeScript
Completely offline
Without libraries
LLM Evaluation
TRACK RECORD
So, will Hong really be helpful?
I’ve finished the entire course. Thank you for the great course.The message you left in the open chat room after completing the courseThanks to your help, I was able to get a job offer from a companyThe news of your successful job application shared in the open chat room
FAQ
Frequently Asked Questions
Q. Is it okay if I don’t know much about statistics or machine learning?
Yes. You don’t need to know statistics or machine learning. Whenever calculations are needed, the course walks through them step by step in code. Being able to read basic JS/TS syntax and having called an AI API at least once is enough.
Q. Do I need a graphics card or a paid API key?
You don’t need either. All the AI models used run on a laptop (llama3.2·bge-m3), and there’s no paid API key or service you need to sign up for. You can complete the entire course even with the internet disconnected.
Q. Is it okay to leave the grading to AI?
We cannot simply entrust it to AI. When actually tested, the llama3.2 used in this course agreed with the human-assigned scores only 45.8% of the time (11 out of 24), and when the order in which the answers were presented was changed while leaving their content unchanged, 14 out of 16 judgments were reversed. Even if you use a larger model, the fact remains that you do not know that number unless you measure it. This course covers how to measure that number yourself and decide how far you can entrust the task to AI.
Q. If there are already evaluation tools, do we really need to build one ourselves?
If you don’t know how a grading rule and the grading instructions given to the AI work internally, you have no choice but to simply trust the score produced by the tool. That means even if the 45.8% grading we saw earlier is built into the tool, there’s no way to detect it. In this course, you’ll understand the inner workings by building them yourself. Once you do, you’ll be able to judge the results for yourself, regardless of which tool you use.
Q. Is this kind of testing necessary even for a small project?
It doesn’t depend on the project’s size. Changing even a single line in a prompt or model can make an answer that was correct yesterday become wrong today. The tests created here run for free on a laptop, without requiring a server or paid service. That’s why you can use them as-is regardless of your project’s size.
Q. What is not covered?
We do not cover training models from scratch, large-scale monitoring systems, paid AI APIs, or search performance metrics. We focus on building grading tools from the ground up.
Q. Is there a course I should take first?
No. We’ll go from start to finish with this one course.
Quality that isn’t measured cannot be maintained.
There’s no way to know what will quietly get worse in the next deployment. Let’s build that way ourselves and put an end to it.
COMMUNITY
A KakaoTalk open chat where developers gather
Learning continues beyond the lectures. It’s a space to freely share career concerns, real-world situations, and technical discussions. If you get stuck while taking a course, feel free to ask questions. It’s free for everyone.
I started studying development after becoming interested in it while idling at home, and I am currently responsible for platform server development in Pangyo. I am continuing my activities as a knowledge sharer because I want to provide you with the methods I used to study, as well as the various problems and solutions you may encounter in practice.
These lectures are not created solely through my own knowledge. There are others who collaborate on every lecture.