ToneShift - NLP Tone Classifier and Rewriter That Catches Emails That Will Damage Client Relationships
You wrote that email at 11pm when you were annoyed and it sounds exactly like it. ToneShift runs every outbound email draft through a fine-tuned tone classifier, flags passive-aggressive and dismissive language, and suggests a rewrite that still says what you mean — but keeps the client.
Difficulty
intermediate
Category
NLP & Text AI
Market Demand
High
Revenue Score
7/10
Platform
Browser Extension
Vibe Code Friendly
No
Hackathon Score
🏆 8/10
Validated by Real Pain
— seeded from real developer complaints
Freelancers on r/freelance and r/agency regularly post about sending frustrated emails to difficult clients and regretting the tone afterward, with several threads asking if any tool can catch passive-aggressive phrasing before send.
What is it?
Freelancers and agency owners lose clients over tone mismatches in email all the time, yet no tool catches it before send. ToneShift is a browser extension that hooks into Gmail and Outlook compose windows, runs the draft through a HuggingFace zero-shot tone classifier, and surfaces a sidebar with a tone score, flagged sentences, and a Claude-powered rewrite suggestion. The model classifies across five tones: assertive, passive-aggressive, dismissive, overly formal, and warm-professional. The rewrite keeps factual content identical but shifts tone to warm-professional with one click. Fully buildable with HuggingFace Inference API, Claude API, and a Manifest V3 Chrome extension — no custom model training required.
Why now?
HuggingFace zero-shot classification via Inference API is cheap and fast enough in April 2026 to run per-keystroke without latency, and the April 2026 vibe-coding wave has Chrome extension builds at an all-time high on Indie Hackers.
- ▸Real-time tone classification on Gmail and Outlook compose drafts using HuggingFace zero-shot model.
- ▸Sentence-level highlighting of passive-aggressive or dismissive phrases with confidence scores.
- ▸One-click Claude-powered rewrite preserving factual content but shifting to warm-professional tone.
- ▸Monthly tone trend report showing your personal tone patterns across sent emails.
Target Audience
Freelancers, agency owners, and consultants who email clients daily — roughly 50 million globally with a reachable core of 500k on platforms like Twitter and Indie Hackers.
Example Use Case
Sofia, a freelance UX designer, drafts a frustrated reply to a scope-creeping client, ToneShift flags three passive-aggressive sentences, she clicks Rewrite, and sends a version that keeps the boundary but saves the retainer.
User Stories
- ▸As a freelance consultant, I want to know if my email draft sounds passive-aggressive before I send it, so that I do not accidentally damage a client relationship worth $5k/month. As an agency owner, I want a one-click rewrite that keeps my message but softens the tone, so that I can send boundary-setting emails without sounding hostile.
- ▸As a frequent emailer, I want a monthly tone trend report, so that I can see if I am consistently dismissive in a certain type of situation.
Done When
- ✓Tone sidebar: done when user opens Gmail compose and sidebar appears with a tone score within 3 seconds of typing
- ✓Sentence flags: done when user sees specific sentences highlighted in the compose body with a tooltip explaining the detected tone
- ✓Rewrite: done when user clicks Rewrite and a full rewritten email appears in the sidebar that the user can copy in one click
- ✓Upgrade gate: done when user hits 10 free analyses and clicking Rewrite opens Stripe checkout, then access is restored immediately after payment.
Is it worth building?
$12/month x 100 users = $1,200 MRR at month 3. $12/month x 500 users = $6,000 MRR at month 9.
Unit Economics
CAC: $10 via Chrome Web Store organic + Twitter DMs. LTV: $144 (12 months at $12/month). Payback: 1 month. Gross margin: 87%.
Business Model
SaaS subscription
Monetization Path
Free tier: 10 analyses per month. Paid $12/month: unlimited analyses, full rewrite suggestions.
Revenue Timeline
First dollar: week 4. $1k MRR: month 3. $5k MRR: month 10.
Estimated Monthly Cost
HuggingFace Inference API: $20, Claude API: $30, Vercel: $20, Supabase: $25, Stripe fees: $15. Total: ~$110/month.
Profit Potential
Solid side-income at $3k–$8k MRR.
Scalability
High — add Outlook extension, team tone analytics dashboard, and per-domain tone profiles.
Success Metrics
Week 2: 200 extension installs. Month 1: 30 paid users. Month 3: 80% retention.
Launch & Validation Plan
Post Gmail compose mockup in r/freelance and r/agency, ask if people have lost clients over email tone, recruit 15 beta testers from thread, validate with 5 paid signups before full build.
Customer Acquisition Strategy
First customer: DM 25 freelancers on Twitter who post about difficult client emails, offer 3 months free for weekly feedback. Ongoing: Chrome Web Store organic, r/freelance, ProductHunt, Twitter freelancer community.
What's the competition?
Competition Level
Medium
Similar Products
Grammarly for grammar, Hemingway for readability, Crystal for personality-based writing — none focus on client relationship tone with a rewrite workflow.
Competitive Advantage
Grammarly corrects grammar not emotional tone. Hemingway scores readability not client relationship risk. Neither classifies passive-aggression at the sentence level with a one-click rewrite.
Regulatory Risks
GDPR: email content must not be stored server-side beyond the single API call. Process and discard — state this explicitly in privacy policy.
What's the roadmap?
Feature Roadmap
V1 (launch): Gmail tone classifier, sentence highlights, Claude rewrite, Stripe gate. V2 (month 2-3): monthly tone trend report, per-contact tone history. V3 (month 4+): Outlook extension, team analytics dashboard.
Milestone Plan
Phase 1 (Week 1-2): classifier and rewrite API ship, web paste demo live. Phase 2 (Week 3-4): Gmail extension live in Chrome Store, Stripe billing active. Phase 3 (Month 2): 100 installs, 30 paid users, ProductHunt launch.
How do you build it?
Tech Stack
Chrome Extension Manifest V3, HuggingFace Inference API, Claude API, Supabase, Stripe — build with Cursor for extension logic, v0 for sidebar UI components.
Suggested Frameworks
HuggingFace Inference API, LangChain, Chrome Extension Manifest V3
Time to Ship
2 weeks
Required Skills
Chrome Extension Manifest V3, HuggingFace API, Claude API, React sidebar.
Resources
Chrome Extension docs, HuggingFace Inference API docs, Anthropic docs, Plasmo framework for extensions.
MVP Scope
extension/manifest.json (Manifest V3 config), extension/content.ts (Gmail compose hook), extension/sidebar/App.tsx (tone score UI), extension/sidebar/RewritePanel.tsx (Claude rewrite display), background/service-worker.ts (API relay), api/analyze/route.ts (HuggingFace + Claude call), api/webhooks/stripe/route.ts (billing), lib/tone-classifier.ts (HuggingFace wrapper), lib/rewriter.ts (Claude prompt), .env.example.
Core User Journey
Install extension -> open Gmail compose -> see tone score sidebar appear -> click flag to read rewrite -> upgrade when free limit hit.
Architecture Pattern
User opens Gmail compose -> content script detects draft text -> sends to background service worker -> relays to Next.js API -> HuggingFace classifies tone -> Claude generates rewrite -> result returned to sidebar -> user clicks Rewrite and copies.
Data Model
User has many AnalysisRuns. AnalysisRun has one ToneScore, one FlaggedSentences list, one RewriteSuggestion. User has one UsageQuota.
Integration Points
HuggingFace Inference API for tone classification, Claude API for rewrite generation, Supabase for usage tracking, Stripe for billing, Chrome Extension content scripts for Gmail integration.
V1 Scope Boundaries
V1 excludes: Outlook extension, team analytics, tone profile per contact, mobile, Slack message analysis.
Success Definition
A freelancer the founder never met installs the extension, upgrades to paid after hitting the free limit, and sends a testimonial about saving a client relationship.
Challenges
Chrome Web Store review takes 2–4 weeks and can reject extensions — submit early and have a fallback web paste interface. The hardest non-technical problem is conversion: users love free tone checks but resist $12/month without a clear lost-client story.
Avoid These Pitfalls
Do not store email content in your database — this is a GDPR landmine and a trust killer. Do not attempt Outlook extension in v1 — the Office add-in platform doubles your build time. Finding first 10 paying freelancers takes 3x longer than the build — post in communities before writing code.
Security Requirements
Supabase Auth for user identity, email content processed in-memory only and never persisted, RLS on usage tables, rate limit API to 60 calls/minute per user, GDPR: no email content stored.
Infrastructure Plan
Vercel for Next.js API routes, Supabase for usage and billing state, GitHub Actions for CI, Sentry for error tracking, Chrome Web Store for extension distribution.
Performance Targets
200 DAU and 2,000 req/day at launch, tone classification under 800ms, rewrite generation under 3 seconds, sidebar render under 300ms.
Go-Live Checklist
- ☐Security audit complete
- ☐Payment flow tested end-to-end
- ☐Sentry live
- ☐Monitoring configured
- ☐Custom domain with SSL
- ☐Privacy policy stating no email storage published
- ☐5 beta freelancers signed off
- ☐Rollback plan documented
- ☐Chrome Web Store listing and ProductHunt draft ready.
First Run Experience
On first run: extension sidebar opens with a pre-loaded demo draft showing a flagged passive-aggressive sentence and a sample rewrite. User can immediately click through the full flow without writing any email. No manual config required: demo mode uses hardcoded sample, no auth needed until user hits the free limit.
How to build it, step by step
1. Define API contract in api/analyze/route.ts: input is draft string, output is tone scores, flagged sentences, and rewrite. 2. Scaffold Chrome extension using Plasmo framework with npx plasmo init. 3. Build extension/content.ts to detect Gmail compose area and extract draft text on input event. 4. Build lib/tone-classifier.ts calling HuggingFace zero-shot classification API with five tone labels. 5. Build lib/rewriter.ts calling Claude API with a prompt preserving factual content and shifting tone. 6. Create extension/sidebar/App.tsx rendering tone score badge and flagged sentence highlights. 7. Add extension/sidebar/RewritePanel.tsx showing Claude rewrite with one-click copy. 8. Implement usage tracking in Supabase and gate rewrites beyond 10/month behind Stripe checkout. 9. Submit extension to Chrome Web Store immediately and maintain a web paste fallback at the main domain. 10. Verify: open Gmail, type a passive-aggressive draft, confirm sidebar appears with correct tone score, click Rewrite, confirm output preserves meaning with warmer tone, confirm Stripe upgrade unlocks unlimited use.
Generated
April 18, 2026
Model
claude-sonnet-4-6
Disclaimer: Ideas on this site are AI-generated and may contain inaccuracies. Revenue estimates, market demand figures, and financial projections are illustrative assumptions only — not financial advice. Do your own research before making any business or investment decisions. Technology availability, pricing, and market conditions change rapidly; always verify details independently.