Shimon Eckstein Earnings-call research platform

Threadline

Turns thousands of words of earnings calls into a heatmap of what management is emphasising — and what they have stopped mentioning — with every AI answer cited to the paragraph it came from.

Open the live demo
  • React
  • FastAPI
  • Postgres
  • pgvector
  • DeepSeek
Threadline interface

A research platform for sell-side analysts. It scrapes earnings-call transcripts, uses a language model to discover the recurring strategic themes a company keeps returning to, tags every paragraph against them, and renders a company × quarter heatmap. An analyst can see at a glance which topics management is leaning on this quarter — and, more usefully, which ones quietly disappeared.

Clicking a cell opens the evidence: three generated takeaways, the split between prepared remarks and Q&A, EPS against consensus, and a grounded chat that answers questions with the exact paragraph, speaker and quarter attached.

The part worth looking at

No language model runs on the read path. Every AI output — themes, tags, takeaways, embeddings — is computed once by an eleven-step idempotent pipeline and cached in Postgres. Serving the heatmap is plain SQL. That is what makes the product fast enough to explore rather than query, and cheap enough to leave running.

The retrieval side is measured rather than assumed: a separate evaluation harness scores MRR, nDCG and coverage over a fixed question set, so a change to chunking or embeddings can be judged instead of eyeballed.

Scraping escalates rather than retries blindly — a basic fetch first, and only on a Cloudflare block or a suspiciously short response does it pay for a stealth fetch.

The public demo you are about to open is the real application, pointed at the real database, so the interesting question was how to make writing impossible rather than merely blocked. Middleware refuses them, but middleware is code and code has bugs; the connection is opened with default_transaction_read_only, so the database refuses them too, a layer below anything the application can get wrong. Chat was the one feature that legitimately wrote, so in demo mode its transcript lives in memory instead — which also means no visitor’s questions are stored, and no two visitors see each other’s.