videogamers.fyi

Methodology

Articles on this site are written by an AI model from real source data, then validated against quality rules before they publish. The whole pipeline runs on a daily schedule with no human in the editing loop — only in the curation loop. This page documents exactly what the pipeline does, what sources it uses, and what it refuses to do.

1. Editorial selection

The pipeline does not write about every game it sees. A human picks the games. Each cycle, an admin dashboard fetches trending candidates from RAWG, SteamSpy, and Twitch, scores them by a weighted combination of rating, current Steam players, and Twitch viewers, and presents the top 30. The site owner reviews the list and picks up to 5 games to cover.

This means: every game on the site exists because a human chose to cover it. The AI does not pick its own subjects.

2. Source aggregation

For each selected game, the pipeline fetches data from multiple independent sources in parallel. None of these are scraped or reverse-engineered — every source has either a public API or a public RSS/JSON endpoint:

Source fetches are wrapped in 8-second timeouts and use Promise.allSettled — if one source fails or is slow, the others still feed the article. Every fetch is logged. Failed sources are visible in the pipeline health log.

A full list of sources, with links, is on the sources page.

3. AI summarization

The fetched source data is passed to an LLM running on Cloudflare Workers AI. The current model is @cf/meta/llama-3.1-8b-instruct-awq for the legacy article body, with a planned upgrade to @cf/meta/llama-3.3-70b-instruct-fp8-fast for the structured sections being rolled out.

The system prompt asks the model to write in a specific voice (knowledgeable, conversational, opinionated — "IGN meets Reddit") and gives it strict constraints:

4. Validation and retry

Every AI-generated article passes through a structural validator before it can publish. The validator checks:

If validation fails, the pipeline retries once with a stricter prompt that includes the specific validation errors. If the retry also fails, the article is logged as a failure and the previous version remains live. The pipeline never publishes a broken article on top of a working one.

5. Voice and ban list

The model is instructed to avoid generic AI-review filler. The following phrases (and their variants) are banned and will fail a build-time check:

must-play, immersive, taken the world by storm, redefines, new gold standard, vast and diverse, breathtaking, a must for any, sets a new standard

If the model can't be specific — patch numbers, boss names, dates, upvote counts — it's instructed to return empty. Empty beats filler.

6. Live stats sidebar

The sidebar on each game page reads from a separate stats pipeline that runs alongside article generation. It captures:

The "Updated X ago" timestamp on each page reflects when the stats pipeline last ran for that game — not when the page was last viewed. If the pipeline hasn't run in a day, the timestamp will reflect that honestly. The sparkline trend color (green for rising, red for falling, muted for flat or single-point) is computed from the actual snapshot values, not from any AI inference.

7. Refresh cadence

A daily cron trigger runs the pipeline at 06:00 UTC. Each run processes one game per Cloudflare Worker invocation to stay within the free-tier 50-subrequest-per-invocation limit. The site itself rebuilds and deploys after the pipeline finishes.

In short: up to 24 hours from a real-world event (a new patch, a new viral Reddit thread, a price drop) to a corresponding update on this site. Faster refresh cadence is on the roadmap once auto-deploy is wired up; the current bottleneck is the manual deploy step, not the pipeline.

8. What this site does not do

9. Corrections and feedback

If an article gets a fact wrong, file an issue or reply where you found the link. Corrections that touch the source data (a wrong URL, a misattributed quote) get fixed in the pipeline; corrections that touch the AI's interpretation get fixed in the prompt. Either way, the next cron run reflects the correction.