Built and run by James Boucher — an individual, not a company. Questions, bugs and requests: get in touch.

Atmos Football Stats & Team Generator

About the App

The app that started as a side project for tracking game results has turned into a one stop shop for the casual weekly sports group with teams from 4 to 11 aside. By inputting the weekly teams list and score, the app generates group stats, player statistics and player ratings. Allowing automated generation of balanced teams with a variable group with as little as 5 weeks of data. While answering that age old question: "Who in this group is the best?". Developed with historic match results data and player records over 8 years — more than 250 games and 110 players. Now available for other casual groups.

Download the Android App

Atmos Football is available as a native Android app on the Google Play Store — free to download.

Download on Google Play →

The Android app gives you the full Atmos Football experience on your phone, with a few extras you don't get in the browser:

The web version at atmos-football.netlify.app is still fully supported and receives all the same feature updates. If you're on iOS or prefer the browser, you can use the web app directly.

Features

Sign Up

A dedicated screen (Match Day → Sign Up) allowing each player to mark if they are playing that week. When a session is scheduled, a weather forecast for the game day is shown automatically.

Leaderboard

Tracks individual player performance: games, wins, draws, losses, goals for/against, goal difference, win percentage, and a composite Rating. Sortable and filterable. The table shows the essentials by default — extra columns (Points, Form, and the Ridge and Bradley–Terry alternative ratings, where enabled) live under ▸ Advanced → Columns, and your selection is remembered on your device. The same ▸ Advanced panel lets you try out the rating engine's settings — convergence passes, inactivity decay, K reset and chemistry weight. The group's own tuning (Individual Weight and Tune Weights) is set by organisers in Admin → Settings, and an "Organiser Skill Adjustment" toggle lets them apply manual skill tiers to new or unsettled players.

Elo Rating System

Each player has a dynamic Elo rating updated after every match. The system accounts for opponent strength, margin of victory, and team size. New players' ratings are gradually phased in over their first several sessions to prevent a lucky (or unlucky) early run from distorting the standings.

Rating scale: Every player starts at 1500, which represents the group average. Over time, ratings settle above or below 1500 based on actual performance relative to teammates and opponents. Ratings are not an absolute measure of football ability — they reflect performance within the recorded game history only and are only as accurate as the data available. New players or those with few recorded games will have less settled ratings. See the About Elo tab in the app for a full explanation.

How quickly do ratings settle? A statistical analysis of the historic dataset (256 games, 110 players) found that team balancing becomes meaningfully better than random within about 15–20 group games — or as few as 5–10 when the organiser has set skill tiers for most players. For an individual player, plan on 15–20 personal games before a rating is directionally useful, and 50+ before it's reliable. Individual leaderboard positions take much longer — roughly 150 group games before rankings are broadly recognisable, and 200+ before precise positions settle. For the further detailed analysis with uncertainty tables and Monte Carlo validation, see the About Elo section in the app.

Team Generator {#team-generator}

Uses Elo ratings plus pairwise and trio chemistry data to generate optimally balanced teams from the available player pool. Exhaustive search across all possible splits. Supports guest players with preset Elo tiers — guests start at the Average rating, and you can change any guest's rating (Low through High) straight from their chip without deleting and re-adding them, so a newcomer who signed up by name keeps their real name in the generated teams, the vote options, and the locked line-up. Where the alternative rankings are enabled, organisers can choose to balance on Ridge, Ridge (Conservative), or Bradley–Terry instead of Elo — generated teams carry a badge showing which rating did the balancing.

Generate 3 Different Options. Under the Generate button, this finds three sets of teams that are all closely balanced but mix people up as much as the squad allows — so a vote gives everyone a genuine choice of who they play with. Option 1 is exactly what Generate gives you. Each other option shows how much less balanced it is than Option 1 (usually a point or two) and lists who has swapped sides. Lock Teams, Copy for WhatsApp and Send to Game Analysis all use whichever option is showing. Organisers can put every option on the ballot at once with ➕ Save all 3 to the vote (options already on the ballot are skipped); players can suggest whichever option they like.

The chemistry slider shapes how the teams are balanced, not how varied they are — for variety, use Generate 3 Different Options.

Organisers have several tools to fine-tune the generation:

Note: Generated teams are mathematically balanced according to current ratings, but ratings are based on historical data and may not reflect today's form. Manual adjustments should always be considered — the tool is a starting point, not a final verdict. Use the Organiser Skill Adjustment toggle on the Leaderboard to account for players whose ratings haven't yet settled.

Suggesting teams {#team-submissions}

Some weeks your organiser opens the door to team suggestions. Instead of the organiser picking the sides alone, any player can put a split forward and let the group vote on it.

How to send one in. Open the Team Generator, pick who's playing, generate a set of teams, then press 📤 Submit These Teams. You can do the same from Game Analysis once you've set a fixture up there. Your suggestion then appears on the Sign Up screen under Your Team Suggestion, with a label showing where it has got to:

Label What it means
Awaiting review Sent in. Your organiser hasn't looked at it yet.
On the ballot Accepted — it's one of the options everyone votes on.
Not used this week Not taken forward. Your organiser may have attached a short note saying why.

What you need. An account, linked to your name on the group's player list. If you're signed in but haven't linked yet, the Sign Up screen offers you the link — it takes a moment, and it's what tells the app which player is you. Without it there's no way to tell whose suggestion it is.

When you can send one. Only while the window is open. It's shut by default and your organiser opens it for the week, so if there's no submit button, a closed window is the usual reason. Once voting starts the suggestion stage is over.

One each, and you can change your mind. Everyone gets a single suggestion per week. Building a different line-up and submitting it replaces your previous one rather than adding a second, and you can withdraw yours entirely at any point while it's still awaiting review. Once it's on the ballot it's fixed — people may already have voted for it.

Whether it makes the ballot. Your organiser either reviews each suggestion by hand or has set them to be approved automatically — in which case yours goes onto the ballot the moment you send it; that's their choice, made when they set the week up. Either way there's room for up to twenty options on the ballot and they're taken in the order they arrived, so a suggestion sent early has the better chance on a busy week. If two people propose the same split the app spots it, even when they've named the sides the other way round — and with automatic approval on, the later copy is held back for your organiser rather than added as a second identical option.

Nobody sees whose suggestion is whose. When voting opens, the options on the ballot are anonymous. Your organiser can see who sent each one in their review panel; other players cannot, and neither can anyone viewing the group with a share code. The app doesn't publish an identifying reference alongside an option either — a suggestion is filed under your account, so publishing that reference would name you just as surely as printing your name would. This is deliberate: it keeps the vote about the teams rather than about who proposed them.

Game Analysis {#game-analysis}

Pre-match win probability breakdown and post-match Elo impact analysis. Accepts team imports directly from the Team Generator.

Recent Familiarity {#recent-familiarity}

When you set up a fixture, Game Analysis shows a Recent Familiarity card listing pairs of players who have played together (chemistry) or against each other (anti-chemistry) often in recent games, with the head-to-head win/loss record where it's interesting. Use it to spot match-ups that have history — useful context the raw Elo numbers don't capture.

The Peer Ratings section also shows how much of the selected lineup has been rated, how many are rating others, and which players don't yet have any ratings. When both teams have enough peer data, a Peer rating vs Elo Rating bar appears for each team, comparing the team's average peer skill assessment against their average Elo — useful for spotting whether one side is collectively rated higher or lower by peers than the Elo balance suggests.

Team Comparison {#team-comparison}

Game Analysis has two views: Single game and Team comparison. Team comparison puts several team options for the same squad side by side, so you can see what is actually different between them before you vote.

Vote counts are never shown here, and before the vote opens players can't see other people's suggestions — only organisers can.

Season Table

Seasonal standings with W/D/L records and form indicators for a configurable game range. Switch to Season Points Graph for a cumulative line chart showing how each player's points total built up across the season — your linked player is highlighted automatically. Includes a shareable image export.

The exported image shows the season it covers, such as 2026/27. That label comes from the first game of the season, so it stays correct year to year.

Organisers can End Season to seal the current season and give it a name (e.g. "Winter 2025/26"). The top 3 finishers who have linked accounts receive a 🥇🥈🥉 achievement on their profile, visible in My Stats and on their portable profile card when applying to join other groups.

Player Cohorts {#player-cohorts}

An organiser can tag some players as a cohort — a named group within the squad, such as a work team. Once a cohort exists, a button with its name (👥) appears on the Leaderboard, the Season Table, every Fantasy League view (Table, Ghost, Alpha and Graphs) and Group Records. Tap it to show just those players; tap it again, or Show everyone, to go back.

Each page treats the filter slightly differently, because their positions mean different things:

The filter switches off when you leave the page, so a table is never left filtered without you knowing.

Who can see a cohort. A cohort's name and members are stored on the group's record, which the app reads without a share code, so treat them as visible to anyone who can see the group. Only organisers can change who is in one. See the Privacy Notice for more.

Chemistry & Anti-Chemistry {#chemistry}

Tracks pairwise and trio win rates when players are on the same team (Together) or opposing teams (Against) — both now live on the single Chemistry tab, switched at the top. A draw counts as half a win, the same way it does for ratings. Minimum game threshold applied to filter noise, and your setting is remembered per group. A row of chips above the tables jumps straight to each list (handy in larger groups), and the Highlight picker marks every row involving a chosen player — it starts on your own linked player, so your partnerships and rivalries stand out immediately. For a full head-to-head breakdown against one specific player, use Player Stats.

Player Stats

Per-player Elo history chart, head-to-head records, and a detailed pair deep-dive. Covers the full dataset.

Includes an Attack & Defence profile for players with 10 or more recorded games — a supplementary view showing how a player's team tends to perform in scoring and conceding relative to the size-adjusted average. Six player archetypes are derived from the atk/def split (Attacker, Defender, All-Rounder, Glass Cannon, Anchor, and Developing for a player below average at both). Attack & Defence indicators are also shown in the Game Analysis tab when building team comparisons.

⚠️ Attack & Defence ratings are experimental and informational only. They do not affect Elo ratings, team generation, or any other metric. See the About Elo section in the app for full methodology and caveats.

Also includes a Form score (Calgorithm) for players with 5 or more appearances — a rolling metric representing recent match performance. Each game, a player's form score decays by 10% and is then incremented by their result (+1 win, −1 loss, +0.5 draw, −0.05 absent), adjusted for how surprising the result was relative to team strength. A form chart plots the score over time, and a summary row shows current score, rank, and peak. The form score is normalised to the group median when displayed on the Leaderboard (the middle-ranked player reads ~0). Organisers can enable the Form column via Admin → Group Management.

⚠️ Form scores are experimental and informational only. They do not affect Elo ratings, team generation, or any other metric. See the About Elo section in the app for the full methodology and caveats.

Where the Fantasy League feature is switched on for your group, players whose FPL team has been matched to their name also get a Fantasy view here, showing their fantasy season. See Fantasy Premier League below.

Peer Ratings {#peer-ratings}

Also includes a Peer Ratings section (when enabled by the organiser) showing how teammates collectively rate a player:

Ratings are collected from all linked players in the group and averaged. A minimum number of raters is required before the charts are shown (set by the organiser, default 3).

If you have a linked account, a Rate this player button appears on each player's stats page so you can submit or update your rating directly from there. When you open the rating sliders, a live reference row shows the recipient's Elo-derived rating alongside your current peer skill score, updating as you move the sliders, so you can see where your assessment places them.

You can also rate teammates from the My Stats tab.

ℹ️ Peer ratings are informational only. They are not connected to Elo rankings, team generation, or any other metric — they exist purely as a fun community feature.

Game History

(Requires a signed-in account with a linked player and Fitness Tracking enabled — see My Account below)

Accessible from Players → Game History. Shows every game you appeared in, newest first, with result badge and score. For each game you can:

Once you have tagged games, the tab shows:

Fitness summaries (averages, trend chart, and win/loss breakdown) also appear on the Player Stats tab below Current Form for your linked player.

Your fitness data is private — not visible to other players, organisers, or share code viewers. Delete a single entry from the action menu on any row, or delete everything from Admin → My Account → Fitness Tracking.

Group Records

All-time records: longest winning streaks, losing streaks, unbeaten runs, and Elo peaks. Also includes:

Elo Calibration {#elo-calibration}

Prediction-accuracy diagnostics. The tab replays every recorded game through the rating engine, then compares predicted outcomes against what actually happened, so organisers can see how trustworthy the predictions are for this group's data. The tab is split into two views: Group Stats (fun all-time numbers — side win rates, goal difference, total goals, team-size history, with chips to jump between sections) and Engine Calibration (the diagnostic itself, with the Run button right at the top).

Group Stats {#calibration-stats}

The top of the tab shows summary statistics about the recorded games: total games and players, Side A vs Side B win rates (a sanity check that team-letter doesn't carry an unintended bias), winning goal-difference distribution, total goals per game, and how the typical game size (players per team) has evolved over time. These are descriptive — they don't change the rating engine, but they're useful context when judging the calibration result below.

Average Elo per Game is the last chart in the section. For every game it plots the average rating of everyone who played, so you can see how strong each week's turnout was. Hover any point for the two team averages, how far apart they were, and how many played.

It's worth being clear about what this chart does not mean. Ratings move between players rather than being created, so the group's overall average barely shifts — what changes week to week is who turns up. A dip doesn't mean everyone got worse; it usually means several of the regulars were away. A high week means a strong turnout.

The numbers also won't line up exactly with the team averages the Team Generator shows when it picks sides. The chart replays every game in order, the same way the Elo charts elsewhere in the app do, while the Team Generator uses the ratings as they stood at the moment you generated the teams. The shape and the week-to-week swings match; the exact figures can differ by a few points.

Model Fit, Brier Score & Confidence Calibration {#brier-score}

The headline figure is Model Fit (in-sample) — how consistent each recorded game is with the final converged ratings. It's deliberately not called "accuracy": those ratings were computed from the very games being checked, so this number is always flattering (typically 80%+). It measures how well the ratings explain the past, not how well they predict the future.

The Fit Brier score is the average squared error of those same probabilities — 0.25 is a coin flip; lower is better. The Confidence Calibration bars compare predicted win-probability buckets (e.g. "60–70% predicted") against the actual win rate inside each bucket, and Per-Year Accuracy breaks the comparison down by calendar year. The Fit Scale shown alongside is the in-sample optimum — expect it to be higher than the live scale used for win-probability displays; that gap is the hindsight effect, not a fault.

Forecast Check {#forecast-check}

The honest counterpart to the fit numbers. The Forecast Check re-predicts your group's last 50 decisive games, each one using only the games played before it — exactly the prediction the app could have shown on match day, with no hindsight. Expect roughly 60–70% accuracy for a typical 5-a-side group; well below the fit figure, and that's normal (and partly a compliment to the team generator — a well-balanced game should be hard to call).

You can run the check with the Elo ratings, the Bradley–Terry alternative rating, or compare both side by side to see which system would have predicted your group's recent games better. Results are cached on your device and refresh automatically when new games are recorded or the engine settings change.

Current Elo Settings {#calibration-settings}

A read-out of the Elo parameters used for this calibration run — convergence passes, K-reset, inactivity decay, chemistry weight, individual weight, and whether organiser skill adjustment is on. If your group has run Tune Weights in Settings, you can toggle between Default weights and Tuned weights to compare Brier scores between the two. Adjust these in Admin → Settings → Individual Weight / Tune Weights.

Player Accounts

Players can create a free account in the app to unlock additional features. Creating an account is optional — the app works fully without one.

With an account you can:

To create an account, go to the Admin tab and tap Create account. You can sign up with an email address and password, or with your Google account.

My Stats {#my-stats}

A personal cross-group dashboard available to all signed-in users with a linked player name. Open it from the Admin → My Stats tab. It shows:

Teammate Commendations {#commendations}

After a match, signed-in players who appeared in the last game see a "Commend a teammate" card on the Post-Match Summary. Select one same-team player to recognise their performance. Each player can commend one teammate per game. Commendations appear on the recipient's My Stats tab and on their portable profile card when they apply to join other groups.

A summary at the bottom of the Last Match tab shows peer-rating coverage for the players in the last game — including which of them don't have any ratings yet, so you know who to nudge.

My Account {#my-account}

Once signed in, a My Account tab appears inside the Admin section. This is available to all signed-in users — not just organisers. From here you can:

Player Identity Link {#player-link}

Linking your account to your name in a group means only you can update your sign-up response for that name. Other players see your row as locked with a "● you" badge. Pick your name from the dropdown and tap Link. If your organiser has approval mode on, you can include a short message so they can confirm it's you. Once approved you can still un-link from the same panel.

My Availability {#my-availability}

Mark dates when you'll be away — holiday, injury, work travel. While an away period is active your sign-up status auto-fills as "out" for any new event that falls in the range, and your name shows an indicator on the sign-up screen so others know not to count you in. Up to 10 away periods at a time; remove them whenever your plans change.

Conditional sign-up — "yes, if enough people play" {#conditional-signup}

Some weeks you'd play if there's a proper game, but not if it's going to be four-a-side. Set a minimum in My Account → Minimum players and the app handles it for you. There's also a shortcut to it from the sign-up page itself, next to the Sort button, until you've set one. You'll need an account that's linked to your player name before you can set one — if you're not linked yet, ask your organiser to connect you, and the shortcut will point you here in the meantime.

Once a minimum is set, tapping Playing on the sign-up doesn't put you straight in. Instead:

The clever part is that people waiting on the same number count towards each other. If six people are definitely playing and two of you are each waiting for eight, you both go in — because each of you is the eighth for the other. The app works this out for everyone at once, so nobody is left holding out for a game that has actually already come together.

You'll be told when it happens. If you have push notifications on, you get a "You're in" alert the moment the numbers reach your minimum, so you don't have to keep checking. You can switch it off under My Account → Notification Preferences.

Once you're in, you're in. If people drop out afterwards and the numbers fall back below your minimum, you stay Playing. Being quietly removed from a game you'd been told you were in would be worse than a slightly stale yes.

Playing regardless, just this once. On your own row there's a tick box: Play regardless of numbers this week. Tick it before you confirm and you go straight to Playing with no condition attached. Untick it later and the condition comes back — that's also how you re-arm after you've been switched to Playing, if you've changed your mind. Re-arming is blocked once voting has started or teams are locked, because the teams have already been built around your name.

What other people can see. The summary bar at the top of the sign-up shows everyone how many people are waiting on numbers — for example "3 pending higher number of participants". That's deliberate: it's the nudge that makes the whole thing work, because the people who could tip the game over the line need to know there's something to tip. It never shows who is waiting, and it never shows what number anyone is waiting for.

Be aware that in a small group those two figures can add up. If the bar reads "2 Maybe · 2 pending", then the two people waiting are obviously the two maybes. If that bothers you, tick the override and sign up unconditionally.

Who can see your number. Your organiser can see it — they need to know why someone is sitting on a maybe. No other player can, and it isn't stored anywhere the sign-up page could show it. Your minimum is set per group, so you can have a different one for each group you're in.

You need to be signed in. If you open the sign-up link while signed out you'll just see the ordinary Maybe, with no purple row and no tick box. Your condition still works in the background — it's only the display that needs your account.

My Balance {#my-balance}

If your group collects match fees and you've linked your account to your name, My Account → My balance shows what you currently owe. You get a single headline figure, a game-by-game breakdown behind it so you can check it, and however your organiser prefers to be paid — a payment link, bank details, or a note to bring cash.

Any credit your organiser has parked against your name is already netted off, and the games it covered are shown greyed out. The panel also tells you when payments were last recorded, so if you paid yesterday you can see whether the books have caught up yet.

It's a read-only view of your organiser's records — you can't mark anything as paid from here. If a figure looks wrong, have a word with them.

A reminder on the sign-up page. Your organiser can switch on a reminder for anyone who owes a set amount or more. If it applies to you, your name shows in orange on the sign-up page with a note of what you owe and a How to pay link to this panel. It's the same figure as here. Organisers can set two amounts: a lower one where only you (and they) see your reminder, and an optional higher one where everyone signed in to the group sees it too. It never appears on the share-code sign-up link.

Payment records {#payment-records}

Payments are recorded by hand, not live. The app has no connection to anyone's bank. Your organiser downloads the group account's bank statement and syncs it into the app from time to time, and that's when your payment gets marked. The "Payments last processed" date next to an amount you owe is the date of that last sync.

A payment can take up to 48 hours to reach the statement. Bank transfers don't always appear on the receiving account straight away, and a payment only gets recorded if it's already on the statement when your organiser syncs. So if you paid shortly before the last processed date, or at any time since, it may not be counted yet — it'll be picked up at the next sync.

If a figure still looks wrong after a sync that should have included your payment, have a word with your organiser. They can check the statement and mark it by hand.

Public Profile {#public-profile}

Your public profile is the small card that organisers see when you request to join a new group — and what new groups see in Find a Group. It includes a short bio, preferred position, days you're typically available, and which of your existing groups (if any) you want to show on the card. Everything is opt-in: edit or hide any field from My Account → Public Profile.

Admin

Auth-gated tools organised into tabs:

Send Feedback

A Send feedback link appears at the bottom of every page. Tap it to submit a bug report or feature request directly to the developer. You need to be signed in — your message, account email, app version, and current screen are sent so we can investigate and follow up. No analytics cookies required.

Blog

Interested in how Atmos Football was built or how the Elo system actually works? The Blog tab (inside the About section) has articles on the origin of the app, the data behind it, and the maths behind the ratings. You can also read the articles directly at https://atmos-football.netlify.app/blog/.

Find a Group

If you're looking for a local football group to join, tap Groups → Find a Group. Grant location access and set a search radius to see nearby groups that have opted to be discoverable. Each listing shows the group's pitch area, typical format, and day/time.

Tap Request to join to send the organiser a message. Your request appears in their admin panel for approval or rejection. You can track the status of pending requests from My Account → My Groups.

If you already have a share code from your organiser, you don't need Find a Group — just enter the code directly on the Groups tab.

Which Sports Are Supported?

Atmos Football works for any team-based group sport — football, futsal, basketball, netball, hockey, touch rugby, ultimate frisbee, floorball, handball, dodgeball, volleyball, badminton, racket sports (tennis, padel, squash, table tennis, pickleball), or other. Set your sport in Admin → Settings → Group Management. The Elo engine, team generator, and stats all work the same way regardless of sport — labels like "goals / points" and "pitch / court" adapt automatically.

Badminton Session {#badminton-session}

For groups set to badminton (or any sport with rotating doubles rounds), the Football tabs are replaced with a dedicated Badminton Session flow built around short rotating rounds rather than one big match. A single session is the evening's play; inside it, players cycle through many rounds with whoever's free at the time.

Recording a round {#badminton-round}

While a session is active, organisers see a New round card listing every signed-up player. Tap each player to assign them to Side A, Side B, or sitting out for the round, enter the final score for each side, and save. Rounds appear in the Rounds played list below — they can be deleted if a score was entered wrong.

Sessions don't have to be live: organisers can also Add a past session to back-fill rounds from a previous date (handy if you forgot to record on the night, or when first adopting the app).

Badminton Leaderboard {#badminton-leaderboard}

The Leaderboard tab for badminton groups shows a wins / losses / win-rate table aggregated across every recorded round, sortable by sessions played, rounds played, wins, losses, or win rate. Unlike the football Elo leaderboard, this is a simple W/L count — useful for casual rankings and bragging rights without the complexity of a rating system.

Past Sessions {#badminton-history}

Organisers see a list of completed sessions with date, round count, and quick links to view the rounds for any historical session. Opening a session shows a results table for that night (rounds played, wins, losses, draws and win rate per player, sortable by any column) above the list of rounds. Use this when correcting a mis-recorded round long after the night; the table updates as you add or delete rounds.

The same results table also appears at the top of the Session tab as soon as an organiser taps End session, so the night's results are on screen straight away.

Fantasy Premier League {#fantasy-league}

If your group plays Fantasy Premier League together, the app can show your classic mini-league inside Atmos Football, so the fantasy season sits alongside everything else rather than in a separate app.

This is off by default. It's switched on by the Atmos Football team on request — organisers can't enable it themselves, because setting it up needs the mini-league's ID and a one-time matching step.

Atmos Football is not affiliated with, endorsed by, or associated with the Premier League or Fantasy Premier League. The data comes from the Premier League's own public service.

The mini-league table {#fantasy-table}

Once enabled, a Fantasy League tab appears under Standings, showing every manager in your mini-league with their position, movement since the last gameweek, gameweek points and total. The top three get 🥇🥈🥉 and your own row is highlighted.

What the week produced {#fantasy-notable}

Underneath the table, once a gameweek has actually been scored, two cards write up what happened. Nothing is made up and nothing is an opinion — every line is worked out from the same gameweek data the table is built on.

Notable covers the week just gone:

Season so far sits underneath it and takes the longer view: who has won the most gameweeks, the best and quietest weeks of the season, who's in form right now, how many chips the league has burned through, and how you're all doing against the national average.

Nothing appears until there's something to say. Before a gameweek has been scored neither card is there at all. That's the right answer rather than a missing feature — an empty card would be worse than no card.

The ghost league {#fantasy-ghost}

At the top of the Fantasy League tab there are four buttons: Table, Ghost, Alpha and Graphs. The Ghost table answers one question — what if nobody had touched their team all season?

Everyone's squad is frozen exactly as it stood at their first deadline of the season and scored every week since. No transfers, no points deductions, no chips, no swapping the captain. Whatever eleven you picked in your first gameweek is the eleven you keep until May.

Newly matched? Your frozen season has to be scored a gameweek at a time, so you'll show as catching up for a day or two before your row joins the table. Nothing is wrong; it just hasn't finished counting yet.

The ghost table has no effect on anything. It doesn't change your real fantasy team, your mini-league position, or anything in Atmos Football — it's a what-if, kept beside the real table for the argument it starts.

The Alpha table {#fantasy-alpha}

Beside Table and Ghost there's a third button: Alpha. It's the Ghost table's mirror image. Where the Ghost asks what if nobody had touched their team all season, Alpha asks what if everybody had picked the right eleven every week. Between them they bracket the real table from either side.

Everyone keeps the exact fifteen players they actually owned that week — no transfers changed, no different signings. The only thing that changes is the team sheet: the best legal eleven out of those fifteen, with the captain's armband on the right one. Points deducted for extra transfers are still deducted.

Alpha changes nothing. It doesn't affect your real fantasy team, your mini-league position, or anything in Atmos Football — it's a what-if, kept beside the real table for the argument it starts.

Graphs {#fantasy-graphs}

The fourth button, Graphs, isn't a what-if at all. It draws everyone's real season on one chart, a line per manager, gameweek by gameweek.

Nothing you hide or show is remembered — the next time you open Graphs, everyone is showing again. The charts appear once two gameweeks have been scored; before that there's one point each, and one point isn't a trend.

What might have been {#fantasy-what-if}

Two cards on a matched player's Fantasy view ask the same question about one person instead of the whole league.

Perfect team sheet is that player's own row of the Alpha table, opened up. It shows what they actually scored, what a perfect eleven every week would have scored, and the gap — then lists the weeks that gap came from, worst first, with a line saying why: who was on the bench who should have started, or who had the armband when somebody else was having the game of their life. A week you got exactly right gets a tick, and those are worth looking for.

As on the Alpha table, chips are left out of the comparison. A week you played Bench Boost or Triple Captain is tagged BB or TC, and the first number on that row is the week scored as eleven players and a double captain — not the score you remember. Hover it and it tells you what the week really scored. The season total at the top of the card is your real one, chips and all.

Chip timing asks a different question: not did you pick the right team but did you play your chips in the right week. For Bench Boost it's the points that were sitting on your bench; for Triple Captain it's one more helping of whoever wore the armband. Each one shows what it actually banked, what the best available week would have banked, and the difference.

A few things worth knowing about it:

Your fantasy team in Player Stats {#fantasy-player}

For anyone whose FPL team has been matched to their player name, a Fantasy view appears in Player Stats showing:

The Fantasy view only appears for matched players. If someone hasn't been matched, nothing changes for them.

Two things worth knowing {#fantasy-caveats}

Matching a manager to a player is deliberately a manual step — the app suggests who it thinks each person is and someone confirms every one, with no "match everything" button, because a wrong match would show one person's fantasy team under someone else's name. If a player's name is corrected or they leave the group, their fantasy link follows them or is removed with everything else. The full detail is in the Privacy Notice.

World Cup Sweepstake {#sweepstake}

During the World Cup, your organiser can run a group sweepstake. Here's how it works as a player:

Group Creation

Want to start your own group? You can submit a request directly in the app from My Account → Request a New Group. An admin will review it and set you up as the organiser. Alternatively, email atmos.football@gmail.com. While the app is currently free, some monetisation options may be explored in the future to pay for hosting and server costs.


Home · Blog · About · Contact · Privacy