RiftCoach

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.

Download for Windows Free. No account. Works without a GPU.
Match BR1_3285636947 Patch 16.19 Mid Ahri into Fizz
0:00 35:00 50%

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.

A League of Legends replay with a RiftCoach card overlaid, reading ERRO #4, category POSITIONING, at 3:10: three of your four deaths happened in the middle of bot lane.
The card shows up before the mistake, not after. Category, moment, and what the metric saw — here, that three of four deaths happened in the same place. On the minimap, AQUI marks where. Top right, how many mistakes are left and when the next one comes.
The same replay with hand-drawn red strokes over the lane, and a SUA MARCAÇÃO card at 4:21 carrying the note: hold the freeze and do not let Jhin push the wave.
And you write and draw on it. The note is anchored to the second you wrote it, and joins the same timeline as the AI's marks. The comparison is what teaches: where it flagged a serious mistake and you felt nothing, and where you felt you misplayed and the metric saw nothing.

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.

Gold against Sivir, por minuto −6.175 at the end

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.

  1. T1
    Measured

    Read straight from Riot's telemetry. "CS at 10 minutes was 61." Nothing between the number and the source.

  2. T2
    Derived

    Calculated from telemetry plus a stated assumption. "Lost priority at 14:10, derived from CS pace and position." The assumption is mandatory.

  3. 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.

5 of 8 matches 63% getting worse

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
a9bfdbdb1bdd8090073b7ed767b801d4aa577c7521815a09cd86ceb4355060d9 With 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.