Inspiration

As parents navigate the overwhelming process of choosing where to raise a family, they're often left comparing spreadsheets, scrolling through Reddit threads, and guessing which neighborhoods will actually fit their child's needs — and their budget. We wanted to build a tool that cuts through the noise and gives families a clear, personalized picture of how a neighborhood stacks up for their specific situation: their budget, their child's age, and what they actually care about.

What it does

Child-Growth.com calculates a personalized Child Development Score (0–100) for five Fairfax County neighborhoods based on your family's priorities. You enter your housing budget, your child's age group (newborn, toddler, or child), and how much you care about Education, Social Development, Safety, and Infrastructure. The app then scores each neighborhood, displays them on an interactive map with color-coded markers, and uses AI (Claude) to generate a plain-English explanation of why a neighborhood did or didn't fit your family's needs.

How we built it

  • Frontend: React 18 + Vite, with React Leaflet for the interactive map
  • Backend: Node.js + Express as a secure API proxy
  • AI: Anthropic's Claude Haiku (via the Anthropic SDK) for generating personalized neighborhood explanations
  • Scoring algorithm: A custom weighted composite score that normalizes user-defined priorities, applies age-group modifiers (e.g., daycare density matters more for toddlers than teenagers), and computes a final 0–100 score per neighborhood
  • Data: Manually researched real-world metrics for five Fairfax County ZIP codes — school ratings, crime stats, walkability scores, average home prices and rents ## Challenges we ran into
    • Leaflet + Vite icon paths: Leaflet's default marker icons break under Vite's bundler. We had to manually reroute icon URLs to a CDN and implement a custom grayscale div-icon for over-budget neighborhoods.
  • Weight normalization edge cases: If a user zeroes out all four priority sliders, the scoring algorithm would divide by zero. We added a fallback to equal weights.
  • AI request race conditions: Quickly clicking between neighborhoods fired multiple Claude API calls simultaneously. We used AbortController to cancel stale in-flight requests.
  • API key security: The Anthropic key can never touch the browser. We routed all AI calls through our Express backend proxy, with Vite's dev proxy bridging the gap in development.

Accomplishments that we're proud of

  • Building a fully functional, end-to-end app in a single hackathon session — from data modeling to scoring algorithm to AI integration to map UI
    • The age-group modifier system, which dynamically reweights priorities (e.g., safety and daycare access matter more for newborns; school ratings dominate for older kids) in a mathematically sound way that re-normalizes cleanly
    • Keeping the API key genuinely secure with a proper server-side proxy pattern, not just obscured in frontend code
    • A clean, responsive two-column UI that works on mobile without any framework like Tailwind ## What we learned
    • Integrating AI explanations into a data-driven tool is surprisingly powerful — it transforms a number into a narrative a parent can actually act on
    • Real-world neighborhood data is messy and subjective; encoding it into a fair scoring model requires careful normalization decisions
    • React Leaflet has sharp edges with modern bundlers, but the result is worth the wrestling
    • Designing for edge cases (zero-priority sliders, all-neighborhoods-over-budget, aborted fetches) is what separates a demo from something reliable

What's next for Child-Growth.com

  • Expanding beyond Fairfax County to all major U.S. metros, with live data pulls from public APIs (school ratings, crime databases, census data)
    • Letting users save and compare multiple neighborhood profiles side-by-side
    • Adding a "life stage timeline" — score a neighborhood across multiple age bands to see if it grows with your family
    • Crowdsourced parent reviews layered on top of the objective scores
    • A shareable link so co-parents or family members can review the same comparison
Share this project:

Updates