ZENKO
Closed beta

Data Usage · Teamfight Tactics

How Zenko analyzes Teamfight Tactics

What we read from the Riot API, how often we check it, how challenges settle on your placement and final board, and how targets reset between TFT sets. This page is for players who want the methodology behind the numbers, the challenge hub itself stays focused on the picks.

What we read from Riot

Zenko reads match history and account data from the Riot Games API using the documented endpoints for TFT:

  • Account and Summoner to link your Riot ID and summoner profile.
  • TFT Match to fetch detailed per-match stats: final placement (1st to 8th), the units and traits on your final board, and game length.
  • TFT League to read your current ranked tier and LP, and your Hyper Roll rating.
  • Spectator to see when a game you are playing has started, while you have a challenge running.
  • Data Dragon (static assets, served directly by Riot with no API key) and Community Dragon, a public mirror of game assets, to display unit, trait and item artwork.

We do not use any undocumented endpoints. All data is read-only public data tied to your linked TFT account; Zenko never makes changes to your account or sends commands.

How challenges settle

Each TFT challenge is a target for your ranked games, such as "finish in the top 4" or "finish in the top 4 with a given trait active on your final board". Most are settled by one game: the first qualifying ranked game you begin within 12 hours decides it, and meet the target and you win, miss it and the challenge ends as a loss. An Off-Meta challenge can ask for up to three of your next ranked games instead, every one of them a top 4 finish. When a challenge asks for a win, a top 4 finish is a win.

What qualifies: a ranked game on your linked account that you begin after starting the challenge and within 12 hours. TFT has no remakes, so every finish counts, short games and early exits included, and a game where you go AFK keeps the placement you were eliminated at. Normal, Hyper Roll, Double Up and limited-time modes do not count, and neither does a game you were already in when you started the challenge.

On a one-game challenge, a game without the trait your challenge asks for counts as a lost try, whatever you finished: it uses a retry, and with no retries left it ends the challenge as a loss. A game you lose on a challenge that asks for a win counts the same way. If time runs out before a game decides a one-game challenge, it is cancelled and any entry is returned, unless a game counted as a lost try: then it ends as a loss.

If time runs out on a challenge over several games, the games you played decide it, and falling short is a loss. If you played none, any entry is returned. If its retries run out before a win, it ends as a loss. On an Off-Meta challenge, if time runs out and you haven't lost a game, any entry is returned. There, a top 4 finish without one of its comps counts as a lost try that uses a retry, so a run of those alone ends as a loss, and a lower finish is a loss whatever comp you played.

How often we check

While a challenge is running, Zenko checks about once a minute whether you are in a game. While you play, it looks every 30 seconds; once the game ends it checks your match history every 15 seconds for about six minutes, so your result follows shortly after Riot records the match. With no game in progress it checks every three minutes. Your running challenge in the Activity panel has a "Check for match" button, usable every two minutes.

With no challenge running, your match history and rank refresh on a schedule that follows how recently you played: about every hour if you played in the last day, every six hours if you played in the last week, and once a day otherwise, or once a day however much you play if you have not played a challenge on Zenko in 30 days. Your ranked match history is also brought up to date every six hours.

Every one of these checks runs through Riot's rate limits, reads documented endpoints only, and never sends commands to your account.

Trait and comp qualifiers

A TFT challenge can scope itself to a trait or a comp, either built into the card or added in the challenge drawer before you start. Zenko reads the traits active on your final board in each game: a trait counts when it is active at any tier. A game where it is not active counts as a lost try, and so does a top 4 finish without one of an Off-Meta challenge's comps.

Without a qualifier, the challenge counts your next ranked game whatever you play.

Handling set rotations

Riot rotates the TFT set every few months, introducing new champions, traits, and mechanics. Zenko checks for new TFT data daily and picks up each new set's units and traits, and a trait from the old set can no longer be added to a challenge.

Your performance baselines reset per set. Targets are built only from games on the set you are playing now, and games from the previous set are dropped rather than carried over. A new set does not inherit outdated estimates from the old one.

How difficulty adapts to your performance

Targets re-tune to your recent placement history on the current set. Each one starts from what you usually reach and asks for a little more, and a harder level asks for more again. A hot streak raises your next targets, a cold streak relaxes them.

This is personal tuning, not an alternate ranking system. Zenko does not publish a public leaderboard, and does not re-rank Riot's TFT ladder. The difficulty tuning is internal to Zenko and invisible to other players. The performance percentile on your profile is a personal signal: it reflects how your play compares within the Zenko player cohort, derived from your own match history. It is not a skill rating, an MMR or ELO estimate, or a ranking of all TFT players.

A trait qualifier has its own baseline once you have played enough games with that trait, so a target for a trait reflects how you place when you play it, and falls back to your overall placements until then.

Your data and control

What we store: your TFT account link, the matches we read (for settlement and your match history), your ranked tier, and aggregated analysis metrics. All of this is derived from public match data from the Riot API.

What we do not store: passwords, email addresses tied to your Riot account, or any data from your Riot account besides what the public API returns.

Unlinking: a linked account is locked to your profile. To change or remove it, contact Zenko at support@zenko.gg. When an account is unlinked, we delete the analysis and rank data built from it and mark the link released. The match records we read are kept against that Riot account, so linking it again does not re-read them, and they are cleared if a different Zenko player links it.

For detailed privacy and data retention policies, see /privacy and /legal.

Powered by Riot Games API

League of Legends and Teamfight Tactics are trademarks of Riot Games, Inc. Zenko is not endorsed by, affiliated with, or associated with Riot Games, Inc.

Have a question this page did not answer? Get in touch.