FinePrint Phantom: Summon the Clauses Hiding in the Fine Print A developer built FinePrint Phantom, an open-source Next.js tool that analyzes Terms of Service and privacy policy documents end to end and returns a "haunting report" of risky clauses, each quoted verbatim and scored on a Haunt Score. The analysis runs as a three-step Mastra workflow using the open-weight GPT-OSS 120B model served through Groq's free tier, with defensive JSON validation that discards malformed entries. The app keeps no database, analyzing documents in memory and discarding them, and includes a labeled demo mode with a heuristic engine that quotes only real clauses when no API key is present. This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine https://dev.to/challenges/hacktoberfest-week4-2026-10-26 Nobody reads the Terms of Service. That is not an insult; it is a design feature. Eight thousand words of legalese stand between you and the streaming service, and somewhere around word three thousand — long after your eyes glaze over — the document quietly changes character. It stops describing the product and starts describing what the company may do to you: sell your viewing history, track you across the web, take away your right to sue, renew itself forever, keep your data after you delete your account. Every agreement has a ghost in it. FinePrint Phantom is the séance. You give it a Terms of Service or privacy policy — a URL, the pasted text, or the built-in sample — and it reads the whole document, end to end, and returns a haunting report : The theme asked for a ghost in the machine. Mine was already there, hiding in section 7 b . The Phantom just turns the lights on. Live demo: https://fineprint-phantom.vercel.app https://fineprint-phantom.vercel.app Try the built-in sample first — the fictional "Streamly" terms, haunted on purpose. The sample earns a Haunt Score of 100 in demo mode: a perpetual, irrevocable license to everything you upload; your data sold to brokers; binding arbitration with a class-action waiver; deletion that deletes nothing. Every one of those clause types is modeled on language that really appears in real consumer terms — Streamly is fictional, its clauses barely are. A note on honesty: if the live demo is running without an API key when you visit, it says so. The app has a clearly labeled Demo mode in which a built-in heuristic engine reads your actual document and quotes only real clauses from it. Nothing is silently faked — a tool that exists to expose hidden fine print should not have any of its own. https://github.com/wahajansari08/fineprint-phantom https://github.com/wahajansari08/fineprint-phantom FinePrint Phantom is a Next.js app whose analysis is a genuine Mastra workflow — not one giant prompt, but three composed steps with validated hand-offs: Agent — the Phantom, whose instructions amount to "read like a careful friend, quote only verbatim, judge by the worst day" — reads each chunk and returns candidate clauses as JSON: quote, category, explanation, scariness. Every response is parsed defensively and validated; malformed entries are discarded, never rendered. The model is GPT-OSS 120B , an open-weight model, served through Groq's free tier and reached through Mastra's model router, so swapping providers is a configuration change, not a rewrite. URLs are fetched server-side, stripped to text, and capped at 60,000 characters with a truncation notice shown to the user. There is deliberately no database . The documents are analyzed in memory and discarded. A tool that reads privacy policies for a living has no business keeping copies of them. Because this tool only works if it can be trusted, and it can only be trusted if it can be inspected. A closed API could summarize a contract for you — and you would have to take its word for what it found, what it skipped, and what it quietly sent home. FinePrint Phantom is built the other way: an open-weight model whose behavior anyone can test, an open-source agent framework whose workflow anyone can read, prompts and scoring arithmetic that live in the same public repo as everything else. The Haunt Score formula is twelve lines long and printed in the README. If you think a clause was scored unfairly, you can point to the exact line of code that did it. Open weights made this buildable at all: a solo developer can run a 120-billion-parameter open-weight model over a full legal document for effectively nothing, which means the tool can be free, account-less, and storage-free — no sign-up wall standing between a person and the contract they are about to accept. The most one-sided documents on the internet are agreed to by people who were never really given a chance to read them. Open AI is how you hand the reading back. The moment it landed for me was the sample run. I had written the Streamly terms to be bad — I knew every clause in them — and the report still gave me a small chill: ten hauntings, laid out in a row, each one quoting my own document back at me in plain sight. You grant a perpetual, irrevocable license. We may sell your personal information. You waive any right to a jury trial. I wrote those sentences as fiction and they still read like a warning, because they are one: versions of them are sitting, unread, inside the agreements most of us accepted this month. The ghost was never in the machine. It was in the contract — the machine just finally read it aloud. The app is deployed on Vercel as its production home.