DEV Community

deepak rai
deepak rai

Posted on

How I Built a Free Vedic Kundli Generator with AI: Lessons from Bhagya.ai

How I Built a Free Vedic Kundli Generator with AI

Building an astrology platform that actually works—and stays free—for millions of Indian users was one of the most technically interesting projects I've tackled. Here's what I learned building Bhagya.ai, a fully free AI-powered Vedic astrology platform.

The Problem

Most Kundli tools online are:

  • Paywalled or require mandatory sign-up
  • Using outdated planetary calculation engines
  • Not mobile-optimized for Indian users
  • English-only (ignoring 500M Hindi speakers)

What We Built

Bhagya.ai solves all of this:

  1. Free Kundli by Date of Birth — D1, D9, D10 charts using Swiss Ephemeris for accuracy
  2. Kundli Milan / 36 Guna Matching — Full Ashtakoot compatibility for marriage
  3. Dasha Calculator — Vimshottari Dasha periods with sub-dasha breakdowns
  4. Daily Rashifal — All 12 signs in Hindi + English
  5. AI Astrology Chat — Ask anything, get Vedic-grounded answers

Tech Stack

  • Ephemeris: Swiss Ephemeris via pyswisseph for planetary positions
  • Backend: Python + FastAPI
  • Frontend: Next.js with SSR for SEO
  • AI Layer: LLM fine-tuned on Vedic Jyotish texts for interpretation
  • Charts: D3.js for Kundli visualization

Key Technical Challenges

1. Ayanamsa precision — Choosing between Lahiri, Raman, and KP systems affects all chart calculations. We use Lahiri (Indian national standard) by default.

2. Multi-language support — Building a bilingual platform where /hi/ routes serve identical structured data but localized content required careful hreflang implementation.

3. Crawl budget optimization — With 45+ pages and DR=0 as a new site, getting Googlebot to crawl everything required sitemap optimization and strong internal linking.

SEO Learnings

  • Structured data (Schema.org) for astrology tools significantly improves rich results
  • Breadcrumb schema helps Google understand site hierarchy
  • Hindi-language pages need separate canonical + hreflang pairs

Try It

Happy to answer technical questions in the comments!

Top comments (0)