# Season Tally > A spreadsheet for a club or school team's season statistics. Players are rows and stats are columns. Derived columns are computed live in the browser from spreadsheet rules: per-game rates, percentages, weighted averages, ranks, percentiles, trends and pass marks. A model then writes an end-of-season coach's note for every player into the sheet, flags cells and lists team anomalies. It can also build the case for each season award, with a runner-up and a counter-argument. The page checks every number the model cites against the sheet. URL: https://season-tally.skillsafe.ai/ API tutorial: https://season-tally.skillsafe.ai/api.html ## What it does - The grid: arrow keys, Enter and Tab to move, type to edit, F2 to edit in place, Ctrl+D to fill down, Delete to clear. Blocks copied from Excel, Google Sheets or Numbers paste at the selected cell. A whole sheet can be imported from a pasted block or a CSV file. The header row and the player column stay frozen. Columns sort, and you can add, rename and delete them. Rows can be added and deleted. - Rules (derived columns), typed with column letters in the formula bar: arithmetic, SUM, AVG, MEDIAN, MIN, MAX, COUNT, WAVG(range; weights...), RANK, RANKASC, PCTL, TREND, IF, ROUND, ABS. Weights need not add up to 100: a blank cell drops its weight and the rest are normalised. Blanks are skipped and never read as zero. A division by zero shows #DIV/0, and a rule that refers back to itself shows #CYCLE. - Free checks in the browser: cells that are not numbers, cells that cannot be computed, values more than two standard deviations from the team, pass marks that nobody or everybody meets, trends running the wrong way, and blanks. - Display: heat shading per column (flipped when lower is better, as for race times), pass marks in green and red, and the team average, median, min and max under every column. On phones there is a one-card-per-player view. - Exports: CSV, Excel-ready TSV, JSON, Markdown, and a printable report with one page per player. - History: one record per sheet in the user's SkillSafe account, with up to 120 rows plus the last notes and awards. ## Model tasks (one system prompt, field `task`) - `notes`: one note per player row (note, strength, focus, cites, flags), team anomalies, and what the team should work on next. Notes land in the Coach's note column as suggestions you accept one cell at a time or all at once. - `renote`: only the rows whose numbers changed since the last notes. Those notes are replaced and the rest are carried over. - `awards`: one case per named award (winner, runner-up, case, counter-argument, verdict, cites), built from the sheet and the accepted notes. Winners appear in an Award column. ## Input (all string fields; structured ones are JSON-encoded strings) task, team, sport, context, columns (key, name, kind, rule, better, format, threshold), table (header plus one row per player, capped at 40 rows on whole-row boundaries with the cut stated), summary (per-column n, blanks, avg, median, min, max, total, threshold, meets), checks, changed_rows (renote), awards and notes (awards), retry_note. ## Grounding rules the output is held to - The model does no arithmetic. Every number it writes must be a cell, a team summary value or a pass mark from the input, written as the sheet shows it. - Every cited number is checked against the sheet within display rounding. On a row whose numbers are unchanged, a team figure that has moved since the note was written is reported as drift. On a changed row, the note is shown faded as stale. - Rows the model skipped are listed as "no comment yet". Rows that are not on the sheet are dropped. - Notes are written for players and parents. They compare a player with the team average, never with a named teammate. Small samples and missing data are treated as context. ## Model gpt-terra (metered; sign-in required). The sheet, its rules, the checks and the exports are free and never leave the browser. ## Sources Derived from two agent skills by OneWave AI (onewave-ai/claude-skills): - @onewave-ai/player-comparison-tool: side-by-side stat comparisons with context, metrics explained in plain English. https://skillsafe.ai/skill/@onewave-ai/player-comparison-tool/ - @onewave-ai/mvp-case-builder: statistical arguments for awards, with counter-arguments. https://skillsafe.ai/skill/@onewave-ai/mvp-case-builder/ Not affiliated with the authors.