12
An analyst with no cutoff

ValoBot

Valorant esports intelligence — live match, team and player data from VLR.gg, paired with CYPHER, an analyst grounded in it.

TypeScript llmesportsnextjsscraping
click to turn
Two questions

The second one is the point: when grounding fails, the refusal is the correct answer.

Grounding path
questionfree-form CYPHERGroq SDKfetches BEFOREit answers VLR.ggscrapedmatches · rostersstandings live contextassembled per query grounded answercites what it read ok refuses, and says so fetch failed NEVER PARAMETRIC MEMORY a stale roster reads like a correct one

There is no route from the model to an answer that does not pass through fetched context.

The refusal is the feature

Most LLM products treat a failed retrieval as a degraded case and answer anyway from parametric memory. For esports that is worse than useless — a confident roster two transfer windows out of date reads exactly like a correct one.

CYPHER refuses to fabricate when the fetch fails. That is a product decision before it is an engineering one, and it is the reason anything else on the page can be trusted.

Team intel — 12 VCT partner orgs
running Team intel — 12 VCT partner orgs

Where the data comes from

Results, fixtures, rosters and regional standings are scraped from VLR.gg rather than licensed, which makes the scraper the fragile part of the system and the thing most worth monitoring.

Playstyle summaries and per-player scouting blurbs are written by a model on top of that scraped base, and labelled as such.

Player profiles — role, agent pool, scouting blurb
running Player profiles — role, agent pool, scouting blurb
Outcome

ValoBot

Chapter 13
DroidDoodle

An offline Android app where a small on-device language model rearranges a structured canvas through tool calls.

continue
12 — ValoBot
scroll · drag · ← →