Methodology
How Turing Wire classifies, summarizes, and indexes AI content.
This page documents the pipeline and index methodology so that outputs are reproducible and auditable.
Article pipeline
1. Fetch
Sources are listed in feeds/news_sources.yml and feeds/research_sources.yml. Each source declares:
url— RSS/Atom/API endpointtype—rss,atom, orapipriority— 1 (publisher), 2 (publication), 3 (aggregator)requires_full_text_fetch— whether to follow the link and scrape body text
HTTP requests honor ETag and If-Modified-Since to minimize redundant fetches. Article GUIDs are cached for 30 days to prevent republishing.
2. Deduplicate
Within each batch, duplicates are removed in three passes:
- URL match — canonical URLs (tracking parameters stripped) are compared. When a cluster has multiple sources, the most publisher-proximate source (lowest priority number) is kept.
- Title cosine similarity ≥ 0.85 — using TF-IDF vectors. Aggregator rewrites of a primary source are dropped.
- Body prefix match — first 200 characters of extracted text.
After deduplication, batches are capped at 50 articles per run. Excess is written to a backlog file.
3. Classify
Each article receives one LLM call to gpt-4o-mini (temperature 0.0) returning:
{
"category": "news | research | stocks | skip",
"subcategory": "<see below>",
"company": "<string or null>",
"secondary_companies": ["<string>"],
"impact": "critical | major | notable | minor",
"confidence": 0.92,
"rationale": "one sentence"
}
Articles with confidence < 0.60 are routed to a review queue and not published automatically.
An article can be classified as both news and stocks if it is market-relevant (e.g., a major model release that moves NVDA).
Impact rubric anchors (in prompt verbatim):
| Level | News anchors | Research anchors |
|---|---|---|
| critical | Flagship model release (GPT-5, Claude 5); M&A/IPO >$1B; major regulatory action; security incident | New SOTA on GPQA/ARC-AGI/FrontierMath/SWE-bench by non-trivial margin; new paradigm comparable to Transformer |
| major | Non-flagship model from top-5 lab; $500M+ funding; senior leadership change | Meaningful eval improvement; novel methodology from DeepMind/OpenAI/Anthropic/FAIR |
| notable | Incremental features; $10–500M funding; mid-tier lab announcements | Solid incremental research; mid-tier open-weight releases |
| minor | Patch notes; UI changes; rebranding | Routine arXiv submissions without strong novelty |
When in doubt between two levels, the lower level is chosen.
4. Company tagging
- Deterministic alias lookup against
feeds/company_aliases.ymlon title + first 500 chars of body. - If exactly one match: done.
- If zero or 2+ matches: LLM verification call.
Articles with no identifiable primary company have company: null and appear in the main feed but not on company pages.
5. Summarize
News — OpenAI gpt-4o-mini, temperature 0.3, target 250–350 words. Structured as: Lead → Body → Closing line. No invented facts. Speculative claims flagged.
Research — OpenAI gpt-4o-mini, temperature 0.0, target 450–550 words. Structured as: Problem → Method → Results → Limitations → Why it matters. Technical audience, no softening of jargon.
AI Index
The TW AI Index is an equal-weighted index of 28 AI-related equities.
Formula
indexed_i(t) = price_i(t) / price_i(base) × 100
index(t) = mean( indexed_i(t) for all i in universe )
Each ticker is individually indexed to its base-date closing price. The mean of these indexed values is the index level. Equal-weighting means no single ticker dominates regardless of market cap.
Base date
2025-01-02
Base level: 100.
Universe
See the Sources page for the full ticker list with sectors and inclusion dates.
Tickers are added when a company becomes relevant to the AI ecosystem. When added after the base date, the ticker is assigned its price on the inclusion date as its base — it enters the index at level 100 from that point. The mean is computed over all currently-included tickers.
Data source
Finnhub (free tier). Quotes are delayed up to 15 minutes during market hours. Close prices are captured at the 21:00 UTC workflow run.
Reproducibility
The full computation is in scripts/compute_ai_index.py. Base prices are stored in _data/ai_index_history.json (committed to the main branch). Anyone can clone the repository and recompute the index from the stored base prices.
Limitations and known issues
- arXiv flood risk: On days with many high-profile preprints, the 30/day cap per category may miss some papers. The 50-article-per-run hard cap means very active days will have backlog.
- Paywalled sources: For sources marked
source_truncated: true, summaries are based on the abstract/headline only and may miss important context. - Impact calibration drift: The LLM assigns impact per-article without awareness of the day’s news cycle. In slow news weeks, articles may be inflated to “major”; in busy weeks some may be underrated. Spot-checking is done periodically.
- Company tagging accuracy: The alias lookup is deterministic but not exhaustive. Uncommon company names or newly founded organizations may be missed until aliases are added.