← All projects
liveMay 20264 min read

Short Rates Desk

Real-time AI research synthesis for hedge-fund rates PMs. It compares what markets, dealers, the Street, and the data say, then flags where they disagree.

PythonNext.jsTypeScriptPostgreSQLNeonAnthropic ClaudeOpenAIGitHub ActionsVercelResend

The Problem

A rates PM's edge is having a view before everyone else does, and defending it when the desk pushes back. Forming that view means reading sell-side research from a dozen banks, economist Substacks, Fed releases, NBER and SSRN papers, prediction-market odds, and the prints themselves. None of it is hidden; it's scattered. Large funds pay research teams to do the reading, and it still takes hours every morning.

The Insight

There are really only four voices in this market, and the signal is in where they disagree:

  • What markets say: Polymarket and Kalshi odds on Fed / CPI / NFP.
  • What dealers say: the NY Fed's Survey of Market Expectations.
  • What the Street is writing: bank desks, economists, independent researchers.
  • What the data says: our own model.

A product that surfaces the gaps between them, using only public data, replaces hours of morning reading.

What It Does

  • Today's View: a proprietary forecast plus a one-paragraph thesis in a senior-strategist voice.
  • Consensus vs Our View: Markets / Dealers / Street / Our Model, side by side, with divergence flags.
  • Event Feed: a real-time chronological feed of Fed events, data prints, rate moves, and research drops, each AI-synthesized with attribution.
  • Prediction Markets: Kalshi + Polymarket probability bars on the relevant contracts.
  • Street Synthesis: firm-by-firm positioning (Barclays / Goldman / JPM / …) with consensus-vs-divergence flags.
  • Morning & Close Notes: twice-daily synthesis (7:00 AM ET pre-open, 4:15 PM ET post-close), emailed to subscribers.

The Hard Part

The interesting problem is trustworthy ingestion and synthesis over messy public sources, not the UI. Pulling structured signal from DTCC, OFR, FINRA TRACE, NY Fed percentiles, prediction-market APIs, and free-form sell-side commentary means a custom adapter per source and a clustering step to dedupe the same idea showing up in ten places.

Then synthesis has to be defensible. A rates PM will not trust a number they can't trace. So every synthesized claim carries attribution back to its source, and the LLM work runs in tiers with a cross-model check: Claude Haiku for fast, event-driven Tier 1 synthesis, Claude Opus for the scheduled morning/close notes and position extraction, and a GPT pass as cross-model confirmation on Tier 1 outputs before anything publishes.

The Architecture

A Python worker does the heavy lifting (ingest, clustering, synthesis, LLM notes) and writes to Postgres (Neon). The Next.js frontend on Vercel reads Postgres only, so the read path stays fast and dumb. All scheduling runs on GitHub Actions cron, which means there's no always-on infra to babysit. Email goes out through Resend. There's an admin research-intake console behind HTTP Basic Auth for pasting, uploading, and overriding failed notes.

Building with AI

This is a single-builder attempt at something that normally takes a team. The leverage comes from AI-assisted ingestion and summarization, which let one person cover the reading load of a research desk. I built and shipped the first version in a weekend with Claude Code, leaning on the workflow I developed building Threadbase. The discipline is in the guardrails: public data only, attribution on every claim, and a cross-model confirmation pass so the morning note is something a PM can actually act on.

What I Learned

  • The value is in the disagreement. Any single source on its own is mostly noise.
  • Attribution is non-negotiable in finance. A synthesized view nobody can trace is worthless on a desk.
  • Tiered + cross-model beats one big call. Cheap fast models for the feed, expensive careful models for the notes, a second model to confirm. Each does the job it's best at.
  • GitHub Actions is an underrated scheduler. For a cron-driven data product, it removed a whole category of infrastructure.