The problem (Inspiration)

Ordinary people sign leases, accept medical plans, and click "I agree" on terms of service they do not actually understand. The language is written to be understood by the party that wrote it, not the person it affects. That asymmetry quietly costs people money, rights, and peace of mind. Plainspeak closes the comprehension gap.

What it does

You paste a confusing document and (optionally) say who you are, e.g. "I'm the tenant." Plainspeak returns three things:

  1. In plain words — what the document actually says, at the reading level you choose (Like I'm 10 / Plain English / Full detail).
  2. What affects you — the specific clauses that impact you, each ranked high / medium / low so the traps surface first.
  3. Questions to ask — the exact questions to put to the landlord, clinician, or company before you agree.Three one-click examples (apartment lease, medical letter, terms of service) let anyone see it work in seconds.

How we built it

  • Next.js 15 (App Router) + React 19 + TypeScript, deployed on Vercel.
  • A single structured call to Anthropic Claude (claude-sonnet-4-6 by default, set via env) with a system prompt that fixes the persona, the chosen reading level, a strict "never invent facts / this is not professional advice" guardrail, and a JSON output contract (temperature 0 for deterministic, repeatable explanations). Returned clauses are sorted high/medium/low so the riskiest surface first.
  • The model's reply is parsed defensively so code-fenced or slightly malformed JSON still yields a clean result; out-of-range severities are coerced rather than crashing the UI. That prompt/parse logic is pure and unit-tested (Vitest, 9 tests).
  • Claude is called server-side from a route handler so the API key is never exposed to the browser. Optional Upstash Redis per-IP rate limiting protects the public endpoint.

Challenges we ran into

  • Making the model output reliably renderable: solved with a strict JSON contract plus a defensive parser that recovers JSON from fenced/messy replies.
  • Producing a clean automated demo video: each capture shot runs in a fresh browser context, so the app gained a deterministic server-rendered demo mode that shows one result card full-screen, clear of the captions.

What we learned

A narrow, honest framing ("what affects YOU" + "questions to ask") is more useful than a generic summary, and shipping the guardrail in the model's own instructions keeps an AI explainer safely in its lane.

What's next

File/PDF upload and OCR, multi-document comparison, and side-by-side "before vs after you negotiate" views.

Built With

Share this project:

Updates