Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Roadmap Gen

Generates personalized growth roadmaps (sports, creative, academics, tech, business, research) as structured graph JSON.

1771688820683566.1.mp4

Stack

  • Python 3.13 / FastAPI / Uvicorn
  • LangGraph + LangChain (init_chat_model — provider-agnostic)
  • Pydantic v2 / pydantic-settings

Quick start

# 1. Configure environment
cp .env.example .env          # then fill in your API key
# or export directly:
export LLM_API_KEY="AIza..."
export LLM_PROVIDER="google_genai"  # optional, default: google_genai
export LLM_MODEL="gemini-2.0-flash"  # optional, default: gemini-2.0-flash

# 2. Install dependencies
uv sync

# 3. Run the server
uv run uvicorn app.main:app --host 0.0.0.0 --port 8000

API

Health check

GET /health

Generate roadmap

POST /v1/roadmaps
Content-Type: application/json

{
  "profile": {
    "domain": "tech",
    "goal": "become a backend engineer",
    "current_level": "beginner",
    "skills": ["python"],
    "experience_years": 1,
    "timeline_months": 6,
    "daily_hours": 3,
    "age": 25,
    "location": "remote",
    "constraints": ["no paid courses"],
    "resources_access": ["laptop", "internet"],
    "preferences": {"language": "python"}
  }
}

Example curl

curl -s -X POST http://localhost:8000/v1/roadmaps \
  -H "Content-Type: application/json" \
  -d '{
    "profile": {
      "domain": "tech",
      "goal": "become a backend engineer",
      "current_level": "beginner",
      "skills": ["python"],
      "timeline_months": 6
    }
  }' | python -m json.tool

Configuration

Variable Default Description
LLM_API_KEY (required) API key for the LLM provider
LLM_PROVIDER google_genai LangChain model provider
LLM_MODEL gemini-2.0-flash Model name
LLM_TEMPERATURE 0.3 Sampling temperature
REQUEST_TIMEOUT_SECONDS 120 Max seconds per request
LOG_LEVEL INFO Python logging level

Supported domains

sports · creative · academics · tech · business · research

Adding a new domain

  1. Create app/engine/planners/my_domain.py extending BasePlanner.
  2. Add a prompt entry in app/engine/prompts.pyDOMAIN_GUIDANCE.
  3. Register it in app/engine/domain_router.py_REGISTRY.

About

Generates personalized growth roadmaps

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages