Aradhana is an agentic AI astrologer built as a spiritual companion. It computes real birth charts using an ephemeris, fetches daily transits, and answers astrological questions with a warm, caring persona.
- Backend: FastAPI with LangGraph.
- Stateful Graph: Manages messages, birth data, and conversation intent.
- Agent: Uses
gemma-4-26b-a4b-it(optimized for performance/quota) for reasoning and tool calling. - Tools:
compute_birth_chart: Accurate planetary math usingkerykeion.get_daily_transits: Relates current planet positions to natal chart.geocode_place: Converts locations to lat/lng/timezone for accurate math.knowledge_lookup: RAG-based lookup of astrological reference notes.
- Frontend: React + TypeScript (Vite).
- Streaming responses (token-by-token).
- Real-time tool activity indicators.
- Validated birth data collection.
graph TD
START((START)) --> Router[Router Node]
Router --> Chatbot[Chatbot Node]
Chatbot -- "Tool Call" --> Tools[Tool Node]
Tools -- "Observation" --> Chatbot
Chatbot -- "Final Response" --> END((END))
subgraph "State Management"
A[messages]
B[birth_data]
C[intent]
end
- Create virtual env:
python -m venv astro-env - Activate:
source astro-env/bin/activate - Install deps:
pip install -r backend/requirements.txt(or ensurelanggraph,fastapi,langchain-google-genai,kerykeion,geopy,timezonefinderare installed) - Set
.env: Createbackend/.envwithGOOGLE_API_KEY. - Run:
cd backend && python main.py
cd frontendnpm installnpm run dev
Run the scorecard harness:
export PYTHONPATH=$PYTHONPATH:$(pwd)/backend
source astro-env/bin/activate
python evaluation/run_eval.py- Knowledge base is currently limited to core concepts.
gemmamodel was used to bypassgemini-1.5-flashquota issues during development.- Geocoding uses Nominatim (OpenStreetMap) which may have rate limits for heavy use.