AB
Back to work

Case 06

Article Summarizer

Handling untrusted web content safely

DESIGNVERIFYOPERATE

An RSS reader that strips remote HTML down to plain text before any of it reaches a language model.

How it fits together

RSS feedfetchersanitizermodel APIReact client

The problem

RSS feeds hand you someone else's HTML. Passing it straight through gives messy summaries and opens an input boundary you did not mean to open.

Where it could go wrong

What is exposed

  • RSS input
  • remote HTML
  • model boundary

Checks in place

  • HTML parsing
  • content sanitization
  • server-side API mediation

Result

  • clean text extraction
  • real-time summaries
  • provider abstraction

How I built it

Spring Boot fetches the feeds server-side, so the API key never reaches the browser. Jsoup strips the markup down to text before it goes to OpenRouter, and React displays the summaries.

JavaSpring BootReactJsoupOpenRouter API

What it does

  • Jsoup content sanitization
  • Server-side feed fetching
  • Clean model input
  • Java and React architecture

What I would improve

  • Restrict outbound fetch destinations
  • Add size, timeout, and content-type limits
  • Treat remote text as untrusted instructions at the model boundary

Code

View repository