Your mistakes, measured.
A chess engine doesn't tell you that you played badly. It tells you the position was worth +1.5, you played Nf3, and now it's −0.8. RiftCoach does that for League.
Each mistake is reported as the win probability it cost you, anchored to the second it happened. Your replay jumps to eight seconds before, because the mistake is the decision, not the consequence.
14:22 positioning
A mistake is a number, not an adjective
Language models are notoriously bad at calibrating severity: they call everything important, or nothing. So severity isn't left to the model. Game state is converted into gold-equivalent advantage, then into win probability, and the mistake is the drop it caused.
The evaluation is never a lone number, because a coach has to say why. The same position at 20 minutes, decomposed:
| Gold | −5,550 |
|---|---|
| Experience | −486 |
| Towers | −2,000 |
| Dragons | +1,300 |
| Herald | −450 |
| Grubs | −360 |
| Advantage | −7,546 |
It also separates blame, because dying yourself and your team losing Baron while you pushed top are different problems:
- direct
- You died, or you handed over the kill or the objective. An individual decision.
- positional
- It happened away from you, and you were on the wrong side of the map. Map reading and rotations.
- team
- You were there and it still went wrong. Fight execution.
replay on top of the game
The report doesn't stay in a tab
Reading that you misplayed at 14:54 is one thing. Watching the card appear on screen, at the minute it happened, with the wave still pushing and the dragon still on the timer, is another. Open the replay in the League client and RiftCoach draws on top of it.
This only works with a replay running, never during a live game, and the refusal is enforced in code. It's the same distinction a football coach makes when pausing Sunday's tape: the match is over, there is nothing left to win.
lane minute by minute
Against whoever stood in front of you
Gold, experience and farm against your direct opponent, minute by minute. Above the line you were ahead; below it, behind.
It is not a comparison against challenger players, and that is deliberate: matching your curve against theirs would need their match timelines, minute by minute. Your direct opponent is the against someone your own match already supports, and the one who actually decided your lane.
evidence three tiers
Every claim carries its evidence
Riot's API has no wave-state field. So a tool that confidently tells you to freeze is guessing, and you have no way to know which parts to trust. Each statement is tagged with how it was obtained.
-
T1
Measured
Read straight from Riot's telemetry. "CS at 10 minutes was 61." Nothing between the number and the source.
-
T2
Derived
Calculated from telemetry plus a stated assumption. "Lost priority at 14:10, derived from CS pace and position." The assumption is mandatory.
-
T3
Inferred
Estimated from video or heuristics. "The wave looked like a slow push." Useful, and never presented as fact.
Item and champion numbers are injected from a patch-pinned database, and a validator rejects anything that doesn't exist in your patch. It will never tell you to build something removed six patches ago.
patterns from the 5th
It tells habit from accident
One report can't answer the question that matters: was that a pattern, or was it one bad game? From your fifth analyzed match onward, RiftCoach counts.
Vision: appeared in 5 of your last 8 matches as mid, average severity 3.4.
Sample: 8 matches as mid, patch 16.19. A match counts once per category.
The counting happens in Python, never in the model. The model receives the finished number and writes on top of it. That separation is what stops a confident "you always do this" built on two games. Your history is a file on your machine, and one command erases it for good.
limits declared
What it doesn't do
- It never runs during a live game. Not as a policy, but architecturally. The only component that talks to the League client refuses to work outside replay mode, and it rechecks before every single request.
- It can't judge trades or combos from telemetry. Riot's timeline emits no ability-use event at all, and health is sampled once per minute, which is useless for a three-second trade. Those only get real evidence from the video path, and even there they stay inferred.
- Position resolution is one point per minute. That's what the timeline gives, so every measured mistake is accurate to the minute, not the second, and the minimap draws an area, not a dot.
Coaching more than yourself?
RiftCoach is free forever for your own matches. That's a rule of the project, not a trial.
What ToriiTech sells is a separate hosted service, for the things a single player has no use for.
Join the waitlist. We'll ask what you need before building it.
- A roster of students in one place
- Track one student across matches and patches
- Share a report with a student by link
- Export to PDF or spreadsheet
- Annotate on top of a student's report
Review your last match
Install it, paste your Riot key, pick the match. Ninety seconds later the report opens in your browser.
Download for Windows- File
RiftCoachSetup.exe, 38 MB- Version
- 0.1.2
- Requires
- Windows 10 or later. Installs without asking for administrator.
- Signature
- None. Windows will say the publisher is unknown — click More info and then Run anyway.
- sha256
-
a9bfdbdb1bdd8090073b7ed767b801d4aa577c7521815a09cd86ceb4355060d9With no certificate, this is how you check where the file came from:Get-FileHash RiftCoachSetup.exe - Licence
- Proprietary, free for your own matches. Anyone who installed 0.1.2 or earlier is entitled to that version's source: see the terms.