Zero Korean articles on 15 of 19 days. The other 4 were worse.
The keyword extractor behind our cross-source bonus only matches capitalized ASCII, so Korean headlines cap out at 3.0 against a weekday cutoff above 5. Yet they do run on Sundays and Mondays. Not on merit, but because the English feeds have gone quiet.
This is not a news summary. It is a record of something that happened while building this site.
This site runs unattended at 08:00 KST every day. It pulls 24 hours of articles from 12 feeds, scores them, picks ten, and writes them up in Korean and English. One of those feeds is AI Times, Korea's only dedicated AI trade publication.
Counting all 19 editions published so far, AI Times articles appear on 4 days. The other 15 are zero. I assumed the 15 were the problem. The 4 turned out to be the worse news.
The score is a sum of three things
Each article's score is source weight, plus a cross-source bonus (did other outlets cover the same event, capped at 3.0), plus recency (capped at 1.0). In practice the first two decide the ranking.
To compute the cross-source bonus, the code pulls keywords out of the headline and checks which other outlets share them.
def extract_keywords(title: str) -> set:
words = re.findall(r"[A-Z][A-Za-z0-9\-]{2,}|\d{4,}", title)
return {w for w in words if w not in TITLE_STOPWORDS}
Tokens of three or more characters starting with an ASCII capital, or runs of four or more digits. Korean has no concept of capitalization. Run the headlines we actually published through that function and this is what comes back.
| Headline we published | Keywords extracted |
|---|---|
| Meta appears to be building a Mac desktop app for Meta AI | none |
| Nvidia to invest up to 4 trillion won in power supplier Lancium | none |
| Google unveils Gemma Translator, an AI translator that works offline | none |
| Gartner says China will hold 50% of the AI market by 2027 | 2027 |
That last one, 2027, is a year. Sharing it with another headline is no evidence of a shared event. I replayed the 2026-08-07 morning run that same afternoon. Of roughly 30 AI Times candidates, 6 produced any keyword at all, and none of those 6 overlapped an English headline. The cross-source total across all 30 was zero.
Which puts the ceiling at 3.0
If the cross-source term is always zero, only weight and recency remain. AI Times carries a weight of 2.0 and recency maxes at 1.0, so the ceiling is 3.0. The highest score actually observed was 2.99, which is how I know the arithmetic is right.
| Component | Ars Technica (ranked 7th, ran) | AI Times (best of the day) |
|---|---|---|
| Source weight | 2.5 | 2.0 |
| Cross-source (max 3.0) | 2.0 | 0 |
| Recency (max 1.0) | 0.89 | 0.99 |
| Total | 5.39 | 2.99 |
When the bar is 5.05 and your ceiling is 3.0, you didn't lose the competition. You were never in it. The quality of the article makes no difference to the outcome.
So how did four days get through
The four days are August 2nd, 3rd, 9th and 10th. Every one of them is a Sunday or a Monday.
A Monday 08:00 KST run looks back at the American weekend, when the English-language outlets barely publish. On August 10th only two of the twelve feeds produced a candidate at all, and all 22 candidates came from those two.
| Date | Candidates | Feeds that produced any | AI Times ran | Sources in the edition |
|---|---|---|---|---|
| Aug 8 (Sat) | 62 | many | 0 | 5 |
| Aug 9 (Sun) | 31 | 9 from English feeds, 22 from AI Times | 3 | 6 |
| Aug 10 (Mon) | 22 | two (AI Times, TechCrunch) | 6 | 2 |
Scoring ran normally that morning. The run walked all 22 candidates in score order, took 10 and left 12. There were simply only two outlets to take them from. And I wrote the per-source limit of three to lift entirely when holding it would leave slots empty. Normally that limit spreads an edition out. That morning it let one outlet take six.
Those articles still scored in the twos. There was nothing there that morning to lose the slot to.
Which is exactly why I missed it
Nothing failed. The feed responded normally, every candidate was counted, no error appeared in any log. The public data page reported intake and output honestly.
The zero also didn't persist. It broke every weekend. A permanent zero would have been obvious. Zero on weekdays and a few on weekends just looks like ordinary variance, some days you get crowded out and some days you don't. That weekend drought is why I read a structural exclusion as noise.
I had a per-source acceptance-rate view. But a low acceptance rate doesn't distinguish keeps losing on merit from sits under an unreachable ceiling. Only the score decomposition separates those two, and it wasn't on any screen.
It's not fixed yet
There are now two things to fix, not one. Extend keyword extraction to Korean so the ceiling comes off, and stop a single outlet from taking half an edition on a thin day. The second looks more urgent. The first costs one outlet its fair shot, the second affects all ten articles a reader gets every time the well runs dry.
Fixing either now would make every number quoted above impossible to reproduce. So the order is deliberate. Publish it as found, then append here what changed once it's fixed.