TruthLayer is a Chrome extension plus AI backend that adds instant context to news articles while you browse. It scores political bias, explains framing, compares competing narratives, generates spoken summaries, and stores evolving topic history for later review.
News readers rarely get context at the moment they need it. TruthLayer turns any article page into an intelligence surface:
- a live bias bar appears at the bottom of the page
- a readable explanation shows why the article leans the way it does
- a narrative comparison surfaces how the same story can be framed differently
- a voice summary makes the article skimmable in seconds
- a persistent timeline captures how coverage around a topic evolves over time
- Real-time bias scoring from
-1to+1with confidence - Source-aware analysis blended with article-level framing cues
- "Why this bias?" panel with highlighted language and concise explanation
- Narrative clash cards across left, center, and right perspectives
- ElevenLabs-powered audio summaries
- InsForge-backed Truth Memory timeline for recent topic history
- Open any news article.
- TruthLayer injects a bottom intelligence bar.
- Click
Why this bias?to inspect the article framing. - Click
Compareto see how the narrative shifts across perspectives. - Click
Listento play a short spoken summary. - Click
Timelineto inspect recent saved coverage on the topic.
- Manifest V3
- Injected content script UI
- On-page article extraction and phrase highlighting
- One-click interactions for explanation, comparison, voice, and timeline
- FastAPI service with clean route/service separation
- Claude-powered narrative and explanation enrichment
- ElevenLabs text-to-speech integration
- InsForge persistence for article memory and timeline retrieval
- Frontend: Chrome Extension, JavaScript, CSS
- Backend: FastAPI, Pydantic, HTTPX
- LLM: Claude
- Voice: ElevenLabs Python SDK
- Data layer: InsForge
.
├── backend/
│ ├── main.py
│ ├── routes/
│ └── services/
├── extension/
│ ├── manifest.json
│ ├── content.js
│ └── styles.css
├── .env.example
├── example_elevenlabs.py
├── README.md
└── requirements.txt
Create your local environment file:
cp .env.example .envRequired values:
ELEVENLABS_API_KEYINSFORGE_URLINSFORGE_API_KEY
Optional values:
ELEVENLABS_VOICE_IDCLAUDE_API_KEYTRUTHLAYER_ALLOWED_ORIGINS
Create the truthlayer_articles table in InsForge:
create table if not exists truthlayer_articles (
id bigserial primary key,
url text not null,
title text,
topic text not null,
source text not null,
bias_score double precision not null,
summary text not null,
timestamp timestamptz not null default now()
);
create index if not exists idx_truthlayer_articles_topic_timestamp
on truthlayer_articles (topic, timestamp desc);Reference docs:
TruthLayer uses the official ElevenLabs SDK for TTS.
Reference docs:
Optional verification script:
python example_elevenlabs.pypython -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn backend.main:app --reloadBackend URL:
http://127.0.0.1:8000
Health check:
curl http://127.0.0.1:8000/health- Open
chrome://extensions - Enable
Developer mode - Click
Load unpacked - Select the
extension/folder
POST /analyzePOST /comparePOST /voicePOST /storeGET /timelineGET /health
- Built for a fast, judge-friendly live demo
- Works as a lightweight local prototype with a clean repo structure
- Designed for a clear two-minute walkthrough with visible user value in each interaction