Data Methodology
Overview
Every metric on Signal & Circuit originates from a named source, is stored with a precise ingestion timestamp, and is never modified retroactively. The “Data as of” label on each article and widget reflects the actual timestamp of the most recent data point used in that content — not the publication time of the article.
Data Sources
Steam (Phase 1)
Top sellers and trending lists from the Steam Featured Categories API. Player concurrency from the Steam Web API. Pricing snapshots from the Steam App Details API. All data is attributed to Steam and timestamped at ingestion.
Source: store.steampowered.com, api.steampowered.com
Twitch (Phase 1)
Game viewer counts from the Twitch Helix API. Viewer totals are aggregated from active streams per game at the time of ingestion. Treated as attention signals, not audience size claims.
Source: api.twitch.tv/helix
News RSS Feeds (Phase 1)
Headlines ingested from reputable games journalism and industry publications via RSS. Each item is stored with publication name, headline, URL, and publication date. All items are marked verified_flag=true only when sourced from the approved feed list.
Console Platform Signals (Phase 2)
Important: Xbox, PlayStation, and Epic store ranking data is treated as a signal — not as a verified player count. We do not claim exact console player counts unless the data comes from an official, attributed dataset. All console platform data is labeled accordingly.
Ingestion Pipeline
- Scheduled jobs trigger ingestion workers via EventBridge (production) or manual API call (development).
- Raw API responses are normalized to a standard schema and written to PostgreSQL with a UTC timestamp.
- Duplicate detection prevents re-ingestion of identical data within a sliding window.
- All ingestion runs log counts, durations, and any failures to CloudWatch.
Article Generation & Data Binding
- A ReportingPacket is built from live database records for a set of game IDs and a time window.
- The packet is a neutral, factual briefing — no narrative, no adjectives.
- Each packet metric includes its timestamp and source URL.
- Authors generate articles from the packet. Every claim in the article must reference a source ID from the packet.
- The validator rejects articles with unsourced claims before publication.
- The
data_as_offield on every article is set to the latest data timestamp in the packet.
Moving Averages & Trend Calculations
7-day and 30-day moving averages for player concurrency are calculated at ingestion time from stored signal records. These are stored as computed fields (moving_avg_7d, moving_avg_30d) and labeled as derived metrics when cited in articles.
Limitations
- Steam player counts reflect concurrent players at the moment of API polling, not peak or daily active users.
- Twitch viewer counts reflect aggregated active stream viewers at a single polling moment.
- Title matching between platforms is approximate. We flag ambiguous matches as risk items in reporting packets.
- RSS news items are not independently investigated. They are cited as published by the named outlet.
Questions about the data?
Contact editorial@signalandcircuit.com or see Editorial Standards.