Request Router
Problem
I knew how much reply speed matters. The MIT lead response study found a lead is 21 times more likely to qualify if you reply within five minutes instead of thirty. I was still bad at it for my own business. I didn't see leads right away, and when I did, I didn't answer quickly. I already had an automatic "I'll get back to you soon" email, and it didn't help, because it doesn't ask anything or move the conversation forward.
I could have built a fix just for me. But every business that gets leads through a website form has the same problem.
Approach
I already had a system that turns incoming emails into pull requests on a website, so the hard parts (receiving email, keeping track of a conversation, replying in the same thread) were already built. Request Router started as a copy of that core.
Three decisions shaped the product:
- One question, not a chatbot. The reply is a short thank-you and a single question, the one a good salesperson at that business would ask first. A roofer's agent asks about square footage and existing layers. A law firm's asks whether the matter is contested and where it's filed. One good question gets answered. Five questions feel like a form.
- Email only. Leads already come in by email, and owners already work out of their inbox. There's no widget to install, no plugin, and no change to the website. A business points its form notifications at a Request Router address and it's done.
- Speed beats perfection. If the AI takes longer than four seconds, the lead gets the business's default question instead. A slightly generic question now beats a perfect one later.
The same thinking shows up in the failure cases. Early on, a bad response from the classifier crashed the handler and real leads were dropped. The fix was to treat anything it can't parse as a lead. Asking a spammer one question costs nothing, and losing a buyer costs a lot.
How it works
- A lead fills out the form. The form's notification email goes to the business's Request Router address.
- The AI reads it. One call to Claude decides whether it's a real lead or spam, a vendor pitch, an automated message, or an existing customer. It also pulls out the name, email and phone number. Non-leads are dropped by default, or can be forwarded as-is.
- The lead gets a question within seconds. In my live test the reply went out in about two seconds. It's set up so the lead's answer comes back to Request Router.
- The answer comes back, and the owner gets the lead. The forward includes the contact details, the original message, the question and the answer. Replying to it goes straight to the lead. If the lead hasn't answered in 15 minutes, the owner gets the lead anyway.
What I shipped
A demo you can try with your own email
The homepage runs two fictional businesses, Cedar & Main Plumbing and Northpoint Films, as real agents. Fill out either form with a real address and the reply lands in your inbox, usually within seconds. It's the most honest pitch I could make. Try it and see.
Trained on the business
Each agent learns from links and files the business adds: the homepage, the pricing page, a sales sheet. Each one is condensed once, when it's added, into a short brief of services, prices, service area and qualifying questions. Every reply works from those briefs. There's no search setup and no vector database. It's small, fast and cheap, and every reply works from the same context. A guidance box covers rules the pages don't state, like a minimum job size.
A portal that's just setup and testing
Owners sign in with an email code, with no password. They create an agent, add sources, and send themselves a test lead to see exactly what a customer would get. Test leads are free and run before anyone pays, so a business can see the quality of the questions before adding a card. There's no leads dashboard. Leads land in the inbox, where the owner already works.
Under the hood
The backend is TypeScript on Node with Fastify and SQLite, on one small DigitalOcean server. Postmark receives and sends the email, and Claude Haiku 4.5 classifies leads and writes the questions. The site and portal are Vue on Netlify, with Supabase for sign-in and Stripe for billing. Each lead is protected against duplicate deliveries, rate limited per sender, and any failed send alerts me by email.
Outcome
Request Router is live, with the two demo agents answering real submissions on the homepage.
The first serious interest came from a company whose leads are worth $8 to $10 million each. For them, one missed lead costs more than the software ever could. They asked for two things I had deliberately left out: more than one question, and a callback option. Those are the two decisions I liked most. They're also reasonable asks at that deal size, so I'm building both in. That's what a first real customer conversation is for.