Self-hosted · Private · AI-powered

Financial news,
de-hyped

Intelligence reads dozens of public news sources, strips opinion and emotional language, and surfaces only what actually happened — classified, scored, and summarized in plain language. No ads. No algorithms. No subscription.

14+ Default news sources
Daily refresh cycles
13 Event type labels
<$0.05 Typical daily AI cost

Newspaper · Feed · Analytics

Three purpose-built views for different reading modes. Switch instantly — no page reload, all live data.

Intelligence
Newspaper Feed Analytics
2h ago · Next in 4h
Intelligence Engine 1,247 AI calls · 3,892k tokens · $0.0341 spent · 892 stored · 4,201 deduped · 11,840 deflected
Nvidia reports Q2 revenue of $30.0B, beats consensus by 12%; data center segment up 154% YoY

Nvidia posted $30.0B in revenue for the quarter, topping analyst expectations of $28.6B, with data center revenue accounting for $26.3B — a 154% year-over-year increase driven by H100 GPU demand from hyperscalers.

  • Q2 revenue $30.0B vs. $28.6B est. (+4.9% beat)
  • EPS $0.68 adjusted vs. $0.64 est.
  • Data center $26.3B (+154% YoY)
  • Q3 guidance $32.5B ± 2%
Ticker Briefings
NVDA Material Positive · 4 articles

Earnings beat by 12% on data center demand. Q3 guidance came in above the Street. Analysts at Goldman and JPMorgan both raised price targets overnight. Goldman raises PT to $165. Options market pricing in ±8% move on the open.

AAPL Mixed · 2 articles

Services revenue steady. EU Digital Markets Act compliance deadline extended to Q1. Analyst at Bernstein maintained Outperform, $220 target unchanged.

📅 Earnings Calendar
NVDA Today After close
AAPL Thursday 2024-08-01
MSFT Next Week 2024-08-07
🚀 IPO Pipeline
Klarna Filed S-1
Cerebras Going Public
Chime Scheduled

A four-stage intelligence pipeline

Every article passes through four gates before it reaches you. Most don't make it — which is the point.

1

Targeted Fetch

Per-ticker Yahoo Finance RSS feeds plus dynamic Google News queries built from your watchlist. 14+ static sources run in parallel.

2

Deflector

Whole-word keyword matching against your targets. "Golden Gate Capital" doesn't match a search for Gold. Zero AI cost at this gate.

3

AI Analysis

Gemini 2.5 Flash extracts facts, opinions, entities, themes, event type, hype score, and impact score. Structured JSON every time.

4

Quality Gate

Material events (earnings, upgrades, M&A) always pass. Pure opinion with negative signal is discarded. Everything else is scored.

What makes it different

🎯

Target Locking

Track any equity ticker, company, person, macro theme, or sector. Add or remove targets live — next ingest picks up the change. Portfolio tickers auto-sync from Trust.

📊

Signal Scoring

Every article gets a Signal score: Impact − Hype. Articles with negative Signal are suppressed. High-impact, low-hype reporting rises to the top automatically.

⏱️

Time-Decay Ranking

48-hour half-life decay on Signal scores. A 2-day-old article at Impact 80 scores the same as a fresh article at Impact 40. Stale news never dominates the feed.

🤖

Daily AI Briefings

Gemini synthesizes the last 24 hours of articles per target into 4–8 punchy sentences. One development per sentence, facts only, leading with the most significant event.

📅

Earnings Calendar

Live earnings dates from Yahoo Finance for all tracked tickers. Today, Tomorrow, and day-of-week labels. Confirmed vs. estimated dates flagged.

🚀

IPO Pipeline

AI-extracted IPO filings, S-1s, and going-public events from the news feed. Filed S-1 → Scheduled → Going Public → Priced stages. Forward-looking only — no post-IPO noise.

🕸️

Knowledge Graph

Interactive force-directed graph showing connections between your targets, AI-extracted macro themes, and the news sources covering them. Click any node to drill in.

📡

Source Analytics

Per-source pass rate, dedup rate, and average hype score. SEC EDGAR and PR Newswire consistently outperform click-bait outlets. Enable or disable any source at runtime.

💰

Cost Telemetry

Every Gemini call is logged: prompt tokens, completion tokens, thinking tokens, latency, and estimated cost in USD. Live totals shown in the header bar every session.

Runs three times a day, automatically

The scheduler fires on weekdays at 7 AM, 12 PM, and 3 PM local time. AI briefings regenerate 60 minutes after each ingest. Everything can also be triggered manually.

Time (local) Task Manual command (Docker)
7:00 AMIngest new articles from all sourcesdocker exec intelligence python ingestor.py
8:00 AMRegenerate AI briefings for all targetsdocker exec intelligence python summarizer.py
12:00 PMIngest new articlesSame commands
2:00 PMRegenerate AI briefings
3:00 PMIngest new articles
5:00 PMRegenerate AI briefings

The UI auto-detects when news is stale (>8 hours) and triggers a fresh ingest automatically on page load. The status bar shows the last ingest timestamp, an animated dot while running, and a countdown to the next scheduled run.

RSS-based, fully transparent

Intelligence reads RSS feeds — structured data feeds that publishers maintain specifically for automated consumption. Per-ticker feeds are built dynamically from Yahoo Finance for each equity in your watchlist. Topic targets generate dynamic Google News RSS queries. Static feeds cover the major financial outlets.

Yahoo Finance (per-ticker)
Google News (per-topic)
SEC EDGAR (8-K filings)
PR Newswire
CNBC
MarketWatch
Wall Street Journal
Bloomberg
Seeking Alpha
Benzinga
CoinTelegraph
OilPrice
BBC News
DW News
South China Morning Post

Sources can be enabled or disabled at runtime from the Analytics → Filters tab without restarting. To add a new RSS source: open the Analytics tab, and use the Sources panel — or add it directly to config/default_sources.json and restart the ingestor.

// config/default_sources.json — add any RSS feed here [ { "source_name": "My Custom Source", "feed_url": "https://example.com/rss.xml", "is_active": true, "source_type": "rss", "country": "US" } ]

Built to be modified

Everything is plain Python and SQLite. No framework magic to fight. Add a source, change the AI prompt, add a new event type, or embed the component in another app.

Add a tracking target

Use the UI (Tracking → Edit) or the REST API directly. The ingestor picks it up immediately on the next run.

# POST /api/targets { "target_type": "Ticker", // Ticker|Company|Person|Macro|Topic|Sector "target_value": "NVDA" }

Add keywords to a target

Each target has a keyword list that powers the Deflector. Add synonyms, brand names, or subsidiary names to catch more relevant articles.

# POST /api/targets/{id}/keywords { "keyword": "jensen huang" } # Now any article mentioning "Jensen Huang" # is matched to the NVDA target

Add a new RSS source

Any public RSS feed works. The engine resolves publisher names from the article domain automatically.

# POST /api/sources { "source_name": "Nikkei Asia", "feed_url": "https://asia.nikkei.com/rss/feed/nar" }

Embed in another app

NewsView.jsx is a standalone React component. Set VITE_INTEL_API in the host app's .env to call Intelligence cross-origin.

// In host app .env VITE_INTEL_API=http://localhost:8001 // In host app component import NewsView from '../intelligence/src/NewsView' <NewsView />

Change the AI model or prompt

The Gemini model, temperature, and extraction schema are all in ingestor.py and summarizer.py. Swap in any model that supports structured JSON output.

# ingestor.py line ~632 model_name = 'gemini-2.5-flash' # change here # summarizer.py line ~37 MODEL = "gemini-2.5-flash" # change here

Query the database directly

Everything lands in intelligence.db — a standard SQLite file. Use any SQLite client, pandas, or DuckDB to run your own queries.

SELECT title, dehyped_summary, impact_score, hype_score, impact_score - hype_score AS signal FROM articles WHERE matched_targets LIKE '%"NVDA"%' ORDER BY signal DESC LIMIT 20;

Up in under 5 minutes

Two prerequisites, one script.

1

Install Docker Desktop

Download from docker.com and open it. Wait for the whale icon in your menu bar to stop animating. That's it — no configuration needed.

2

Get a free Gemini API key

Go to aistudio.google.com/apikey. Sign in with a Google account and click Create API key. Takes 30 seconds. No credit card required — the free tier handles most personal installations.

3

Clone and run setup

git clone https://github.com/jeffcu/intelligence.git cd intelligence bash setup.sh

The script prompts for your API key, builds the Docker container, and starts the service. First build: 2–4 minutes. After that, starts take under 5 seconds.

4

Open the app and add your first target

Navigate to http://localhost:8001. Click ✎ Edit in the Tracking panel. Type a ticker like AAPL or a topic like Gold and press Enter.

5

Run your first ingest

docker exec intelligence python ingestor.py

Articles appear in 1–2 minutes. The scheduler takes over from here — you won't need to run this again manually unless you want fresh news right now.

Non-Docker setup (macOS)

Prefer to run natively without Docker? See INSTALL_NO_DOCKER.md for the Python virtual environment setup. Requires Python 3.11+ and Node.js 18+.

bash install.sh # create venv, install deps, build frontend bash start.sh # start API + scheduler bash stop.sh # stop everything