{
  "markdown": "<div align=\"center\">\n\n<img src=\"apps/extension/public/icons/icon-128.png\" width=\"96\" alt=\"Defluff\">\n\n# Defluff\n\n**AI wrote this email. Let's see what they actually wanted.**\n\nReverse the AI behind corporate email: infer the prompt the sender gave their LLM,\nclassify the message, surface the real ask. Zero servers, your keys, your models.\n\n[![CI](https://github.com/FinAegis/defluff/actions/workflows/ci.yml/badge.svg)](https://github.com/FinAegis/defluff/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n[![No telemetry](https://img.shields.io/badge/telemetry-none-brightgreen.svg)](SECURITY.md)\n[![BYOK](https://img.shields.io/badge/keys-your%20own-orange.svg)](#providers)\n\n<br>\n\n<img src=\"docs/screenshot.jpg\" width=\"640\" alt=\"Defluff showing a reversed AI prompt, NOISE verdict, and bullet specifics for a sales outreach email\">\n\n<sub>A real sales-outreach email, defluffed — the reversed prompt gives it away in one line.</sub>\n\n</div>\n\n---\n\n## What is this?\n\nCorporate email has become unreadable. Half of every message is AI-generated filler, restated context, and *\"I hope this finds you well.\"*\n\nDefluff is a browser extension and Outlook add-in that replaces the body of an open email with:\n\n1. **Authorship** — AI-written, AI-polished, or plainly human. No more always-on \"they probably asked an AI\" on messages that were clearly written by hand.\n2. **The reversed prompt** — one line naming what the sender probably asked an AI to write (\"Pitch our DevOps services and offer a free infrastructure review\"). Only shown when AI was actually involved. Often this is all you need.\n3. **A verdict** — Actionable / Response needed / FYI / Noise, with scam-pattern naming for the threats you actually see in 2026: invoice fraud / BEC, phishing, fake recruiter, conference scam, crypto pitch.\n4. **3–5 bullets** — the actual specifics, preserved verbatim. Returned in the email's own language — French email gets French bullets, German gets German.\n\n*\"Show original\"* is one click away if you want the full email back.\n\nThe interesting part isn't the summarization — that's just an LLM call with a restrictive prompt. The interesting part is the **trust model**: there is no Defluff backend. Your email body and your API key never leave your browser for any infrastructure we operate. Each De-Fluff click goes straight from your browser to the LLM provider you picked. Zero retention isn't a policy, it's the architecture.\n\n---\n\n## How it works\n\n<table>\n<tr>\n<td align=\"center\" width=\"33%\">\n\n**1. Install**\n\nChrome/Edge/Firefox extension,\nor Outlook Office.js add-in.\n\n</td>\n<td align=\"center\" width=\"33%\">\n\n**2. Configure**\n\nClick the icon, pick a provider,\npaste your key. That's it.\n\n</td>\n<td align=\"center\" width=\"33%\">\n\n**3. Defluff**\n\nClick the button on any email.\nProse collapses into bullets.\n\n</td>\n</tr>\n</table>\n\n---\n\n## Install\n\n### Available now\n\n<table>\n<tr>\n<td>\n\n**[Chrome Web Store](https://chromewebstore.google.com/detail/defluff/focbcpblgbbebppigdalpajdgmkmejfo)** — browser extension for Gmail / Outlook Web / LinkedIn Messaging\n\n</td>\n<td>\n\n[**Add to Chrome →**](https://chromewebstore.google.com/detail/defluff/focbcpblgbbebppigdalpajdgmkmejfo)\n\n</td>\n</tr>\n<tr>\n<td>\n\n**[Claude Code plugin](apps/claude-skill#readme)** — Anthropic agent surface\n\n</td>\n<td>\n\n```bash\nclaude plugin marketplace add FinAegis/defluff\nclaude plugin install defluff@finaegis\n```\n\n</td>\n</tr>\n<tr>\n<td>\n\n**[ClawHub](https://clawhub.ai/yozaz/defluff)** — Openclaw skill\n\n</td>\n<td>\n\n```bash\nopenclaw skills install defluff\n```\n\n</td>\n</tr>\n</table>\n\n### Coming soon (pending live-testing — track in [#7](https://github.com/FinAegis/defluff/issues/7))\n\n- Edge Add-ons — same build\n- Firefox AMO — same build\n- Microsoft AppSource — Outlook add-in (desktop + web)\n\n### For developers right now\n\n```bash\ngit clone https://github.com/FinAegis/defluff.git\ncd defluff\npnpm install\npnpm --filter @defluff/extension build\n```\n\nThen load `apps/extension/dist` as an unpacked extension (`chrome://extensions` → Developer mode → **Load unpacked**). Click the Defluff icon in the toolbar to open settings.\n\nFor the Outlook add-in:\n\n```bash\npnpm --filter @defluff/outlook-addin dev\n```\n\nThen sideload `apps/outlook-addin/manifest.xml` from **Outlook Web → Get Add-ins → My add-ins → Custom Addins**.\n\n---\n\n## Providers\n\n| Provider | Default model | How it connects |\n|---|---|---|\n| **Anthropic Claude** | `claude-opus-4-7` | Messages API with the browser-direct header |\n| **OpenAI** | `gpt-5.4` | Chat Completions with `max_completion_tokens` — works on the reasoning models (o-series / GPT-5) and older chat models alike |\n| **Google Gemini** | `gemini-2.5-pro` | Key as query param, native CORS. (Preview tier `gemini-3.1-pro-preview` available via model override.) |\n| **OpenAI-compatible** | `llama3` | Ollama, LM Studio, LiteLLM, or any OpenAI-compatible endpoint. [Setup ↓](#running-against-a-local-model) |\n\nAll four share one extraction prompt. Swap providers anytime from the options page.\n\n**A note on the defaults.** Defluff defaults to each provider's current frontier model rather than a mini/haiku/flash tier. Scam detection and AI-authorship classification are judgment tasks — smaller models regress meaningfully (they mark obvious AI-recruiter pitches as \"legit\" because they lean literal). A typical email is ~500-1500 input tokens + ~200 output, so per-click cost lands in the ~$0.01-0.05 range. If that's too much for your usage pattern, override the model to a cheaper tier (`claude-haiku-4-5`, `gpt-4o-mini`, `gemini-2.5-flash`) from the options page — the prompt still handles them, just with less aggression on edge cases.\n\n### Running against a local model\n\nPoint Defluff at an Ollama or LM Studio instance and get zero per-call cost, full privacy, and no rate limits:\n\n1. **Install and run Ollama.** `brew install ollama` (or equivalent) then `ollama pull llama3` and `ollama serve`.\n2. **Allow the extension origin to call Ollama.** Ollama's default CORS config blocks browser requests. Start Ollama with:\n\n   ```bash\n   OLLAMA_ORIGINS='chrome-extension://*,moz-extension://*' ollama serve\n   ```\n\n   Or the more permissive `OLLAMA_ORIGINS='*'` if you're not fussy. On macOS with the Ollama app, `launchctl setenv OLLAMA_ORIGINS '*'` then restart the app.\n3. **Configure Defluff.** Options page → Provider: **OpenAI-compatible** → Base URL: `http://localhost:11434/v1` → Model: `llama3` (or whatever you pulled) → leave API key blank → Save.\n\nLM Studio is similar: start its local server, point the base URL at `http://localhost:1234/v1`. LiteLLM and other OpenAI-compatible gateways work the same way.\n\n---\n\n## How it compares\n\n|   | **Defluff** | Shortwave | Superhuman AI | Grammarly |\n|---|---|---|---|---|\n| Your email reaches their servers | **Never** | Yes | Yes | Yes |\n| Stores your content | **Never** | Yes | Yes | Yes |\n| Needs an account | **No** | Yes | Yes | Yes |\n| Monthly cost | **$0\\*** | $12 | $40 | $12 |\n| Open source | **Yes** | No | No | No |\n| Works with local LLMs | **Yes (Ollama)** | No | No | No |\n\n<sub>* Plus whatever you pay your chosen LLM provider. Typical heavy usage: under $1/month on Claude Haiku or GPT-4o mini. $0 on Ollama.</sub>\n\n---\n\n## Privacy\n\n- Your email never touches FinAegis infrastructure. **There is no FinAegis infrastructure.**\n- API keys are stored in `chrome.storage.sync` (browser) or `Office.context.roamingSettings` (Outlook) — encrypted at rest, per-user, synced by the platform.\n- Extension permissions are host-scoped: `mail.google.com`, `outlook.office.com`, and the exact LLM endpoints you'll use. **Never `<all_urls>`.**\n- Zero analytics, zero telemetry, zero accounts.\n\nFull threat model: **[SECURITY.md](SECURITY.md)**. Reporting: private advisories via [GitHub Security](https://github.com/FinAegis/defluff/security/advisories/new).\n\n---\n\n## Architecture\n\n```\n  your browser / Outlook webview\n  ─────────────────────────────────────────────────\n  [De-Fluff button] ──► [email text] ──► [LLM provider]\n                                              ↑\n                                 api.anthropic.com /\n                                 api.openai.com /\n                                 generativelanguage.googleapis.com /\n                                 your-ollama-endpoint\n```\n\nA pnpm monorepo. TypeScript end to end. Vite for bundling.\n\n| Package | What it is |\n|---|---|\n| [`packages/core`](packages/core) | Extraction prompt, 4 provider adapters, bullet parser, typed errors. Pure TS, no platform APIs. |\n| [`apps/extension`](apps/extension) | MV3 extension for Chrome/Edge/Firefox. React options page, Shadow-DOM-hosted content UI so host-page CSS can't bleed in. |\n| [`apps/outlook-addin`](apps/outlook-addin) | Office.js add-in. Plain-TS task pane, zero runtime deps. |\n| [`apps/claude-skill`](apps/claude-skill) | Claude Code plugin (`SKILL.md` + manifest). Distributed via the [FinAegis marketplace](.claude-plugin/marketplace.json) at the repo root — `/plugin install defluff@finaegis`. |\n| [`apps/openclaw-skill`](apps/openclaw-skill) | A single `SKILL.md` (markdown + YAML) for the [Openclaw](https://openclaw.ai) agent platform — published to [ClawHub](https://clawhub.ai/yozaz/defluff). |\n\nProvider adapters use plain `fetch()` — no SDKs in the bundle — to keep client bundles small and the audit surface minimal.\n\n---\n\n## Contributing\n\nSee **[CONTRIBUTING.md](CONTRIBUTING.md)** for setup, the architectural constraints that are non-negotiable (no backend, host-scoped permissions, verbatim extraction prompt), and commit conventions.\n\nThe most useful contributions right now are the [**launch-blocker issues**](https://github.com/FinAegis/defluff/labels/launch-blocker) — real-world Gmail/Outlook DOM validation and a CORS smoke test against each provider from a live Outlook task pane.\n\n---\n\n## License & support\n\n[MIT](LICENSE). Free, forever. Fork it, audit it, ship your own.\n\nIf Defluff saves you an hour a week and you'd like to say thanks: [☕ buymeacoffee.com/finaegis](https://buymeacoffee.com/finaegis). Entirely optional — the product is and always will be free.\n\n<sub>Built with skepticism by [FinAegis](https://github.com/FinAegis).</sub>\n",
  "bytes": 10214,
  "sha": "45d6fd3d6de723f71dc5bd5554756c8a8ff78304f81aea881f05f0b16be83e1a",
  "repo_slug": "finaegis/defluff",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_finaegis_defluff_defluff_c1a8dacc/readme"
}