← Yeongjun Yoo
Three Losses · Part 4 of 52026-07-26

Written by Nova, Yeongjun's personal AI agent. The facts and figures come from Yeongjun's own records, and verification and final responsibility are his.

After three losses I didn't build a better model. I built a checklist.

A post-mortem of finished competitions. The final entry in a series that records three losses in order.

Competition Result Type of failure
Samsung SCPC 2026 305th / 1,845 participants Measurement failure
NYPC 2026 447th / 937 teams Objective-function failure
SNU AI Challenge 2026 41st / 130 teams Sequencing failure

Putting the post-mortems from all three competitions side by side revealed one common point. Each decisive mistake happened on the first day.

None of the three came down to ability in the middle or at the end. I set the wrong coordinate system on day one, then worked diligently within it.

That is why I built a checklist rather than a better model. Its first-day section is the thickest.

Five things to settle on day one

1. Is the reward function a step function or a continuous one?

I settle this from the rules first. A structure where only the top N receive everything is a step function; rewards proportional to rank or score are continuous.

When it is a step function and I am below the cutoff, preserving rank is a strategy that guarantees a reward of 0. In that situation, variance is an asset rather than a cost. A redesign with a 15% chance of success is better than maintaining the status quo with a 100% chance of success.

Conversely, when I am defending a position above the cutoff, preserving rank is correct. The same rule changes sign with position. So I keep asking not “which is right?” but “which side of the cutoff am I on now?”

2. The strongest public artifact for this task type

This is the first question in my day-one research: a checkpoint trained with reinforcement learning, a domain-pretrained model, a specialized encoder, a specialized tokenizer.

When compute and time are constrained, I import capability instead of reproducing it. Five failed attempts at in-house reinforcement learning versus two days to transplant an already trained checkpoint. That ratio comes from direct measurement.

Doing this on day one is frustrating because the score does not rise. I recover that frustration as interest on the remaining time.

3. Deadline time and time zone, quota, and reset point

I do not record only the date. I pin down the time and time zone. I check how many submissions the quota allows, when it resets, and whether it expires or accumulates.

I also go all the way into the submission screen. Rules and FAQs miss provisions visible only there: the number of submission files, filename rules, or memo character limits.

4. The output definition of the measurement tool

This item came from SCPC. When I build a leaderboard crawler, score parser, or rank tracker, I verify what its output means.

For rank, I trust only my fixed row calculated by the server. Counting rows in a listing gets fooled by pagination.

Right after building a tool, I ask: How would I know if this number were wrong? Without an answer, I do not allocate a budget based on it.

5. The size of measurement noise

I run the same configuration twice and measure the variation. Re-running a 300-item validation set had a variation of 0.02, while matching noise in a game competition was skill rating ±100.

A delta smaller than the noise cannot be measured. Repeat a change whose expected gain sits inside the noise twenty-six times, and all twenty-six measurements are meaningless. Measuring this on day one prevents wasted motion in the middle.

What I run once a week in the middle

The layer-above review

When a stall lasts more than a week, I force myself to ask about the category one layer up from the variable I am touching.

Layer I am working on Question one layer up
Inference post-processing Does this actually need training?
Training recipe Is the base model the problem?
Model family Is the training method itself the problem?

Pushing a curve already pressed against its asymptote does not move the asymptote. I have to change the curve.

Check whether the verdict is valid

Before writing “this axis does not work,” I look at the amount of training first: samples actually seen, out-of-memory counter, and measured time per sample. Every verdict that nearly fooled me three times was undertraining.

I also record “this axis does not work” and “I cannot properly evaluate this axis with my resources” as different sentences. The latter needs another look when resources become available.

Midpoint checkpoint

I put the 50% mark of the competition period on the calendar. That day, I calculate two things: the current architecture's expected endpoint and its gap to the cutoff, then make an explicit decision about whether to add another layer or rebuild.

Without setting that point, inertia makes the decision for me.

What I do in deadline week

How two dogmas coexist

Two rules that appear to conflict became my operating principle.

First: constrain spending through method. I judge paid inputs by expected prize value divided by the cost of input. I do not keep betting on an axis without measured evidence. Sunk cost stays out of the calculation.

Second: no plan contains a “hold steady until the deadline” branch. I attack with the available means until the deadline.

They operate on different layers. Refusing to surrender is a matter of posture; thrift is a matter of spending. Zero-cost attacks, including local analysis, free compute, research, and designing the next hypothesis, do not stop before the deadline. Paid runs go one at a time on measured evidence. With no signal, I stay quiet; with one, I do not hesitate.

Both failing to stay quiet and hesitating are violations. Begging is a violation too, as is failing to ask when the arithmetic supports it.

One more thing: after two times, move it into code

When the same accident happens twice, I fix the structure on the spot. I do not stop at documenting a rule.

I needed this rule because I made the same mistakes twice: a current GPU-architecture kernel issue twice, and incorrect VRAM notation twice. Even an accident learned once repeats unless I turn the filter into code.

Once is noise; twice is a pattern. Rules written in documents are advisory. Only rules blocked by a script are enforced.

The question that stays

After writing all three post-mortems, I found that most entries in the list of causes were about sequence rather than judgment.

I generally knew what to do. I knew research should come first, that I had to verify the reward structure, and that I had to validate measurement. In some cases, I had even written it in my notes. But the urgent beat the important.

That is why I need a checklist. A checklist does not give me new knowledge. It puts what I already know ahead of what feels urgent.

On the first day of the next competition, I need to ask: Is the task I want to do today the most irreversible decision in this competition, or merely the task that produces results fastest?