The challenge
Biotech is a sector where a single item, such as an FDA decision or a clinical trial update, can move a share price, and the item that matters is often buried among press releases, reposts and commentary. The product was built to tackle information toxicity: so much low-value news that the signal is hard to find, and by the time someone finds it, the market may already have reacted.
Reading everything by hand does not scale, and keyword alerts fire on every mention without saying whether it matters. Investors and researchers needed news ranked by how material it is, presented in a structured form and pushed to them as alerts, without each person running their own reading and filtering routine.
Using LLMs for that ranking brings its own engineering problems. Model calls add latency, providers have outages and different strengths, and the same story is often requested by many users within a short window.
- Aggregate real-time sources into one feed
- Score each item for sentiment and materiality, not just keyword matches
- Surface FDA, trial and ticker-moving items ahead of reactive trades
- Keep AI responses fast when many users look at the same items
What I built
I designed and built the platform as a full-stack Next.js application. The front end uses Next.js 15 with the App Router, React 19, Tailwind v4 and shadcn/ui components, with Redux Toolkit and RTK Query managing data fetching and state across the dashboards. The back end runs on Node 22+ with MongoDB and Mongoose for storage and NextAuth.js for authentication.
Items from real-time sources are aggregated and passed through LLM sentiment and materiality scoring. Rather than tie the product to one model vendor, I built a custom AI orchestration layer that calls OpenAI, Anthropic and OpenRouter. One layer in front of several providers keeps the scoring logic in one place and avoids depending on a single vendor’s availability or pricing.
The orchestration layer sits behind a short-TTL cache. When many users ask about the same item in a short window, they get the cached result quickly, while the short expiry stops scores going stale in a fast-moving news cycle. That gives the low-latency, enterprise-style access patterns the product needed without sending every request to a model.
Scored items appear in alertable, structured dashboards designed for teams rather than individuals. Nodemailer and Notion integrations carry alerts and data out of the dashboard, so the right people hear about a material item without having to be watching the screen.
- Real-time source aggregation
- LLM sentiment and materiality scoring
- Custom AI orchestration across OpenAI, Anthropic and OpenRouter
- Short-TTL cache in front of model calls
- Alertable, structured, team-ready dashboards
- Nodemailer and Notion integrations for notifications and data
Architecture and stack
- Front end
- Next.js 15 (App Router) · React 19 · TypeScript · Tailwind v4 · shadcn/ui · Redux Toolkit / RTK Query
- Back end & data
- Node 22+ · MongoDB · Mongoose · NextAuth.js
- AI
- Custom AI orchestration layer · OpenAI · Anthropic · OpenRouter · Short-TTL cache
- Notifications & integrations
- Nodemailer · Notion
Outcome
Biotech News Monitoring replaces a noisy feed with a ranked one. FDA, trial and ticker-moving items are scored for sentiment and materiality and surfaced in alertable dashboards, so investors and researchers see what matters ahead of reactive trading rather than after it.
The orchestration layer means the product is not tied to one AI provider, and the short-TTL cache keeps responses fast when many users look at the same story. Teams share one structured view instead of each person running their own reading and alerting.
The project is also a useful reference point for diligence on AI products. Where the model calls sit, how dependence on a single provider is handled, and how latency and cost are kept under control are the questions I ask of any LLM-based platform, and this one was built with clear answers to all three.
Last updated 2026-10-03
