CS2 Demo Review
Feb 2026AI-assisted analysis tool for Counter-Strike 2 demos. Upload a match, ask questions in natural language, watch annotated round replays, and inspect position and utility heatmaps. Match data and processing is handled in the browser, so match data is kept private aside from LLM calls.
Watching a CS2 demo is the canonical way pros and serious players learn from a match: scrub to a moment, note what happened, scrub to the next, repeat. Upload the demo, ask “show me every round I died first,” “what was the T-side execute on round 7,” or “compare my crosshair placement against the average,” and get an answer with replay and heatmap evidence.
Data context
Demos are binary files containing every tick of a match: positions, deaths, weapon fire, utility throws, economy, voice and chat events. They’re parsed with demoparser2, running as WASM inside a Web Worker so the main thread stays responsive on a 200MB file. The parsed events land in an in-browser SQLite database via wa-sqlite. Nothing leaves the user’s machine.
How a question gets answered
The LLM (model selectable per chat, routed via the Vercel AI SDK) gets a tool surface backed by the local SQLite. A user question turns into one or more tool calls: a SQL query against the parsed database, a request for a specific replay clip, or a heatmap render across a range of rounds.
The tool output isn’t dumped raw into the conversation. Each tool’s response is transformed into a chat-friendly form (compact tables, links to round replays, embedded radar snapshots) so the model sees what the user sees. That keeps the model and the UI looking at the same evidence.
The viewer
A 2D replay engine plays back demo events on a top-down map render with player labels, killfeed, and a player sidebar. The radar uses a custom raycasting pass for line-of-sight reasoning. Two heatmap surfaces (position, where players spent time, and utility, where grenades landed and where their effects covered) aggregate across selected rounds.
Knowledge layer
CS2 is patch-sensitive: a meta from six months ago can be misleading today. Five reference documents in docs/ codify the project’s tactical knowledge alongside a sourcing discipline that flags claims requiring re-verification.
cs2-pro-knowledge.md- pro-level tactical and strategic referencecs2-strategy-explainer.md- plain-language strategy concepts and review heuristicscs2-map-strategy-examples.md- map-by-map tactical examplescs2-strategy-dictionary.md- compact glossary for quick term lookupcs2-research-sources.md- sources and verification cadence for patch-sensitive claims
The corresponding runtime modules (lib/map-tactics.ts, lib/analysis-framework.ts) draw from this material rather than ad-libbing.
Tech
Nuxt 4, TypeScript, Vue 3, demoparser2 (WASM), wa-sqlite (in-browser SQLite), Vercel AI SDK for multi-provider model routing, custom 2D canvas replay engine, Playwright for E2E and accessibility tests, ~15 unit test suites covering parser pipeline, tool transforms, round builder, narrative generation, and timeline formatting.