2
13 Comments

I built an AI filter to stop sales spam from burying real customer emails — formpuppy

Hey IH! 👋

I want to start with a question: how many emails in your contact inbox are actually from real customers?

For me, the answer was depressing. About 70% were cold sales pitches, automated marketing blasts, or SEO agency outreach. The real inquiries — the ones that matter — were buried.

I tried filters, labels, Zapier rules. Nothing stuck. So I built formpuppy.


What it does

formpuppy gives your business a dedicated email address per project. Every incoming email is classified by AI (Claude Haiku) in real time:

  • ✅ Real inquiry → forwarded to your inbox
  • 🗑️ Sales spam / cold outreach → silently dropped

You get a noise-free inbox without touching your existing setup. Setup takes 5 minutes: sign up, get your @formpuppy.com address, use it as your public contact email.


What makes it different

There are spam filters out there. Here's what makes formpuppy different:

  1. Built for global use, with native Japanese support — Most email filters are built for English. formpuppy works globally, and also understands Japanese-specific B2B spam patterns (keigo-heavy cold pitches, vendor form emails) that Western filters miss entirely.
  2. Transparent decisions — every classification shows you the reason and confidence score. No black box.
  3. Feedback loop — you can mark misclassifications, and the model improves over time.
  4. Modern DX — think Resend/Vercel-level UX. No XML config files.

Tech stack (for the builders 🛠️)

  • Next.js 15 (App Router) + Vercel
  • Supabase (Auth + PostgreSQL + RLS)
  • Resend Inbound for email receiving
  • Anthropic Claude Haiku for classification
  • Stripe for billing
  • Full i18n (English + Japanese)

Pricing

  • Free: 100 AI-classified emails/month — $0 forever
  • Pro: $15/month (or $9.99/month billed annually) — 3,000 emails/month, unlimited projects & team members, API access + priority support

Freemium model. Free tier is enough to validate whether it works for you before committing.


Where I'm at

I've been building in Japan as a solo founder.

I'd genuinely love your honest feedback:

  • Does this solve a real problem for you?
  • What would make you upgrade to Pro?
  • Is the pricing right for your market?

👉 Try it free: formpuppy.com

Thanks for reading 🐶

posted to Icon for group Product Launch
Product Launch
on March 10, 2026
  1. 2

    The problem is real — I checked my contact inbox while reading this and the ratio is about the same as yours.
    A few honest reactions:
    The Japanese-first angle is actually your strongest differentiator but it's buried in point 1 of a list. If you're building for the Japanese market specifically, that should be the headline, not a feature bullet. "The first AI inbox filter that understands keigo spam" is a more defensible position than "noise-free inbox" which sounds like every other spam filter.
    The thing that would make me upgrade to Pro is confidence that real inquiries never get silently dropped. The free tier selling point right now is "validate whether it works" — but what I actually need to know before giving a tool my public contact email is the false negative rate. How often does a real customer inquiry get classified as spam? That number, if it's good, is your conversion argument.
    On pricing: $15/month is fine for a business tool. The annual discount to $9.99 is aggressive enough to work. The free tier at 100 emails/month is probably too low for anyone with meaningful traffic to properly validate — they'll hit the limit before they trust it.

    1. 1

      These are exactly the right questions to ask before trusting a tool with your public contact address.

      On Japanese-first positioning: you're right that I've been burying the lead. The defensibility argument for "understands keigo spam" vs. "noise-free inbox" is something I've been thinking about but haven't committed to in copy yet. Appreciate the direct nudge.

      On false negative rate: the design decision I made early on is that the system fails open, not closed. If the AI is uncertain or the API errors out, the email is forwarded anyway — it never gets silently dropped. Every classification also shows a confidence score, so you can see how sure the model was on each decision. That said, I don't have a published false negative rate yet because I'm still collecting data. You're right that this number, if I can get it, is the conversion argument. Going to start tracking this more deliberately.

      On the free tier limit: also fair. 100/month was set to limit costs while validating, but your point about "hits the limit before they trust it" maps directly to what I've seen in early user behavior. Worth reconsidering.

      1. 1

        "Fails open not closed" is exactly the right design decision and it directly answers the false negative concern — I just didn't see it on the page. That sentence alone, if it's in the product description, removes the main objection before someone has to ask.
        Glad the free tier point was useful. Even bumping it to 250–300/month might be enough for a real business to get past the trust threshold without meaningfully increasing your costs.

      2. 1

        This comment was deleted a month ago.

  2. 2

    Interesting product.

    What tech stack did you use to build it?

    1. 1

      Built it with Next.js + React + TypeScript, with Supabase for auth/database, Resend for inbound email + forwarding, and Claude Haiku 4.5 for the filtering/classification layer. I’m hosting it on Vercel and trying to keep the stack pretty boring on purpose so I can focus on classification quality and delivery reliability first.

  3. 2

    The insight isn't the spam filter, it's that you built for Japanese keigo patterns. Most filters break on formality because they treat it as noise. You treated it as a signal. That's the difference between a tool and a solution.

    1. 1

      Thanks for putting it that way — "formality as signal, not noise" is exactly how I think about it. We don’t hard-code keigo rules; we ask the model to explain its decision in the same language as the email. For Japanese mail that naturally pulls in register and politeness as part of the reasoning, so the filter isn’t just keyword-based. Really glad that distinction came through.

  4. 2

    The 70% noise problem is real - and the fact that you built a solution instead of just complaining about it says a lot about the founder mindset.
    The transparent classification with confidence scores is the detail that stands out most to me. Most AI-powered tools give you a result with zero explanation - that black box problem kills trust quickly, especially for anything touching business-critical communication. Showing the reasoning is a smart differentiator.

    1. 1

      Appreciate that — and you’re right, the black box thing was a big reason we added it. Every classification in the dashboard shows the model’s reason and a confidence score (0–100%). For form-to-inbox, one wrong drop is a lost lead, so we wanted people to see why something was marked spam before they ever had to trust us blindly. If you end up trying it, I’d be curious what you’d want to see next (e.g. per-project overrides, more granular feedback). Thanks again.

  5. 2

    Claude Haiku for real-time classification is a smart pick, low latency and cheap enough to run on every email.

    One thing I've noticed with AI classifiers: the prompt structure matters more than people expect. A prompt that separates the role, constraints, and examples into distinct blocks tends to produce much more consistent decisions than one big instruction paragraph. The model gets confused when context, rules, and few-shot examples are all mixed together.

    I've been building flompt (github.com/Nyrok/flompt) for exactly this, a visual prompt builder that decomposes prompts into semantic blocks and compiles to Claude-optimized XML. For classification tasks the "constraints" and "examples" blocks especially help. Open-source, might be useful for tuning your classifier prompt.

    If this is useful, starring github.com/Nyrok/flompt is the best way to support it. Solo project, every star helps.

    1. 1

      Claude Haiku pick is exactly the reason — low latency matters when you're classifying on every inbound.

      Good call on the prompt structure. My current classifier is actually a flat system prompt — role, criteria, and JSON format spec all in one block. Exactly the pattern you're describing as suboptimal. flompt's semantic decomposition looks worth experimenting with, especially the constraints/examples split. Starring it now.

  6. 2

    The Japanese-specific spam detection angle is a real differentiator that most Western tools completely miss. Keigo-heavy vendor cold pitches are genuinely hard to classify because they're polite and formal in a way that looks like a real inquiry from the outside — the spam signal is in the business context, not the language pattern.

    The transparent confidence scores + feedback loop is smart positioning. For a spam filter, trust is the product — if a user can't explain why something was classified as spam, they won't trust the system enough to actually let it drop emails. The "reason + confidence" UI solves the credibility problem that black-box filters create.

    One question worth exploring for your ICP: are you targeting founders who get a lot of contact form submissions (and want signal), or email-heavy operators who've given up on inbox zero? The use case is slightly different — contact form handlers care more about not missing leads, email operators care more about volume reduction. The freemium positioning makes sense for both, but the upgrade trigger will be different for each group.

    The freemium tier at 100/month is a good validation gate. If someone hits the limit, they know the product is working. That's the natural upgrade moment.

    1. 1

      The Keigo insight nails it — a cold pitch opening with "平素よりお世話になっております" looks indistinguishable from a real inquiry on surface patterns alone. The signal is entirely in "does this person have a specific, answerable question?"

      On the ICP split: you've framed something I'm actively working through. My hypothesis is that false negatives (a real lead got dropped) are the upgrade trigger for signal-seekers, while false positives (too much manual review) drive upgrades for volume-reduction operators. The signal segment interests me more long-term — each lead has real business value, which might justify different pricing logic entirely.

      The 100/month cap as a validation gate is exactly the intent. Thanks for articulating it so clearly.

Trending on Indie Hackers
The most underrated distribution channel in SaaS is hiding in your browser toolbar User Avatar 187 comments I launched on Product Hunt today with 0 followers, 0 network, and 0 users. Here's what I learned in 12 hours. User Avatar 161 comments How are you handling memory and context across AI tools? User Avatar 105 comments I gave 7 AI agents $100 each to build a startup. Here's what happened on Day 1. User Avatar 98 comments Do you actually own what you build? User Avatar 61 comments Show IH: RetryFix - Automatically recover failed Stripe payments and earn 10% on everything we win back User Avatar 34 comments