Multi-agent AI that generates personalized learning paths for digital careers.
Solara Skill Builder uses a team of specialized AI agents powered by Google's Gemini models to create customized, structured learning paths based on your goals, experience, and available time.
- Personalized Learning Paths — Tailored to your target role, timeframe, and weekly availability
- Multi-Agent Architecture — Four specialized agents collaborate to build your curriculum:
- 🗺️ Planner Agent — Breaks down your goal into competency blocks with dependencies
- 🔍 Resource Researcher Agent — Uses Tavily web search to find real, verified learning resources
- 📚 Curriculum Synthesizer Agent — Assembles a week-by-week or modular learning path
- ✅ Evaluation Module — Scores and critiques the path for quality assurance
- Real Web Search — Resources are grounded in actual URLs via Tavily API, not hallucinated links
- URL Validation — Automatic detection of invalid or placeholder URLs with quality penalties
- Automatic Refinement — If the evaluation score is below 0.8, the path is automatically refined
- Regenerate Resources — Keep your competency plan and regenerate just the resources and curriculum
- Export to JSON — Download your learning path for use in other tools or notebooks
The app provides a clean Streamlit interface where you:
- Enter your learner profile (target role, timeframe, hours/week, prior experience)
- Generate a structured learning path with modules, resources, and practice tasks
- View evaluation scores and comments for transparency
- Python 3.10+
- A Google AI Studio API key for Gemini
- A Tavily API key for web search
-
Clone the repository:
git clone https://github.com/therightjon/Solara-Labs-Skill-Builder.git cd Solara-Labs-Skill-Builder -
Create a virtual environment (recommended):
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Configure your API keys:
Create a
.envfile in the project root:GEMINI_API_KEY=your_gemini_api_key_here TAVILY_API_KEY=your_tavily_api_key_here
streamlit run streamlit_app.pyThe app will open in your browser. Fill in your learner profile and click "Generate Learning Path".
python agents.pyThis runs a sanity check with a sample learner profile and prints the JSON result.
Solara-Labs-Skill-Builder/
├── streamlit_app.py # Streamlit frontend — UI and display logic
├── agents.py # Multi-agent backend — all agent logic and orchestration
├── requirements.txt # Python dependencies
├── .env # Environment variables (GEMINI_API_KEY) — not committed
├── .github/
│ └── copilot-instructions.md # AI coding agent instructions
└── README.md # This file
┌─────────────────────────────────────────────────────────────────────┐
│ generate_learning_path() │
│ (Orchestrator) │
└─────────────────────────────────────────────────────────────────────┘
│
┌─────────────────────────┼─────────────────────────┐
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ Planner Agent │───▶│ Resource Researcher │───▶│ Curriculum Synth. │
│ │ │ Agent │ │ Agent │
└─────────────────┘ │ + Tavily Search │ └─────────────────────┘
│ + URL Validation │ │
└─────────────────────┘ ▼
┌─────────────────────┐
│ Evaluation Module │
│ + URL Penalty │
└─────────────────────┘
│
(if score < 0.8) │
▼
┌─────────────────────┐
│ Refinement Step │
└─────────────────────┘
All agents use the centralized call_llm() function which:
- Wraps Google's Gemini API (
gemini-2.5-flash) - Enforces JSON output via
response_mime_type="application/json" - Handles parsing and error recovery
| Environment Variable | Description | Required |
|---|---|---|
GEMINI_API_KEY |
Your Google AI Studio API key | Yes |
TAVILY_API_KEY |
Your Tavily API key for web search | Yes |
streamlit— Web UI frameworkgoogle-genai— Google Generative AI SDK for Geminipython-dotenv— Environment variable managementtavily-python— Web search API for grounding resources in real URLs
Install all dependencies:
pip install -r requirements.txtContributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the Apache License 2.0 — see the LICENSE file for details.
- Built with Streamlit
- Powered by Google Gemini
- Web search by Tavily
- Inspired by the need for accessible, personalized tech education