How We Built an AI Domain Name Generator
A behind-the-scenes look at the architecture behind findmydomain.dev — from AI agent loops to real-time domain checking via the Namecheap API.
Most domain name generators work the same way: you type a keyword, they append random suffixes, and you get a list of names — half of which are already taken. We wanted to build something better.
findmydomain.dev uses AI agents that understand context, generate creative names, and verify every single domain against a registrar API in real time. Here's how it works under the hood.
The problem with traditional generators
Traditional domain generators are glorified string concatenators. They take your keyword, stick "-ly" or "-ify" on the end, and call it a day. The results feel robotic because they are.
Worse, they often show you names without checking availability — or check against a stale database. You find a name you love, click through to register, and discover it was taken three years ago.
We set out to solve both problems: generate names that actually sound good and only show names that are actually available.
Architecture overview
The app is built on Next.js with two generation tiers:
- Free tier — uses OpenAI's GPT for name generation
- Premium tier — uses Anthropic's Claude for smarter, more contextual suggestions
Both tiers share the same core architecture: an AI agent loop that generates names in batches, checks their availability, and iterates until it has enough verified results.
The agent loop
The generation process isn't a single API call. It's an iterative loop:
- The AI generates a batch of 10-15 name candidates based on your description
- Each name is checked against the Namecheap API for domain availability
- Available names are streamed to the user in real time via SSE (Server-Sent Events)
- If we don't have enough available names yet, the agent generates another batch — this time knowing which names were taken and adjusting its strategy
- Repeat until we hit 10+ available names or the maximum iteration count
This loop is what makes the results feel intelligent. The AI learns from each round — if .com domains keep being taken, it might shift toward more unique, invented words. If a certain naming pattern keeps working, it leans into it.
Regeneration with feedback
The agent loop gets even smarter on the second round. After seeing the first batch of results, you can like the names you love and dislike the ones that miss the mark. When you hit regenerate, the AI sees your preferences and adjusts — it generates more names in the style of your favorites while avoiding patterns from the names you rejected.
Each round gets sharper as the AI narrows in on what you want. Your liked names are pinned and carried forward, so you never lose a good find. Meanwhile, every name from previous rounds is tracked to avoid duplicates.
This feedback loop works on both the free and premium tiers. It's the core interaction that makes the tool feel collaborative rather than one-shot.
Real-time domain checking
Domain availability is checked via the Namecheap API. There's a catch though: Namecheap requires IP whitelisting for API access, and serverless functions on Vercel have dynamic IPs.
Our solution: a lightweight proxy running on a Hetzner VPS with a static IP. The Vercel function calls the proxy, the proxy calls Namecheap, and the response flows back. We batch up to 50 domains per API call to minimize latency.
We also fetch TLD pricing separately via Namecheap's pricing API and cache it for an hour — so every domain card shows the actual registration price, not a guess.
Streaming results with SSE
Nobody wants to stare at a loading spinner for 30 seconds. We use Server-Sent Events to stream results to the browser as they become available.
The SSE stream emits different event types:
status— progress updates ("Generating names...", "Checking availability...")result— a verified available name with TLD data and pricingdone— generation completeerror— something went wrong
On the frontend, a custom React hook consumes the stream and updates the UI in real time. Names appear one by one as they're verified — it feels fast even when the full generation takes 15-20 seconds.
Premium: smarter AI with feedback loops
The premium tier adds several capabilities on top of the base loop:
Name explanations — Claude doesn't just generate names, it explains why each one works. "This name combines 'pixel' (digital imagery) with 'vault' (security, collection) — suggesting a secure marketplace for digital assets."
Creative direction — on top of the like/dislike feedback from the base regeneration loop, premium users can give the AI written instructions like "make them more playful" or "shorter names only." These are injected into Claude's system prompt for the next round, so you're steering the AI in two ways at once: implicit feedback through your ratings and explicit direction through your words.
Example names — provide names you like (even if they're taken) and the AI generates more in that style and tone.
Team voting — share a link with your team and let them vote on favorites. The voting page polls for updates every 10 seconds so votes appear in near real-time.
Rate limiting
We use two rate limiting strategies:
- Premium users — an atomic counter in Supabase (via a PostgreSQL RPC function) that tracks daily usage per user. This is reliable and works across multiple serverless instances.
- Free users — an in-memory IP-based limiter for regenerations. Simpler, sufficient for the free tier.
What we'd do differently
If we were starting over, a few things we'd change:
Start with the proxy from day one. We initially tried calling domain APIs directly from Vercel functions and hit IP whitelisting issues immediately. The proxy approach works well but could have saved us debugging time.
Stream from the start. Our first prototype waited for all results before displaying anything. The perceived performance difference when we switched to SSE was dramatic.
Batch TLD checks. Early versions checked each TLD separately. Batching up to 50 domains per Namecheap API call cut our checking time by 80%.
Try it yourself
The best way to understand how it works is to use it. Describe your project on the homepage and watch the AI generate and verify names in real time.
If you want the full experience — Claude-powered generation, name explanations, creative direction, and team voting — Premium is a one-time €10 payment for lifetime access.
Ready to find your perfect domain?
Describe your project and get AI-generated name suggestions with verified availability.
Try the AI generator