🔍 Inspiration
Every day, billions of people click "I Agree" without reading what they're actually consenting to. Studies show that reading all privacy policies an average person encounters in a year would take 76 working days. These documents are deliberately long, complex, and filled with legal jargon — designed to confuse, not inform.
We experienced this personally. We clicked Accept on a platform and later discovered we had granted them permanent rights over our content. That moment made us ask: why is there no tool that actually reads this for you AND does something about it?
Every existing privacy tool warns you. Nobody fixes it. FinePrint was born to fix it.
⚡ What It Does
FinePrint is an AI-powered Chrome Extension that automatically protects your privacy on every website — without any effort from you.
When you land on a page with a Terms of Service, Privacy Policy, or cookie consent banner, FinePrint instantly analyzes the legal text using a large language model. Within 2 seconds you get:
- 🟢 🟡 🔴 A clear verdict: Safe, Warning, or Danger
- A score out of 100 based on 5 independent dimensions
- Specific flags explaining exactly what was found
- Plain English summary anyone can understand
🍪 Smart Cookie Manager
But FinePrint goes further than any other privacy tool. When a cookie banner is detected, our Smart Cookie Manager:
- Analyzes all available cookie categories
- Recommends the safest combination of settings
- Automatically applies them with one click
No reading. No guessing. Just protection.
🛠️ How We Built It
Chrome Extension (Manifest V3)
Built entirely with vanilla JavaScript and Chrome's native APIs.
A content script runs on every page using DOM parsing and keyword
pattern matching to detect ToS pages, cookie banners, and permission
requests in real time. A MutationObserver watches for late-loading
banners in single-page applications.
AI Analysis Engine
$$\text{Final Score} = \sum_{i=1}^{5} D_i \quad \text{where each } D_i \in [0, 20]$$
When legal text is detected, we extract up to 3,000 characters and send it to Groq API running LLaMA 3.3 70B. We engineered a structured prompt that forces the model to score across five independent dimensions before producing a final score.
5-Dimensional Scoring System
| Dimension | Max Score | What it measures |
|---|---|---|
| Data Collection | 20 | What data they collect |
| Data Sharing | 20 | Who they sell it to |
| User Rights | 20 | Your rights to delete/opt out |
| Data Security | 20 | Where data is stored |
| Content & Financial Risk | 20 | Ownership claims, auto-renewals |
Smart Cookie Manager
A second AI call analyzes the banner's DOM structure — buttons, toggles, categories — and produces a structured action plan. The auto-clicker executes actions with 300ms delays, dispatching real mouse events to interact naturally with the page.
Tech Stack
- Runtime: Chrome Extension Manifest V3, Vanilla JavaScript
- AI Model: LLaMA 3.3 70B via Groq API
- Storage: Chrome Storage API (fully local, no server)
- UI: Custom CSS design system, CSP-compliant SVG icons
- No backend. No data collection. Fully private.
🧱 Challenges We Ran Into
1. Chrome Manifest V3 CSP Restrictions
Manifest V3 blocks all inline scripts and any library using
eval() internally — including most icon libraries. We solved
this by building a custom lightweight SVG icon system from
scratch, fully CSP-compliant.
2. MutationObserver Infinite Loop
The observer watching for data changes would fire → trigger re-render → replace DOM elements → trigger observer again. A severe render loop making the dashboard completely lag.
Fix: Disconnect observer before every render, reconnect after,
with an isRendering lock flag to prevent re-entry.
3. Cookie Banner Diversity
OneTrust, Cookiebot, TrustArc, and thousands of custom implementations all have completely different DOM structures.
Fix: Built a multi-strategy scanner with 15+ selector patterns and label detection algorithms covering the most common consent frameworks.
4. LLM Scoring Consistency
LLMs tend to produce round numbers like 40, 50, or 60. We needed genuine, differentiated scores.
Fix: Forced the model to output each dimension score individually before summing — making lazy outputs structurally impossible.
$$\text{Score} = D_1 + D_2 + D_3 + D_4 + D_5 \neq \text{random round number}$$
🏆 Accomplishments We're Proud Of
- Built a fully passive, zero-effort privacy guardian — users get protected without changing their behavior at all
- The Smart Cookie Manager — no privacy tool we found actually fixes your cookie settings automatically
- Genuinely calibrated AI scoring:
- Wikipedia → 8/100 🟢
- Google → 35/100 🟡
- Temu → 74/100 🔴
- A complete production-grade product — not a prototype — with dashboard, animations, history, and full documentation
- Built in 20 days by a lean team
📚 What We Learned
Prompt engineering is real engineering. Small wording changes in system prompts produced dramatically different scoring behavior. Getting consistent, calibrated JSON output required as much design as any other system component.
Chrome Manifest V3 is genuinely restrictive. Every assumption about browser extensions needs revisiting for V3.
Simple ideas executed well beat complex ideas executed poorly. FinePrint's core concept fits in one sentence. The depth is in the execution.
The privacy problem is deeper than we thought. Researching dark patterns and data broker practices showed FinePrint addresses only the visible surface of a much larger systemic issue.
🚀 What's Next for FinePrint
| Roadmap Item | Description |
|---|---|
| 📱 Mobile App | iOS & Android for app permission scanning |
| 🏢 Enterprise | Bulk-audit SaaS agreements for legal teams |
| 🌍 Multi-language | 50+ languages for global accessibility |
| 🔔 Policy Change Alerts | Notify when ToS changes after you agreed |
| 🗄️ Community Database | Crowdsourced verified policy risk scores |
| 🌐 Browser Integration | Native integration with privacy browsers |
"The fine print is designed to confuse you. FinePrint is designed to protect you."
Built With
- chromemessagingapi
- chromescriptingapi
- chromestorageapi
- css3
- github
- groq
- html5
- javascript
- llama
- manifestv3
Log in or sign up for Devpost to join the conversation.