On a Tuesday evening in late 2024, I stared at my Gmail inbox showing 12,847 unread emails. I'd tried Unroll.me (privacy concerns), Clean Email (too expensive), and manual unsubscribing (soul-crushing). That night, I opened VS Code at 9:47 PM and started building InboxClean. Six days later — while still working my 9-to-5 — I had a working product. Here's exactly how it happened.
Why I Started Building InboxClean on a Random Tuesday
The trigger wasn't the unread count. It was LinkedIn.
I counted 47 separate LinkedIn emails in my inbox from the past month. Connection requests, job alerts, "Who's viewed your profile," engagement notifications — each one a separate row making my inbox look like chaos. When I tried to unsubscribe, LinkedIn's preference center had 23 different email toggles. Twenty-three.
I thought: what if I could see all 47 LinkedIn emails as a single row, and delete them all with one click? What if I could tell Gmail "never accept LinkedIn emails again" — permanently?
That was the core idea. Not another email organizer. A sender-level nuclear option.
The 6-Day Building InboxClean Timeline
Here's the actual breakdown of how each day went:
- Day 1 (Tuesday, 9:47 PM – 1:30 AM): Set up Next.js project, Google OAuth, basic Gmail API connection. Got my first successful inbox scan at 12:41 AM. Celebrated with cold pizza.
- Day 2 (Wednesday, 8 PM – 11 PM): Built the sender grouping logic. This was the magic — aggregating by domain so 47 LinkedIn emails became one row showing "linkedin.com: 47 emails."
- Day 3 (Thursday, 7 PM – 12 AM): Implemented the unsubscribe detection. Gmail's List-Unsubscribe header exists in most marketing emails. I learned to parse both mailto: and https: unsubscribe links.
- Day 4 (Friday, 6 PM – 2 AM): Added the "Inbox Shield" feature — creating Gmail filters that auto-delete future emails from blocked senders. This was harder than expected; Gmail's filter API has quirks.
- Day 5 (Saturday, 10 AM – 6 PM): Full day on UI. Made it actually usable by humans. Added the scan progress indicator, sort options, and that satisfying animation when you block a sender.
- Day 6 (Sunday, 12 PM – 8 PM): Stripe integration, deployed to Vercel, domain setup, wrote initial landing page copy. Hit "publish" at 7:58 PM.
Total time invested: roughly 34 hours across 6 days.
The Technical Decisions That Made Building InboxClean Possible in a Week
Speed came from ruthless scoping and choosing technologies I already knew:
Next.js App Router: Server components meant I could query the Gmail API without building a separate backend. One codebase, fewer moving parts.
Gmail API, not IMAP: IMAP would've meant parsing raw email headers myself. Gmail's API returns structured JSON. I traded some flexibility for massive time savings.
Headers only: I made a deliberate choice to never request email body content. InboxClean reads only From, Subject, Date, and List-Unsubscribe headers. This simplified the code and became a privacy feature — I can honestly tell users their email content is never accessed.
Vercel for hosting: Zero DevOps. `git push` deploys. I probably saved 4-5 hours not configuring servers.
No database initially: User data lived in Gmail. I didn't need to store emails locally — just read them, process them, done. (I added a database later for tracking usage limits.)
How I Found 34 Hours While Working Full-Time
I have a demanding job. Here's what actually worked:
- Mornings were off-limits. I tried once and was useless at work. Never again.
- Evenings from 7 PM onwards. After dinner, I'd set a timer for 3-4 hours of focused coding.
- Weekend was the multiplier. Saturday and Sunday gave me 14 uninterrupted hours combined.
- Scope creep resistance. I wrote down 20+ feature ideas during the week. Built zero of them. The MVP was: scan, group, unsubscribe, filter. Nothing else.
- No social media. I deleted Twitter and Reddit from my phone for the week. Probably saved 5+ hours.
The hardest part wasn't coding — it was saying "no" to features I wanted to build. Email analytics, scheduled reports, team features, dark mode — all got pushed to "someday."
What Surprised Me About Building a Gmail Tool
A few things I didn't expect:
Gmail's rate limits are generous. I worried about hitting API quotas, but Google allows 250 quota units per user per second for Gmail. Scanning 1,000 emails uses about 100 units total. No issues.
List-Unsubscribe is inconsistent. About 70% of marketing emails include the header. For the other 30%, I fall back to extracting unsubscribe links from the email body — which sometimes works, sometimes doesn't.
People really hate their inboxes. When I soft-launched to a few friends, the response wasn't "cool project." It was "I've been waiting for something like this for years." The frustration runs deep.
Privacy is a competitive advantage. Multiple users told me they'd avoided other inbox cleaners because of data concerns. When I explained InboxClean never reads email content, they signed up immediately. The concerns around services like Unroll.me are very real.
What I'd Do Differently Building InboxClean Today
If I started over with what I know now:
I'd build the filter feature first. The Inbox Shield — automatically blocking future emails — turned out to be what users love most. I almost cut it for scope reasons.
I'd add Stripe earlier. I left payment integration for Day 6 and almost ran out of time. Should've done it Day 3 or 4.
I'd start with Pro only. The free tier complicated the code (tracking usage limits, weekly resets). Starting as paid-only would've been simpler and validated demand faster.
I'd write tests. I shipped with zero automated tests. Six months later, I paid for this with a bug that accidentally unsubscribed a user from emails they wanted. Oops.
From Side Project to Real Product
InboxClean started as a personal tool. I genuinely built it because I needed it. The moment I scanned my own inbox for the first time and saw senders grouped by domain — Substack (34), LinkedIn (47), Quora (28) — I felt something click.
One click, and 47 LinkedIn emails were gone. One more click, and Gmail would auto-delete future LinkedIn emails forever. The inbox number dropped from 12,847 to 11,632 in about 90 seconds.
That's when I knew other people would want this too.
Six months later, InboxClean has processed over a million emails. Users block an average of 23 senders in their first session. The Pro subscribers who set up weekly auto-cleaning tell me Monday mornings feel different now — they wake up to an inbox that's already been tidied.
If you're thinking about building something: start with your own frustration. Build the smallest thing that solves it. Ship in days, not months. You can always add features later — but you can't get back the time you'd spend overthinking.
My inbox has 247 unread emails now. That's still too many. But it's a problem I can manage — because I built the tool to manage it.