06 / 06 — Game tool · Working build
TFT Copilot
A decision engine for Teamfight Tactics. It plans comps around who else is likely to play them, works out roll-down odds exactly, and reviews your real games afterwards. By Riot’s rules, and by design, it reads nothing from a game in progress.
The roll-down, worked out
76.3%chance to find it before the gold runs out
- One slot
- 2.03%
- One shop
- 9.8%
- Gold left
- 13
Simulated roll-downs agree to within a point.
The worked example: level 8, 30 gold, the shop on screen included, one more copy of a 4-cost when you hold two and twenty other 4-costs are out. The engine’s exact answer, 76.3%, matches an independent Set 18 worked example, 76.4%, at the two decimal places its test checks. Each shop slot rolls a cost by the level’s odds, then a champion weighted by the copies left; every copy on any board is out of the pool, and you stop rolling once nothing you need could still appear and be bought.
Split by the clock
- Before the gamePlannerComps ranked by a placement estimate with a 90% range and how often each is contested. Each opens a game plan: boards by stage, item holders, roll timing with exact odds, augments, pivots, and the signs the plan has failed.
- In gameCheat sheetUp to three pinned plans, condensed: boards at levels 7, 8 and 9, items, roll timing, odds tables. Set up before you queue, it reads nothing from the game.
- After the gameCoachYour finished games, from the League client or Riot’s match API: who contested you, item fit, level and gold mistakes, findings grouped by root cause, and the three changes worth most.
- Between gamesLabThe engines on any situation you type in: stay or pivot, each comp’s expected placement term by term, slam or hold an item, augments, Wisps, level or roll, formations against a board.
Riot’s developer policy rejects apps that scout opponents’ boards, give dynamic real-time information, or dictate decisions during a game, and since 6 October 2026 unknown apps can’t read game memory at all. So the cleverness lives before, after and between games, and the one page meant for a game in progress is fixed in advance. An audit of the code found no live read of any kind.
How it decides
- Comps. Each comp is scored by its expected placement: H × place if hit + (1 − H) × place if missed + the cost of changing course H is the joint chance of hitting its key units in its roll window, and the cost of changing course grows with the stage and as health falls.
- Pivots. The best alternative is weighed against what you’re building now, and recommended past a gain of 0.3 places, with lists of what to keep, add and sell.
- Items. An exhaustive search over component pairings, then an exact assignment of the finished items to the carry, the second carry and the tank, valued from the comp’s own match data where it has enough.
- Positioning. A reference formation, then hill-climbing against a specific enemy board, scored on who each enemy hits first, how exposed the carry is, area-damage clumping and misplaced units.
- Comp families. Final boards from Challenger and Grandmaster games, clustered by spherical k-means; each family’s placement is shrunk toward the patch average before it’s tiered, so a small sample can’t top the list.
- Coach. Every board in a real lobby classified, copies of your units held by others counted, item fit scored per unit, level, gold and dead units checked, and the result turned into ranked lessons.
Facts
- Type
- Web app in React and TypeScript, with a small local server that holds the Riot key
- Game
- Teamfight Tactics, Set 18 “Enchanted Wilds”, patch 18.4
- Data
- Community Dragon for the game data; Riot’s match API for ranked games; the League client’s local API, read-only, for your own finished games
- Comp stats
- 7,166 high-ranked matches from patch 18.3, clustered into comp families
- Code
- About 11,200 lines of application code and 2,900 of tests
- Benchmark
- 57 of 58 hand-written decisions; in-sample, since the engine was tuned on them
- Status
- Working build, run locally