Live AI Sentiment Engine
Technical Guide
A transparent, honest walkthrough of what this system is, how it works, what it was built with, and — importantly — what it is not.
What is this?
The Rock Group AI Sentiment Engine is a real-time financial intelligence dashboard that monitors three live data streams — press releases, market news, and SEC 8-K reports — and applies large language model (LLM) scoring to each item as it arrives. Every signal is scored on a single -5 to +10 scale for sentiment and likely market impact, then pushed to your browser over a WebSocket the moment it lands.
It is a tool for awareness and signal discovery. It surfaces information you might otherwise miss in the noise and gives you a structured, scored view of what is happening across publicly traded companies right now.
Where the AI actually is. The AI in this product is the scoring layer: large language models read the raw text of each press release, news article and 8-K and return a score with their reasoning. Everything around that — ingestion, storage, market-data matching, real-time delivery — is ordinary, deterministic software, built and operated in house by Rock Group. Section 06 describes the scoring in full.
Plain English: Think of it as a research assistant that reads thousands of press releases, news articles, and SEC 8-K reports per day, assigns each one a score from -5 (crisis) through 0 (routine) to +10 (major catalyst), and shows you the ones that matter first. It does not trade for you, advise you, or guarantee any outcome.
AI Sentiment Pro
There is one dashboard. There used to be two — a basic view and a Pro view — but the basic view was a strict subset of Pro, so it only ever split attention between two products that read the same data through the same model.
Both views run off the same live window, filtered by the same score-tier rail and sorted by the same four orderings — described in the next section.
Reading and shaping the feed
Everything on this page filters a window that is already in your browser — roughly 250 rows per stream, held in memory because they arrived over the live subscription. Nothing you type here issues a new request, which is why filtering is instant.
Every ordering falls back to score time as a tiebreak, so the order is total. Without one, equal-scoring rows swap places between renders and a live feed appears to twitch on its own.
The watchlist, the position tracker and the field configuration live together in the Workspace drawer, as three tabs. The field configuration decides which of the ~30 available metrics appear on a card, grouped into market context, pipeline diagnostics and source-specific fields.
Your workspace never leaves your browser. Watchlist, positions and field choices are stored in localStorage on your own device. They are not sent to us, not tied to an account, and are not recoverable if you clear site data. The legal disclaimer you accept is stored the same way, in sessionStorage, so it is asked again in a new session.
Below 720px the three columns become a tab bar and only the selected stream is mounted — not merely hidden. Filters and the workspace open as bottom sheets. Hover tooltips are removed entirely, because touch has no hover; anything a tooltip says is also stated in the tier rail or in the sheets.
How it is built
The system has four distinct layers: data ingestion, local processing, cloud sync, and real-time delivery to the browser.
The sync module is a lightweight Python watcher that runs continuously on the server. It checks each table every second for new rowids, upserts new rows to the cloud database immediately, and also runs an independent market data sweep every 3 seconds to backfill any delayed market metrics.
The browser never polls. Once the page loads, it opens a persistent WebSocket to the cloud database Realtime. New rows push to the browser the instant Supabase receives them — typically within 1 second of the original event.
What data does it monitor?
Three distinct data streams feed the system simultaneously.
Note on SEC coverage: The SEC stream is Form 8-K only — 10-K, 10-Q and S-1 are not currently ingested. Many SEC filings are also submitted by entities (mutual funds, insiders, foreign filers) that have no exchange-listed ticker; the pipeline filters those out, so only filings with a confirmed ticker reach the dashboard.
How are scores generated?
Each incoming item passes through an LLM-based scoring pipeline before it reaches the dashboard. The model reads the full text of the article, press release, or filing and returns a structured JSON output that includes a sentiment score, a sentiment direction label, and a plain-English justification.
The LLM also outputs a directional label (BULLISH · BEARISH · NEUTRAL · MIXED) and a justification sentence explaining the reasoning. Both are visible on each card.
Scores are computed at ingestion time and stored. They do not update retroactively — a score reflects the model's assessment of the text at the moment it was processed.
What market metrics are shown?
In addition to the LLM sentiment score, each card can display live and at-score market metrics. These are cross-referenced from a separate market data database and attached to the row at sync time — or backfilled up to 3 seconds later if the market data was not yet ready when the text item first arrived.
Not all metrics are available for every item. Market data availability depends on whether the ticker was actively trading when the signal was processed.
Market data disclaimer: All market metrics displayed are sourced from publicly available data feeds and are provided for reference purposes only. Accuracy is not guaranteed. Users should independently verify any market data against their own trusted sources before making any portfolio or trading decisions. Rock Group assumes no liability for data discrepancies or delays.
What this is not
We believe in being direct about what this tool does and does not do. These are real limitations, not fine print.
Who builds and maintains this
Rock Group builds, operates and maintains this platform in house. The Python ingestion pipeline, the scoring service, the cloud data layer and the Next.js dashboard are all our own work, and the people who write the code are the same people responsible for the data quality you see on the screen.
Development is continuous rather than cut into large releases. Changes ship in small increments, are checked against live production data before release, and are rolled back if a stream degrades. Data sources change format without warning — when one does, the fix is usually deployed the same day.
What the technology stack is
Python for ingestion and the scoring pipeline, SQLite locally, Supabase (Postgres) as the cloud store, Supabase Realtime over WebSocket for delivery, and Next.js with TypeScript and React for the dashboard, deployed on Vercel.
What decides whether a system like this is useful is not the tooling behind it: it is the judgment applied to which sources to trust, what to score, what to put in front of you, and what to tell you it cannot do. Section 08 is the honest half of that, and we would rather document it plainly than market around it.
Open the live dashboard and see signals arriving in real time. The green LIVE indicator means the WebSocket is connected and new data will appear without a page refresh.
Rock Group · AI Sentiment Documentation · Last updated August 2026
Questions? Contact us