Everything starts on your own machine with deterministic pattern and list matching. No text leaves your device at this stage. Your private denylist, private context, and profiles are stored encrypted at rest on your device (Argon2id key derivation + XSalsa20-Poly1305 vault) outside any code repository.
Check and clean your writing before you publish it.
You paste or load a piece of writing, such as a blog post, an email, or a document. noreduct.io’s anonymize function finds anything that could identify you or harm you if published, and either removes it or suggests a safer version. Its goal is to make content safe to publish. It runs alongside the tool’s other direction, which helps writing sound like you.
Find & Scrub Identifying or Harmful Leaks
Starts on your own machine with pattern and list matching for secrets/GUIDs, personal details, image EXIF/GPS metadata, your private local denylist, and employer-related leaks—followed by optional placeholder-swapped AI risk review where you approve every change.
Two-Way Voice Profiles (toward & away)
Models voice across four fingerprint categories (lexical, syntax, structural, topic) with 0–100 risk bands and an approval-gated learning loop—helping AI drafts sound like you (toward / de-AI) or masking your real-voice tells behind a pseudonym (away).
How It Works, in Order
Every step runs in a strict order so sensitive material is caught on your machine first—before any text ever leaves your device.
Clear-cut items, like API keys, GUIDs, denylist hits, and image EXIF/GPS metadata, are removed or replaced with neutral placeholders (such as [SECRET-1], [DENYLIST-2], or the all-zero GUID 00000000-0000-0000-0000-000000000000). Judgment calls are flagged for you to decide—combining into one stacked flag per sentence in the coaching workspace (`Low < 34`, `Med 34–66`, `High 67+`) with inline highlights and struck-through Fixed history as you edit.
Before anything is sent to an AI model (using your own API key), matched private items are swapped for placeholders (`[SECRET-1]`, `[DENYLIST-2]`), and a hard safety check (`assertRedacted()` + leak tripwire) blocks the request if one slips through. You can inspect the exact outbound payload before sending. The model then flags content that could damage your reputation or overshare (`block` or `warn` severity), and can suggest anonymized rewrites. You approve every change.
Rewrites text so it can’t be traced back to your writing style. Reuses your real-voice fingerprint profile (`avoid` polarity across `lexical`, `syntax`, `structural`, and `topic`) to propose rewrites that remove your personal cadence and vocabulary tells, re-scoring locally so you see the leakage score drop before accepting.
What the Local Scan Looks For
During Step 1 on your machine, the scanner checks four categories of identifying or harmful material:
Secrets, Credentials, API Keys & GUIDs
Flags API keys, tokens, passwords, private keys, connection strings, non-allowlisted emails, and GUIDs such as tenant, subscription, or client IDs. Proposes typed placeholders and never logs or exports the matched value.
sk_live_0000generic0000example → Personal Details & Image Metadata
Flags home addresses, personal phone numbers or emails, birthdates, family details or schools, and routines/travel plans. For images, inspects EXIF/XMP metadata (GPS coordinates, camera serials, author, timestamps) and writes a clean copy with metadata stripped while leaving your original untouched.
photo.jpg (GPS: 00.000°N) → Your Own Private Denylist of Names & Terms
Your own private list of names and terms that must never appear (employer, customer, or partner names, project code names, street or family names). You supply it, and it stays on your device, encrypted in the local vault outside any code repository. Any external log names only the rule ("denylist term #3"), never the term itself.
ProjectExampleName → Employer-Related Leaks
Flags four categories of workplace risk: employer-internal (internal tools, processes, org structure, metrics), customer-or-partner (identifiable clients or their environments), confidential (unreleased work, roadmaps, incidents, NDAs), and speaking-for-employer (statements that sound like speaking on behalf of an employer).
"We are sunsetting ServiceX in Q4" → Interactive Walkthrough: How a Draft Gets Cleaned
Step through a generic sample draft to see how local pattern matching, private-list redaction, stacked sentence flags, and optional AI risk review work in sequence.
Step through how a draft moves through the noreduct.io pipeline. All examples below use strictly generic placeholders (`Example Corp`, `jane@example.com`, and the all-zero GUID `00000000-0000-0000-0000-000000000000`).
Last Tuesday while working from my house on [! Personal] 742 Evergreen Terrace, I was debugging our internal tool, [! Denylist #1] ProjectAtlas, ahead of our rollout for [? customer-or-partner] Example Corp.
Someone had committed a staging token ([! Secret] sk_test_0000generic0000example) and subscription GUID [! GUID] 11111111-2222-3333-4444-555555555555 alongside a screenshot ([! Image EXIF/GPS] debug_shot.jpg). Honestly, [? confidential + speaking-for-employer] we are sunsetting our legacy billing engine in Q4 because it can't handle enterprise load.
Last Tuesday while working from , I was debugging our internal tool, , ahead of our rollout for .
Someone had committed a staging token () and subscription GUID alongside a screenshot (). [STACKED SENTENCE FLAG — HIGH BAND: confidential + speaking-for-employer + lexical intensifier]
Deterministic Local Redactions (P1)
- Secrets & GUIDs: Replaced with typed placeholders (
[API-KEY]and the all-zero placeholder GUID00000000-0000-0000-0000-000000000000). - Private Denylist: Whole-word & digit/separator matches from your encrypted local vault become
[DENYLIST-1],[DENYLIST-2]. External logs refer only to "denylist term #1", never the value. - Personal & Image Metadata: Address scrubbed; image EXIF/XMP/GPS stripped into a clean copy while leaving your original file untouched.
One Stacked Flag Per Sentence
- Coaching Workspace Rule: If a sentence trips multiple detectors (e.g., an employer leak plus a real-voice lexical tell), they stack into a single flag on that sentence, colored by the highest risk band (
Low < 34,Med 34–66,High 67+). - You Decide: Nothing is auto-applied. You accept each redaction proposal or edit the sentence in place.
BLOCK (confidential + speaking-for-employer)WARN (oversharing / reputation + employer-internal)While auditing a deployment pipeline prior to a production release, I ran into a classic configuration trap: a staging token and tenant identifier hardcoded next to a debug screenshot.
Moments like that are a reminder that legacy billing architectures eventually hit a wall under sustained load, forcing teams to rethink how they isolate credentials and state.
Principles We Build By
Plain commitments on where your data lives, who makes every editorial call, and what no tool can promise.
Your private list and sensitive details never leave your machine.
Everything starts locally on your device. Your private denylist, private context, and raw voice fingerprints live in an encrypted local vault outside any code repository. Before anything is sent to an optional AI review, matched private items are swapped for neutral placeholders, and a safety tripwire blocks the request if one slips through.
Nothing is changed or published without your approval.
Redactions, rewrites, and profile updates are always proposals—never silent auto-edits. Clear-cut items are replaced with explicit placeholders, judgment calls are flagged inline for you to decide, and you approve every change.
It’s a safety net and doesn’t replace your own judgment.
We do not promise perfect anonymity. If the facts or timing of an anecdote could only be known by one person, no text tool can hide that. noreduct.io catches accidental leaks, stray identifiers, and preventable oversharing, but the final judgment call is always yours.
Planned Features & Build Order
Stated plainly: the anonymize features below are planned and in development, in roughly this order (`P1` → `P2` → `P3`). None are labeled or released as generally available.
Private List, Secrets & GUIDs, and Personal-Privacy Scrubbing
Local deterministic checks on your machine: (1) your private denylist of names and terms stored in the encrypted vault outside any repository, (2) secrets, credentials, API keys, and tenant/subscription GUIDs, and (3) personal-privacy text patterns plus local image EXIF/XMP/GPS metadata stripping.
Employer-Leak Detection & Optional AI Risk Review
Detecting employer-related leaks across four categories (employer-internal, customer-or-partner, confidential, and speaking-for-employer) paired with optional LLM risk review (guarded by placeholder pre-swapping and a fail-closed outbound tripwire) that flags block/warn risks and suggests anonymized rewrites for your approval.
Stylometric Anonymization
Rewriting text so it cannot be traced back to your writing style—using your real-voice fingerprint profile (`avoid` polarity) to propose rewrites and re-scoring locally so you can verify the leakage score drops before accepting.
The no-name Blog
no-name is the tech-adjacent personal blog written with AI help and cleaned through noreduct.io as a real-world proof of value for the tool.
no-name // ISSUE_00 Why no-name Exists: A Live Proof of Value for noreduct.io
Testing a local-first voice and anonymization tool in public—without PR smoothing or employer headaches.
Inaugural post on no-name, the blog written as a proof of value for noreduct.io: upfront AI collaboration disclosure, voice scoring (toward/away), and pre-publish leak scrubbing.
no-name // ISSUE_01 In Preparation
First Longform Proof-of-Value Essay
Currently being drafted outside this repository and run through the noreduct.io workflow—testing voice scoring (toward/away) and safe-to-publish scrubbing on unfiltered technical writing.