BabyNamePick started with about 500 carefully curated names. We're now past 2,100. Here's what we learned scaling a structured dataset while keeping quality high.
The Quality vs Quantity Trap
It's tempting to bulk-import name lists from public datasets. We tried this early on and quickly reverted. The problem: inconsistent data quality. Origins were wrong, meanings were oversimplified, and gender classifications were outdated.
Instead, we add names in curated batches of 20-30, each manually verified for:
- Accurate origin(s) — many names have multiple cultural roots
- Nuanced meanings — not just dictionary definitions
- Current gender usage — some names have shifted over time
- Popularity scoring — based on recent data, not historical
Data Structure Evolution
Our initial schema was flat:
{ name: "Sage", gender: "unisex", origin: "latin", meaning: "wise" }
At 2,000+ names, we needed more structure:
{
name: "Sage",
gender: "unisex",
origin: ["latin"],
meaning: "Wise",
popularity: 4,
length: "short",
style: ["nature", "modern"]
}
The style array was the biggest improvement — it powers our thematic browsing. Parents can find nature names, vintage names, or literary names without us maintaining separate lists.
Performance at Scale
With 2,100 names, we still use a single JSON file loaded at build time. Next.js static generation means zero runtime database queries:
// Build time: generate all 2100+ name pages
export async function generateStaticParams() {
return names.map(n => ({ slug: n.name.toLowerCase() }));
}
Each name gets its own statically generated page, which is great for SEO. Google has indexed over 2,800 pages on babynamepick.com — individual names, letter pages, category pages, and blog posts.
What's Next
We're targeting 3,000 names by mid-2026, with a focus on underrepresented cultures. Our African names, Arabic names, and Korean names sections are growing fastest.
The key lesson: grow deliberately. Every name added should make the database more useful, not just bigger.
Top comments (0)