Inspiration

In December 2025, OWASP published its first Top 10 for Agentic Applications — a catalog of attacks that didn't exist two years ago: prompt injection that spreads between AI agents like a worm, malicious instructions hidden inside MCP tool descriptions, poisoned agent memory that steers decisions long after the attack. Critical vulnerabilities like the mcp-remote OAuth flaw (CVSS 9.6) hit hundreds of thousands of developers. Yet a small company deploying AI agents today has nowhere to turn for readable, prioritized intelligence about this new threat surface. Traditional CVE feeds barely cover it, and the research that does is unreadable for non-specialists. We built ThreatPulse to close that gap. We started a generic threat assessment tool earlier in 2026, which we pivoted into this project in July 2026.

What it does

ThreatPulse is a live threat-intelligence service at threatpulse.dev. Every morning it scrapes eleven sources — CISA's Known Exploited Vulnerabilities catalog, NVD, GitHub Security Advisories filtered to agent frameworks (LangChain, MCP SDK, AutoGen), arXiv security research, and curated researcher blogs. An AI pipeline turns each raw advisory into a plain-English threat profile: what it is, how severe, who's affected, what to do. Agent-specific threats are classified against the OWASP Agentic Top 10 (ASI01–ASI10) with attack-surface and propagation tags that flag worm-like threats. Users get a live dashboard, a searchable library, on-demand AI-generated incident-response playbooks, and a chat advisor for follow-up questions. A Gemini-written daily landscape briefing greets users on the dashboard, regenerated each morning from the newest threats.

How we built it

The frontend is Next.js 14 with TypeScript and Tailwind; the backend is FastAPI on Python with SQLAlchemy and Alembic migrations. Both deploy as separate Vercel projects, with Postgres on Neon and daily scraping driven by Vercel Cron. The AI synthesis layer wraps every LLM call in defensive scaffolding: scraped content is enclosed in data-only tags so hidden instructions in malicious advisories can't hijack the analyst model, JSON output is validated by Pydantic with severity and taxonomy clamping, and one corrective retry handles malformed replies. Deduplication runs before any AI call, keyed on stable identifiers like CVE IDs, so a scrape cycle only pays for genuinely new items. Playbooks generate on first request and cache in Postgres. Google Gemini (gemini-2.5-flash) powers the daily insight — it reads the week's ingested threats and writes the dashboard briefing, cached daily and refreshed after every scrape, with the same prompt-injection defenses as the rest of our AI pipeline.

Challenges we ran into

Production found bugs that development never did. Our first automated scrape ran perfectly — and added zero threats, because the AI model version we'd pinned had been retired between development and launch, turning every synthesis call into a 404. The NVD API silently rejected our date-range queries (it requires both start and end dates). arXiv moved to HTTPS and our fetcher didn't follow redirects. Each failure was invisible from the dashboard; only reading serverless runtime logs revealed the chain. We also learned serverless discipline the hard way: connection pooling with NullPool for Postgres, database-backed rate limiting instead of in-memory state, and idempotent email sends recorded in an alert log.

Accomplishments that we're proud of

ThreatPulse is not a demo — it's live, on its own domain, ingesting real threats daily with zero manual intervention. Within hours of our pipeline going healthy, it autonomously ingested and summarized four real threats, including a CISA-cataloged actively-exploited authentication bypass. We're also proud of being early: almost no tooling exists for agent-to-agent threat intelligence, and our taxonomy speaks the OWASP language security teams are standardizing on.

What we learned

The hard engineering problem isn't calling an LLM — it's building the trust boundary around it: treating scraped content as hostile input, validating structured output, and deduplicating before spending tokens. We also learned that an AI product's freshness pipeline is the product; observability on scraping and synthesis matters more than any feature.

What's next for ThreatPulse

An AI-generated daily briefing on the dashboard, a dedicated agent-threats view with human-readable taxonomy labels, email alerts for new critical threats, Stripe-gated Pro playbooks, hourly scraping, and a public API so other security tools can consume our feed.

Built With

Share this project:

Updates