TailMyPicks

Check any Polymarket wallet’s real record.

Wallet 0x41d1…bac0

Rebuilt .

Summary

Qualified picks
155
Categories scored
8
Categories below 50
5

Best Category: Dota2, grading 57 out of 100 (+0.06 per pick).

Best Category Dota2 at 57 out of 100; worst Lol at 48.

What is a Tail Score?

A mark out of 100, per Category. 50 means no edge at all — this wallet did about what the prices it paid implied it would. Above 50 it beat those prices; below 50 it did worse than them.

The scale does not move. 100 is a wallet beating the prices it paid by 0.45 per pick and 0 is losing to them by the same, on every wallet, on every page, in every month. So a grade you screenshot today still means what it meant when you took it, and two wallets can be put side by side.

Nobody reaches either end. Across every wallet TailMyPicks has scored, the marks run from roughly 5 to 87 — which is what a fixed ruler costs, and what buys the sentence above.

It is not a win rate. A wallet can win four Picks in five and still grade below 50, if the market was already pricing those outcomes at 90c — it paid for the wins rather than finding them. The vs expected and Avg entry columns below are what separate the two.

The mark is deliberately pulled toward 50 when there is little evidence. Three lucky Picks do not produce a high grade; several hundred consistent ones do. So a modest grade on thousands of Picks means something a high grade on twelve does not.

Because it is shrunk this way, a Category grade is a conservative reading. The headline figure for a wallet is its best Category, so it always understates how badly the wallet does in its worst one — which is why the table below is per Category and not one blended number.

Record by Category

Ordered by how much this wallet actually traded in each Category, not by score — so the Categories it plays most appear first whether they went well or badly. Open any row to see the picks its numbers were computed from — all of them.

CategoryQualified picksWin ratevs expectedRealizable edgeAvg entryROI per pickTail Score
Lollast resolved Aug 20, 2026, EDT6844.1%30 W · 38 L-1.6wins-0.02per pick46cpaid-10.4%equal weight48-0.02 edge/pick
Lol — the 68 picks behind this row

Every qualified pick this wallet made in Lol, newest first — these are the picks the row above was computed from, not a sample of them. P/L held is what each pick would have been worth held to resolution, not cash this wallet withdrew. Days are shown in US/Eastern, the zone Polymarket writes its markets in. A market name opens TailMyPicks’s own post-mortem of that market — who else was on it, and what they paid — and a result opens that one pick on a page of its own, which is the link to send somebody.

MarketEntrySizeResultResolvedReturnP/L held
LoL: Dplus KIA vs Hanwha Life Esports (BO3) - LCK Round 3-4 Legend Groupbacked Hanwha Life Esports · on Polymarket (opens in a new tab)53c$500Won — open this pick on its own pageAug 20, 2026, EDT+88.7%+$443.4
LoL: BOMBA Team vs Lodis - Game 2 Winnerbacked BOMBA Team · on Polymarket (opens in a new tab)28c$209Lost — open this pick on its own pageAug 18, 2026, EDT-100%-$209.45
LoL: BOMBA Team vs Lodis (BO3) - Rift Legends Regular Seasonbacked Lodis · on Polymarket (opens in a new tab)39c$17Won — open this pick on its own pageAug 18, 2026, EDT+156.4%+$26.05
LoL: Galions vs Karmine Corp Blue - Game 2 Winnerbacked Karmine Corp Blue · on Polymarket (opens in a new tab)43c$100Lost — open this pick on its own pageAug 18, 2026, EDT-100%-$100
LoL: Nongshim Red Force vs DN SOOPers - Game 3 Winnerbacked Nongshim Red Force · on Polymarket (opens in a new tab)50c$300Lost — open this pick on its own pageAug 18, 2026, EDT-100%-$300
LoL: Nongshim Red Force vs DN SOOPers - Game 2 Winnerbacked Nongshim Red Force · on Polymarket (opens in a new tab)50c$33Lost — open this pick on its own pageAug 18, 2026, EDT-100%-$33.3
LoL: Kiwoom DRX vs HANJIN BRION (BO3) - LCK Round 3-4 Rise Groupbacked Kiwoom DRX · on Polymarket (opens in a new tab)52c$600Lost — open this pick on its own pageAug 16, 2026, EDT-100%-$600
LoL: Kiwoom DRX vs HANJIN BRION - Game 2 Winnerbacked HANJIN BRION · on Polymarket (opens in a new tab)33c$100Lost — open this pick on its own pageAug 16, 2026, EDT-100%-$100
LoL: Kiwoom DRX vs HANJIN BRION - Game 1 Winnerbacked HANJIN BRION · on Polymarket (opens in a new tab)57c$250Won — open this pick on its own pageAug 16, 2026, EDT+75.4%+$188.6
LoL: T1 vs Gen.G - Game 2 Winnerbacked T1 · on Polymarket (opens in a new tab)47c$198Lost — open this pick on its own pageAug 16, 2026, EDT-100%-$198
LoL: ThunderTalk Gaming vs Anyone's Legend (BO3) - LPL Group Ascendbacked ThunderTalk Gaming · on Polymarket (opens in a new tab)20c$150Lost — open this pick on its own pageAug 15, 2026, EDT-100%-$150
LoL: Hanwha Life Esports vs KT Rolster - Game 2 Winnerbacked KT Rolster · on Polymarket (opens in a new tab)14c$100Lost — open this pick on its own pageAug 15, 2026, EDT-100%-$100
LoL: Hanwha Life Esports vs KT Rolster (BO3) - LCK Round 3-4 Legend Groupbacked Hanwha Life Esports · on Polymarket (opens in a new tab)53c$122Won — open this pick on its own pageAug 15, 2026, EDT+87.4%+$106.75
LoL: Hanwha Life Esports vs KT Rolster - Game 1 Winnerbacked KT Rolster · on Polymarket (opens in a new tab)55c$63Won — open this pick on its own pageAug 15, 2026, EDT+81.9%+$51.21
LoL: GIANTX vs Team Vitality (BO3) - LEC Regular Seasonbacked GIANTX · on Polymarket (opens in a new tab)35c$150Lost — open this pick on its own pageAug 14, 2026, EDT-100%-$150
LoL: Anyone's Legend vs JD Gaming (BO3) - LPL Group Ascendbacked Anyone's Legend · on Polymarket (opens in a new tab)34c$57Won — open this pick on its own pageAug 14, 2026, EDT+194.1%+$110.66
LoL: MVK Esports vs CTBC Flying Oyster (BO5) - LCP Group Stagebacked MVK Esports · on Polymarket (opens in a new tab)45c$249Lost — open this pick on its own pageAug 14, 2026, EDT-100%-$248.84
LoL: MVK Esports vs CTBC Flying Oyster - Game 4 Winnerbacked MVK Esports · on Polymarket (opens in a new tab)52c$300Lost — open this pick on its own pageAug 14, 2026, EDT-100%-$300
LoL: MVK Esports vs CTBC Flying Oyster - Game 3 Winnerbacked MVK Esports · on Polymarket (opens in a new tab)56c$150Lost — open this pick on its own pageAug 14, 2026, EDT-100%-$150
LoL: T1 vs Dplus KIA (BO3) - LCK Round 3-4 Legend Groupbacked T1 · on Polymarket (opens in a new tab)54c$250Lost — open this pick on its own pageAug 14, 2026, EDT-100%-$250
LoL: T1 vs Dplus KIA - Game 2 Winnerbacked Dplus KIA · on Polymarket (opens in a new tab)45c$60Won — open this pick on its own pageAug 14, 2026, EDT+122.2%+$73.33
Game Handicap: MKOI (-1.5) vs GIANTX (+1.5)backed Movistar KOI · on Polymarket (opens in a new tab)47c$1,500Lost — open this pick on its own pageAug 8, 2026, EDT-100%-$1,500
LoL: Movistar KOI vs GIANTX (BO3) - LEC Regular Seasonbacked Movistar KOI · on Polymarket (opens in a new tab)53c$999Lost — open this pick on its own pageAug 8, 2026, EDT-100%-$999.27
LoL: Movistar KOI vs GIANTX - Game 2 Winnerbacked Movistar KOI · on Polymarket (opens in a new tab)55c$4,000Lost — open this pick on its own pageAug 8, 2026, EDT-100%-$4,000
LoL: Movistar KOI vs GIANTX - Game 1 Winnerbacked Movistar KOI · on Polymarket (opens in a new tab)63c$3,500Lost — open this pick on its own pageAug 8, 2026, EDT-100%-$3,500
Showing 25 of 68 picks, newest first.
CS2last resolved Aug 18, 2026, EDT6250%31 W · 31 L-0.6wins-0.01per pick51cpaid-6.6%equal weight49-0.01 edge/pick
CS2 — the 62 picks behind this row

Every qualified pick this wallet made in CS2, newest first — these are the picks the row above was computed from, not a sample of them. P/L held is what each pick would have been worth held to resolution, not cash this wallet withdrew. Days are shown in US/Eastern, the zone Polymarket writes its markets in. A market name opens TailMyPicks’s own post-mortem of that market — who else was on it, and what they paid — and a result opens that one pick on a page of its own, which is the link to send somebody.

MarketEntrySizeResultResolvedReturnP/L held
Counter-Strike: Omega vs Fire Flux Esports (BO3) - ESL Challenger League Europe Cup #4 Group Abacked Omega · on Polymarket (opens in a new tab)43c$200Lost — open this pick on its own pageAug 18, 2026, EDT-100%-$200
Counter-Strike: Legacy vs MIBR (BO3) - Esports World Cup Group Bbacked MIBR · on Polymarket (opens in a new tab)40c$150Lost — open this pick on its own pageAug 16, 2026, EDT-100%-$150
Counter-Strike: Astralis vs NIP (BO3) - Esports World Cup Group Bbacked NIP · on Polymarket (opens in a new tab)44c$350Lost — open this pick on its own pageAug 16, 2026, EDT-100%-$350
Counter-Strike: BASEMENT BOYS vs INOX Division (BO3) - ESL Challenger League Europe Cup #3 Playoffsbacked INOX Division · on Polymarket (opens in a new tab)62c$194Lost — open this pick on its own pageAug 16, 2026, EDT-100%-$194.29
Counter-Strike: 9z vs magic (BO3) - Esports World Cup Group Dbacked magic · on Polymarket (opens in a new tab)36c$150Won — open this pick on its own pageAug 16, 2026, EDT+177.8%+$266.67
Counter-Strike: Esport BERG vs HAVU (BO3) - CCT Europe Closed Qualifier: Series #7 Group Bbacked HAVU · on Polymarket (opens in a new tab)61c$200Won — open this pick on its own pageAug 16, 2026, EDT+64.3%+$128.61
Counter-Strike: TheMongolz vs paiN (BO3) - Esports World Cup Group Dbacked paiN · on Polymarket (opens in a new tab)41c$150Lost — open this pick on its own pageAug 16, 2026, EDT-100%-$150
Counter-Strike: ex-RUSTEC vs Inner Circle Academy (BO3) - NODWIN Clutch Series Play-In Group Dbacked ex-RUSTEC · on Polymarket (opens in a new tab)46c$400Lost — open this pick on its own pageAug 16, 2026, EDT-100%-$400
Counter-Strike: ex-MANA eSports vs ex-RUSTEC (BO3) - CCT Europe Closed Qualifier: Series #7 Group Abacked ex-MANA eSports · on Polymarket (opens in a new tab)57c$250Lost — open this pick on its own pageAug 16, 2026, EDT-100%-$250
Counter-Strike: BIG vs Spirit (BO3) - Esports World Cup Group Abacked Spirit · on Polymarket (opens in a new tab)58c$250Won — open this pick on its own pageAug 15, 2026, EDT+72.4%+$181.12
Games Total: O/U 2.5backed Over · on Polymarket (opens in a new tab)36c$50Lost — open this pick on its own pageAug 15, 2026, EDT-100%-$50
Counter-Strike: FURIA vs 9z (BO3) - Esports World Cup Group Dbacked FURIA · on Polymarket (opens in a new tab)66c$146Won — open this pick on its own pageAug 15, 2026, EDT+51.5%+$75.18
Counter-Strike: magic vs 3DMAX (BO3) - Esports World Cup Group Dbacked magic · on Polymarket (opens in a new tab)57c$79Won — open this pick on its own pageAug 15, 2026, EDT+75.4%+$59.6
Counter-Strike: Wildcard vs paiN (BO3) - Esports World Cup Group Dbacked Wildcard · on Polymarket (opens in a new tab)44c$400Lost — open this pick on its own pageAug 15, 2026, EDT-100%-$400
Counter-Strike: TheMongolz vs Natus Vincere (BO3) - Esports World Cup Group Dbacked Natus Vincere · on Polymarket (opens in a new tab)60c$620Won — open this pick on its own pageAug 15, 2026, EDT+67.5%+$418.25
Counter-Strike: PARIVISION vs 100 Thieves (BO3) - Esports World Cup Group Cbacked PARIVISION · on Polymarket (opens in a new tab)55c$250Won — open this pick on its own pageAug 14, 2026, EDT+81.8%+$204.55
Games Total: O/U 2.5backed Under · on Polymarket (opens in a new tab)66c$150Lost — open this pick on its own pageAug 14, 2026, EDT-100%-$150
Counter-Strike: FUT Esports vs MOUZ (BO3) - Esports World Cup Group Cbacked MOUZ · on Polymarket (opens in a new tab)66c$500Lost — open this pick on its own pageAug 14, 2026, EDT-100%-$500
Counter-Strike: TYLOO vs Lynn Vision (BO3) - Esports World Cup Group Cbacked TYLOO · on Polymarket (opens in a new tab)70c$250Lost — open this pick on its own pageAug 14, 2026, EDT-100%-$250
Games Total: O/U 2.5backed Over · on Polymarket (opens in a new tab)68c$250Lost — open this pick on its own pageAug 14, 2026, EDT-100%-$250
Counter-Strike: NIP vs BetBoom Team (BO3) - Esports World Cup Group Bbacked NIP · on Polymarket (opens in a new tab)54c$200Won — open this pick on its own pageAug 14, 2026, EDT+83.9%+$167.76
Counter-Strike: Team Falcons vs Astralis (BO3) - Esports World Cup Group Bbacked Team Falcons · on Polymarket (opens in a new tab)80c$500Won — open this pick on its own pageAug 13, 2026, EDT+25%+$125
Games Total: O/U 2.5backed Over · on Polymarket (opens in a new tab)51c$228Lost — open this pick on its own pageAug 13, 2026, EDT-100%-$228
Counter-Strike: Legacy vs FaZe - Map 2 Winnerbacked FaZe · on Polymarket (opens in a new tab)27c$75Won — open this pick on its own pageAug 13, 2026, EDT+270.4%+$202.78
Map Handicap: TS (-1.5) vs Luminosity (+1.5)backed Spirit · on Polymarket (opens in a new tab)62c$200Won — open this pick on its own pageAug 13, 2026, EDT+61.3%+$122.58
Showing 25 of 62 picks, newest first.
Dota2last resolved Aug 16, 2026, EDT988.9%8 W · 1 L+2.2wins+0.24per pick65cpaid+35%equal weight57+0.06 edge/pick
Dota2 — the 9 picks behind this row

Every qualified pick this wallet made in Dota2, newest first — these are the picks the row above was computed from, not a sample of them. P/L held is what each pick would have been worth held to resolution, not cash this wallet withdrew. Days are shown in US/Eastern, the zone Polymarket writes its markets in. A market name opens TailMyPicks’s own post-mortem of that market — who else was on it, and what they paid — and a result opens that one pick on a page of its own, which is the link to send somebody.

MarketEntrySizeResultResolvedReturnP/L held
Dota 2: LGD Gaming vs Team Yandex (BO3) - The International Elimination Roundbacked Team Yandex · on Polymarket (opens in a new tab)55c$71Won — open this pick on its own pageAug 16, 2026, EDT+82.1%+$58.31
Dota 2: Iron Wing vs Team Liquid (BO3) - The International Group Stagebacked Iron Wing · on Polymarket (opens in a new tab)50c$105Lost — open this pick on its own pageAug 15, 2026, EDT-100%-$105
Dota 2: TEAM VISION vs Team Spirit (BO3) - The International Group Stagebacked TEAM VISION · on Polymarket (opens in a new tab)62c$236Won — open this pick on its own pageAug 15, 2026, EDT+60.8%+$143.48
Dota 2: BoomBoys vs Aurora (BO3) - The International Group Stagebacked Aurora · on Polymarket (opens in a new tab)73c$250Won — open this pick on its own pageAug 15, 2026, EDT+37.1%+$92.67
Dota 2: Vici Gaming vs GamerLegion (BO3) - The International Group Stagebacked Vici Gaming · on Polymarket (opens in a new tab)70c$200Won — open this pick on its own pageAug 14, 2026, EDT+42.9%+$85.79
Dota 2: Xtreme Gaming vs HULIGANI (BO3) - The International Group Stagebacked Xtreme Gaming · on Polymarket (opens in a new tab)69c$300Won — open this pick on its own pageAug 14, 2026, EDT+45%+$135.14
Dota 2: TEAM VISION vs Team Falcons (BO3) - The International Group Stagebacked TEAM VISION · on Polymarket (opens in a new tab)63c$200Won — open this pick on its own pageAug 13, 2026, EDT+58.7%+$117.46
Dota 2: LGD Gaming vs Team Resilience (BO3) - The International Group Stagebacked LGD Gaming · on Polymarket (opens in a new tab)65c$200Won — open this pick on its own pageAug 13, 2026, EDT+54.6%+$109.29
Dota 2: Team Falcons vs Team Liquid (BO5) - 1win Essence Playoffsbacked Team Liquid · on Polymarket (opens in a new tab)75c$3,750Won — open this pick on its own pageAug 5, 2026, EDT+33.5%+$1,254.66
All 9 picks, newest first.
Tennis Inactivelast resolved Aug 3, 2026, EDT837.5%3 W · 5 L-0.2wins-0.02per pick39cpaid+2.4%equal weight490.00 edge/pick
Tennis — the 8 picks behind this row

Every qualified pick this wallet made in Tennis, newest first — these are the picks the row above was computed from, not a sample of them. P/L held is what each pick would have been worth held to resolution, not cash this wallet withdrew. Days are shown in US/Eastern, the zone Polymarket writes its markets in. A market name opens TailMyPicks’s own post-mortem of that market — who else was on it, and what they paid — and a result opens that one pick on a page of its own, which is the link to send somebody.

MarketEntrySizeResultResolvedReturnP/L held
National Bank Open: Michael Zheng vs Miomir Kecmanovicbacked Miomir Kecmanovic · on Polymarket (opens in a new tab)45c$150Won — open this pick on its own pageAug 3, 2026, EDT+122.2%+$183.33
Canadian Open: Matteo Berrettini vs Mariano Navonebacked Mariano Navone · on Polymarket (opens in a new tab)33c$100Won — open this pick on its own pageAug 3, 2026, EDT+203%+$203.03
Canadian Open: Aleksandar Kovacevic vs Nuno Borgesbacked Aleksandar Kovacevic · on Polymarket (opens in a new tab)25c$100Lost — open this pick on its own pageAug 3, 2026, EDT-100%-$100
National Bank Open: Lois Boisson vs Antonia Ruzicbacked Lois Boisson · on Polymarket (opens in a new tab)74c$150Lost — open this pick on its own pageAug 3, 2026, EDT-100%-$150
National Bank Open: Emerson Jones vs Lanlana Tararudeebacked Emerson Jones · on Polymarket (opens in a new tab)33c$100Lost — open this pick on its own pageAug 3, 2026, EDT-100%-$100
National Bank Open: Yulia Putintseva vs Shuai Zhangbacked Shuai Zhang · on Polymarket (opens in a new tab)34c$100Won — open this pick on its own pageAug 3, 2026, EDT+194.1%+$194.12
Plovdiv 2: Yanaki Milev vs Oriol Roca Batallabacked Oriol Roca Batalla · on Polymarket (opens in a new tab)52c$150Lost — open this pick on its own pageAug 3, 2026, EDT-100%-$150
Warsaw: Katarzyna Kawa vs Linda Fruhvirtovabacked Linda Fruhvirtova · on Polymarket (opens in a new tab)20c$100Lost — open this pick on its own pageAug 3, 2026, EDT-100%-$100
All 8 picks, newest first.
Valorant Inactivelast resolved Aug 7, 2026, EDT450%2 W · 2 L-0.1wins-0.03per pick53cpaid-21.7%equal weight490.00 edge/pick
Valorant — the 4 picks behind this row

Every qualified pick this wallet made in Valorant, newest first — these are the picks the row above was computed from, not a sample of them. P/L held is what each pick would have been worth held to resolution, not cash this wallet withdrew. Days are shown in US/Eastern, the zone Polymarket writes its markets in. A market name opens TailMyPicks’s own post-mortem of that market — who else was on it, and what they paid — and a result opens that one pick on a page of its own, which is the link to send somebody.

Europa Conference Leaguelast resolved Aug 12, 2026, EDT250%1 W · 1 L+0.3wins+0.13per pick37cpaid-12.3%equal weight51+0.01 edge/pick
Europa Conference League — the 2 picks behind this row

Every qualified pick this wallet made in Europa Conference League, newest first — these are the picks the row above was computed from, not a sample of them. P/L held is what each pick would have been worth held to resolution, not cash this wallet withdrew. Days are shown in US/Eastern, the zone Polymarket writes its markets in. A market name opens TailMyPicks’s own post-mortem of that market — who else was on it, and what they paid — and a result opens that one pick on a page of its own, which is the link to send somebody.

MarketEntrySizeResultResolvedReturnP/L held
Will Paris Saint-Germain win on 2026-08-12?backed Yes · on Polymarket (opens in a new tab)57c$1,472Won — open this pick on its own pageAug 12, 2026, EDT+75.5%+$1,110.92
Will Paris Saint-Germain vs. Aston Villa end in a draw?backed Yes · on Polymarket (opens in a new tab)17c$63Lost — open this pick on its own pageAug 12, 2026, EDT-100%-$63
All 2 picks, newest first.
UFClast resolved Aug 16, 2026, EDT1100%1 W · 0 L+0.3wins+0.25per pick75cpaid+33.3%equal weight51+0.01 edge/pick
UFC — the 1 pick behind this row

Every qualified pick this wallet made in UFC, newest first — these are the picks the row above was computed from, not a sample of them. P/L held is what each pick would have been worth held to resolution, not cash this wallet withdrew. Days are shown in US/Eastern, the zone Polymarket writes its markets in. A market name opens TailMyPicks’s own post-mortem of that market — who else was on it, and what they paid — and a result opens that one pick on a page of its own, which is the link to send somebody.

MarketEntrySizeResultResolvedReturnP/L held
UFC 330: Islam Makhachev vs. Ian Machado Garry (Welterweight, Main Card)backed Islam Makhachev · on Polymarket (opens in a new tab)75c$500Won — open this pick on its own pageAug 16, 2026, EDT+33.3%+$166.67
All 1 picks, newest first.
MLB Inactivelast resolved Aug 8, 2026, EDT10%0 W · 1 L-0.4wins-0.44per pick44cpaid-100%equal weight48-0.02 edge/pick
MLB — the 1 pick behind this row

Every qualified pick this wallet made in MLB, newest first — these are the picks the row above was computed from, not a sample of them. P/L held is what each pick would have been worth held to resolution, not cash this wallet withdrew. Days are shown in US/Eastern, the zone Polymarket writes its markets in. A market name opens TailMyPicks’s own post-mortem of that market — who else was on it, and what they paid — and a result opens that one pick on a page of its own, which is the link to send somebody.

MarketEntrySizeResultResolvedReturnP/L held
Atlanta Braves vs. New York Yankeesbacked Atlanta Braves · on Polymarket (opens in a new tab)44c$1,500Lost — open this pick on its own pageAug 8, 2026, EDT-100%-$1,500
All 1 picks, newest first.

vs expected is how many more (or fewer) Picks this wallet won than the prices it paid implied it would. It is the column that tells a real edge apart from a record bought by backing favourites. Realizable edge is what that comes to per Pick for somebody copying the wallet, after the cost of getting in behind it. Avg entry is the average price it paid, so a strong record built on heavy favourites shows as one. ROI per pick counts every Pick equally rather than by size, which is how a record earned across many Picks is told apart from one carried by a few large ones. Days are shown in US/Eastern, the zone Polymarket writes its markets in — an American night game settles after midnight UTC, so any other zone would name the day after the one it was played on. Inactive means nothing has resolved in that Category recently. The score is kept and the wallet stays reachable here; it only leaves the default leaderboard.

Not every trade counts. A Pick has to clear four thresholds to be scored.

TailMyPicks scores a wallet on what it can actually be judged on: positions held to resolution, in markets with enough volume to be real, at prices where being right was not already priced in.

  • The market traded at least $500.
  • The entry price was between 0.00 and 0.80 — a near-certainty is not a call.
  • The position was at least $10 — dust is not a position.
  • The market has resolved, so there is a right answer to grade against.

Thresholds behind these numbers: set by an operator decision, not measured.