How TangoTube Knows
TangoTube holds four and a half million YouTube videos, collected from channels that post tango. Most of them are not tango performances at all, and YouTube cannot tell which are. This is how one application decides what is worth showing, and puts names on it, without ever guessing.
- videos in the database
- 4,566,186videos in the database
- shown to visitors
- 116,404shown to visitors
- channels admitted by a person
- 2,947channels admitted by a person
- entries in the notebook
- 299,869entries in the notebook
- guesses
- 0guesses
Part 01
Most of it is not a tango performance
Strip the tango away and this is an entity resolution problem: unstructured text written by thousands of strangers, a catalogue of real people and real recordings to match it against, and a hard requirement that every match be explainable in one sentence. The rest of this essay is the five things that make that affordable.
Part 02
Decide who is allowed to speak
An import then writes down everything YouTube said, including the parts nothing can read yet. A music panel captured on every import sat unread for two years; when someone finally wrote the reader, 20,435 videos already held their own answer. So re-imports merge into that record and never replace it. Evidence you cannot use yet is still evidence, and disk is cheaper than a second chance.
Part 03
Read the title with rules a person could check
The line sits at 0.50, and it was chosen by measurement rather than taste. Running the real matcher over 600 random videos and 1,417 credits showed what each candidate line would cost: at 0.50, 6% of credits are withheld and two videos lose every credit they had; the next rung up costs ten times as many videos for the same kind of doubt. That table is written in the code beside the number.
Part 04
No single source is allowed to be right on its own
This rule came from a measurement. Audio fingerprinting, the technology behind Shazam, was 85% precise on videos nothing else had named, which sounds like a success. Then we looked only at the conflicts, where it disagreed with the title: it was right 32% of the time. A source that loses two conflicts in three cannot be allowed to overwrite anything, however confident it sounds. That number is why the judge is five lines long and has not changed since.
Part 05
Write down the evidence, and hand the rest to a person
Because the notebook keeps everything, the system is correctable rather than merely accurate. When one rule turned out to be wrong about half the time, nobody had to guess which credits it had made: the notebook said 111,804 of them, on exactly which videos, and they were routed to review the same afternoon. An answer without its evidence is a liability. An answer with its evidence is a dataset.
Take-aways, without the tango
- 01Put the human decision where it is cheapest and covers the most ground.
- 02Store what the source said, raw, and merge on re-read. You will need it later.
- 03Prefer rules a person can check to models a person cannot, and grade every rule.
- 04Choose thresholds by measuring their cost, and print the measurement beside the constant.
- 05Trust comes from independent agreement, never from a single confident voice.
- 06Keep an append-only record of evidence, so every answer is a dataset and every mistake is traceable.
- 07Make “I do not know” a first-class output, route it to a person, and turn their answer into a test.