News & AI Analysis
A news pipeline built for trading context, not headline scrolling.
Omni Terminal treats news as market structure input. Raw Telegram, RSS, and source feeds are normalized, deduped, clustered, summarized, routed to tradable symbols, and then delivered into the terminal and Ask Omni so event flow can be read beside positions, liquidations, funding, and chart state.
At a glance
- Pipeline shape
- Ingest -> GPT -> terminal Raw feeds are filtered, deduped, clustered, summarized, and adapted before reaching the UI.
- Dedupe model
- Multi-layer Exact matching, embedding gates, context shrinking, and event clustering reduce repeated alerts.
- Delivery
- REST + WS The terminal reads history through `/api/terminal/news` and receives live GPT news over websocket.
Why It Matters
What traders and researchers should take away
- Raw Telegram and RSS feeds are noisy; Omni filters repeated, promotional, and low-signal items before they become terminal context.
- Symbol-linked AI news is more useful when it can open next to the chart, order ticket, liquidation stats, and current portfolio exposure.
- The pipeline is cost and latency aware: cheap filters and embedding/event dedupe run before expensive GPT work where possible.
How it works
What the product uses behind the scenes
telegram-readercaptures raw feed messages and publishes normalized raw news events without calling GPT.gpt-newsperforms noise filtering, embedding/event dedupe, cluster updates, GPT summarization, topic tagging, and terminal contract validation.omni-apiadapts GPT news documents for/api/terminal/newsand websocketgpt_news; the terminal adds display-oriented symbol resolution.- Ask Omni loads the same backend news source into compact account and market risk snapshots.
Notes
Things to know
- News interpretation is decision support, not a guarantee that an event will move a market.
- The terminal UI and Ask Omni share upstream news sources, but they do not use the exact same final symbol-resolution implementation.
- Public docs intentionally avoid private channel inventory, prompt text, exact scoring thresholds, hostnames, keys, and deploy details.
End-to-end pipeline
The public contract is simple, but the internal path is deliberately layered so the terminal receives cleaner, tradable, context-rich events instead of raw feed spam.
flowchart LR
RAW[Telegram, RSS, and source feeds] --> TR[telegram-reader]
TR --> R1[(Redis telegram_news)]
TR --> CH1[(ClickHouse raw messages)]
R1 --> GN[gpt-news instant worker]
GN --> FILTER[noise and exact filters]
FILTER --> EMB[embedding near-duplicate gate]
EMB --> EVENT[event clustering skip/update/full]
EVENT --> GPT[OpenAI instant or cluster-update prompt]
GPT --> STORE[(ClickHouse gpt_news_analysis + Redis gpt_news)]
STORE --> API[omni-api adapt_gpt_news_doc]
API --> UI[Terminal news, chart context, Ask Omni]telegram-readerstores raw messages and publishes a common raw-news channel; it is intentionally not the GPT layer.gpt-newsdecides whether a headline is noise, a near duplicate, an update to an existing event, or a full new analysis candidate.omni-apiadapts the GPT news document into the terminal contract used by REST history, websocket toasts, terminal tables, and Ask Omni.
Why the pipeline is this complex
Trading news has a different quality bar than a generic news feed: repetition, latency, bad ticker routing, and irrelevant context all become trader problems.
- Multiple channels often repeat the same event with slightly different wording; dedupe prevents terminal noise and repeated model calls.
- Macro, tradfi, energy, and crypto headlines need different symbol-routing behavior than a simple ticker regex.
- Cost control matters because cheap deterministic filters and vector/event gates should remove low-value work before GPT is called.
- Terminal context has to stay compact enough for Ask Omni and fast enough for live alerts.
Dedupe, embeddings, and event context
Omni uses several dedupe passes because no single method catches exact reposts, paraphrases, rolling updates, and multi-source event clusters.
- Exact/source normalization catches obvious reposts and formatting changes before heavier processing.
- Embedding dedupe catches near-duplicate headlines and shrinks the history window that gets offered as model context.
- Event clustering keeps a rolling thesis for developing stories, allowing the pipeline to skip, update, or fully analyze a headline.
- Topic tags such as macro, liquidation, policy, exchange, energy, and event type let the UI and Ask Omni filter context without raw prompt stuffing.
How the terminal consumes news
The terminal does not subscribe directly to raw ingest systems. It consumes an adapted Omni API contract with history, live websocket updates, and display-side symbol resolution.
GET /api/terminal/newsloads paginated history for news lists, symbol filters, topic filters, and Ask Omni context.- Websocket
gpt_newsdelivers live GPT news envelopes for terminal toasts and real-time updates. src/lib/utils/newsSymbolResolution.tsperforms display-oriented symbol inference, alias steering, fuzzy matching, and preferred-symbol selection.- Ask Omni reuses backend news loading and adaptation, then compacts symbol and global news into its risk snapshot.
What public docs intentionally leave out
The public page explains the architecture enough for users and LLMs to understand the product, but avoids operational details that would make the system easier to copy or abuse.
- No private feed inventory, channel list, server hostnames, service credentials, or access headers.
- No exact production thresholds, prompt text, model routing secrets, or deploy topology.
- No private user balances, positions, wallet addresses, or account-specific news snapshots.
- Repo-scoped paths and canonical docs URLs are the citation surface for public answers.
References
Implementation references
AI news pipeline
omni-terminal/docs/AI_NEWS_PIPELINE.mdPublic-safe local summary of the AI news ingest, dedupe, GPT analysis, and terminal adaptation flow.
Terminal news display
omni-terminal/docs/NEWS_DISPLAY.mdDocuments REST history, websocket live news, topic tags, and terminal-side symbol resolution.
GPT news pipeline
gpt-news/docs/NEWS_PIPELINE.mdDocuments the raw ingest to GPT analysis to terminal contract path, including dedupe and event update stages.
GPT news deduplication
gpt-news/NEWS_DEDUPLICATION.mdDocuments why exact, embedding, and event-level dedupe are separate layers.
Raw feed integration
telegram-reader/docs/NEWS_INTEGRATION.mdDocuments raw message storage and Redis publication before the GPT analysis layer.
Ask Omni documentation
omni-terminal/docs/ASK_OMNI.mdExplains how symbol news, global news, and risk snapshots are constructed for AI responses.
Omni API news adapters
hyperliquid-data-api/crates/omni_api/src/routes/terminal.rsShows backend news loading, ClickHouse reads, GPT-news adaptation, and backend symbol normalization.
Omni API news websocket
hyperliquid-data-api/crates/omni_api/src/routes/ws.rsShows live `gpt_news` envelope building for instant, bulk, and event rollup messages.