Gmail filters work great if your emails follow predictable patterns. But my inbox doesn't. Client emails, project updates, newsletters I actually want to read, invoices, meeting notes, they all come from different senders with different subject lines. Writing regex patterns for everything felt like a part-time job.
So, I built NeatMail.
Here's how it actually works: You define labels in plain English. Not regex, not complex filter rules – just describe what you want labeled. Example: "Label all emails about invoices as 'Finance'" Or: "Anything from clients asking for updates goes into 'Client-Urgent'" The AI reads incoming emails and applies your custom labels directly in Gmail. That's it. No learning period, no training data, no analyzing your email history. You tell it what you want, it does it.
The part that surprised me: I added an auto-draft feature almost as an afterthought. It reads emails that need replies and drafts responses in your tone (you can set the tone: professional, casual, friendly, etc.). I thought I'd never use it. I use it every day now. Even if I don't send the draft as-is, having a starting point saves 5-10 minutes per response.
Why open source: Because I'm handling your email. That felt too personal to keep closed. You can see exactly what it's doing, modify it, host it yourself if you want. The code is straightforward – no black boxes.
Current limitations: Gmail only (that's what I use, so that's what I built for) The label suggestions can get overly specific sometimes Draft tone matching is decent but not perfect Rate limits with Gmail API mean very high-volume users might hit delays
Tech stack: Built with Next.js, uses OpenAI's API (you need your own key), integrates via Gmail API. Setup takes maybe 10 minutes if you've used OAuth before. I've been using it for 3 months. My inbox actually stays at zero now. Not because I'm more disciplined – because the boring part is automated.
GitHub: https://github.com/Lakshay1509/NeatMail Happy to answer questions about how it works or why I made certain decisions. Also genuinely curious if anyone has suggestions for improving the label accuracy.