# kunalkrishna/skillbridge-ai architecture

> Architecture diagram of the GitHub repository kunalkrishna/skillbridge-ai, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/kunalkrishna/skillbridge-ai
- Repository: https://github.com/kunalkrishna/skillbridge-ai
- Video tour (about a minute): https://gitdiagram.com/kunalkrishna/skillbridge-ai/video

## Overview

SkillBridge is a Streamlit career-and-learning intelligence app. A user submits a GitHub profile and career goal; the CrewAI workflow analyzes repositories, estimates role demand, finds matching NCCU courses, synthesizes skill gaps, and produces a six-month roadmap for student and recruiter views. Source confirms the GitHub API and local catalog lookup; job-market skills are mocked by role. Agent execution and task ordering are configured through CrewAI, so details beyond the declared task contexts are not inferred.

Main entry points: [`crew_orchestrator.py`](https://github.com/kunalkrishna/skillbridge-ai/blob/main/crew_orchestrator.py) (Crew Orchestrator), [`app.py`](https://github.com/kunalkrishna/skillbridge-ai/blob/main/app.py) (Streamlit Dashboard), [`agents.py`](https://github.com/kunalkrishna/skillbridge-ai/blob/main/agents.py) (Gap Analyst), [`tasks.py`](https://github.com/kunalkrishna/skillbridge-ai/blob/main/tasks.py) (GitHub Analysis)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["User Interface"]
  node_app["Streamlit Dashboard<br/>[app.py]"]
  node_student_view["Student Results<br/>[app.py]"]
  node_recruiter_view["Recruiter Results<br/>[app.py]"]
end

subgraph group_workflow["Workflow Orchestration"]
  node_orchestrator["Crew Orchestrator"]
  node_github_task["GitHub Analysis<br/>[tasks.py]"]
  node_market_task["Market Search<br/>[tasks.py]"]
  node_courses_task["Course Discovery<br/>[tasks.py]"]
  node_gaps_task["Gap Synthesis<br/>[tasks.py]"]
  node_roadmap_task["Roadmap Generation<br/>[tasks.py]"]
end

subgraph group_analysis["Career Analysis"]
  node_github_agent["GitHub Analyst<br/>[agents.py]"]
  node_market_agent["Market Analyst<br/>[agents.py]"]
  node_course_agent["Course Advisor<br/>[agents.py]"]
  node_synthesis_agent["Gap Analyst<br/>[agents.py]"]
  node_roadmap_agent["Roadmap Architect<br/>[agents.py]"]
end

subgraph group_sources["Data Sources"]
  node_github_tool["GitHub Analyzer Tool<br/>[tools.py]"]
  node_market_tool["Mock Market Search<br/>[tools.py]"]
  node_catalog_tool["Catalog Search Tool<br/>[tools.py]"]
  node_catalog[("NCCU Course Catalog<br/>[nccu_catalog.json]")]
end

node_user(("Applicant"))
node_github_api["GitHub API"]

node_user -->|"enters inputs"| node_app
node_app -->|"runs analysis"| node_orchestrator
node_orchestrator -->|"executes crew"| node_github_task
node_orchestrator -->|"executes crew"| node_market_task
node_orchestrator -->|"executes crew"| node_courses_task
node_orchestrator -->|"executes crew"| node_gaps_task
node_orchestrator -->|"executes crew"| node_roadmap_task
node_github_task -->|"assigned to"| node_github_agent
node_market_task -->|"assigned to"| node_market_agent
node_courses_task -->|"assigned to"| node_course_agent
node_gaps_task -->|"assigned to"| node_synthesis_agent
node_roadmap_task -->|"assigned to"| node_roadmap_agent
node_synthesis_agent -->|"uses context"| node_github_task
node_synthesis_agent -->|"uses context"| node_market_task
node_roadmap_agent -->|"uses context"| node_gaps_task
node_roadmap_agent -->|"uses context"| node_courses_task
node_github_agent -->|"uses tool"| node_github_tool
node_market_agent -->|"uses tool"| node_market_tool
node_course_agent -->|"uses tool"| node_catalog_tool
node_github_tool -->|"fetches repositories"| node_github_api
node_catalog_tool -->|"reads catalog"| node_catalog
node_orchestrator -->|"returns results"| node_app
node_app -->|"renders"| node_student_view
node_app -->|"renders"| node_recruiter_view

click node_app "https://github.com/kunalkrishna/skillbridge-ai/blob/main/app.py"
click node_orchestrator "https://github.com/kunalkrishna/skillbridge-ai/blob/main/crew_orchestrator.py"
click node_github_task "https://github.com/kunalkrishna/skillbridge-ai/blob/main/tasks.py"
click node_market_task "https://github.com/kunalkrishna/skillbridge-ai/blob/main/tasks.py"
click node_courses_task "https://github.com/kunalkrishna/skillbridge-ai/blob/main/tasks.py"
click node_gaps_task "https://github.com/kunalkrishna/skillbridge-ai/blob/main/tasks.py"
click node_roadmap_task "https://github.com/kunalkrishna/skillbridge-ai/blob/main/tasks.py"
click node_github_agent "https://github.com/kunalkrishna/skillbridge-ai/blob/main/agents.py"
click node_market_agent "https://github.com/kunalkrishna/skillbridge-ai/blob/main/agents.py"
click node_course_agent "https://github.com/kunalkrishna/skillbridge-ai/blob/main/agents.py"
click node_synthesis_agent "https://github.com/kunalkrishna/skillbridge-ai/blob/main/agents.py"
click node_roadmap_agent "https://github.com/kunalkrishna/skillbridge-ai/blob/main/agents.py"
click node_github_tool "https://github.com/kunalkrishna/skillbridge-ai/blob/main/tools.py"
click node_market_tool "https://github.com/kunalkrishna/skillbridge-ai/blob/main/tools.py"
click node_catalog_tool "https://github.com/kunalkrishna/skillbridge-ai/blob/main/tools.py"
click node_catalog "https://github.com/kunalkrishna/skillbridge-ai/blob/main/data/nccu_catalog.json"
click node_student_view "https://github.com/kunalkrishna/skillbridge-ai/blob/main/app.py"
click node_recruiter_view "https://github.com/kunalkrishna/skillbridge-ai/blob/main/app.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_app,node_student_view,node_recruiter_view toneBlue
class node_orchestrator,node_github_task,node_market_task,node_courses_task,node_gaps_task,node_roadmap_task toneAmber
class node_github_agent,node_market_agent,node_course_agent,node_synthesis_agent,node_roadmap_agent,node_github_api toneMint
class node_github_tool,node_market_tool,node_catalog_tool,node_catalog toneRose
class node_user toneIndigo
```

## Components

### User Interface

- [Streamlit Dashboard](https://github.com/kunalkrishna/skillbridge-ai/blob/main/app.py): `app.py`
- [Student Results](https://github.com/kunalkrishna/skillbridge-ai/blob/main/app.py): `app.py`
- [Recruiter Results](https://github.com/kunalkrishna/skillbridge-ai/blob/main/app.py): `app.py`

### Workflow Orchestration

- [Crew Orchestrator](https://github.com/kunalkrishna/skillbridge-ai/blob/main/crew_orchestrator.py): `crew_orchestrator.py`
- [GitHub Analysis](https://github.com/kunalkrishna/skillbridge-ai/blob/main/tasks.py): `tasks.py`
- [Market Search](https://github.com/kunalkrishna/skillbridge-ai/blob/main/tasks.py): `tasks.py`
- [Course Discovery](https://github.com/kunalkrishna/skillbridge-ai/blob/main/tasks.py): `tasks.py`
- [Gap Synthesis](https://github.com/kunalkrishna/skillbridge-ai/blob/main/tasks.py): `tasks.py`
- [Roadmap Generation](https://github.com/kunalkrishna/skillbridge-ai/blob/main/tasks.py): `tasks.py`

### Career Analysis

- [GitHub Analyst](https://github.com/kunalkrishna/skillbridge-ai/blob/main/agents.py): `agents.py`
- [Market Analyst](https://github.com/kunalkrishna/skillbridge-ai/blob/main/agents.py): `agents.py`
- [Course Advisor](https://github.com/kunalkrishna/skillbridge-ai/blob/main/agents.py): `agents.py`
- [Gap Analyst](https://github.com/kunalkrishna/skillbridge-ai/blob/main/agents.py): `agents.py`
- [Roadmap Architect](https://github.com/kunalkrishna/skillbridge-ai/blob/main/agents.py): `agents.py`

### Data Sources

- [GitHub Analyzer Tool](https://github.com/kunalkrishna/skillbridge-ai/blob/main/tools.py): `tools.py`
- [Mock Market Search](https://github.com/kunalkrishna/skillbridge-ai/blob/main/tools.py): `tools.py`
- [Catalog Search Tool](https://github.com/kunalkrishna/skillbridge-ai/blob/main/tools.py): `tools.py`
- [NCCU Course Catalog](https://github.com/kunalkrishna/skillbridge-ai/blob/main/data/nccu_catalog.json): `data/nccu_catalog.json`

### Other components

- **Applicant**
- **GitHub API**

## Connections

- Applicant → Streamlit Dashboard: enters inputs
- Streamlit Dashboard → Crew Orchestrator: runs analysis
- Crew Orchestrator → GitHub Analysis: executes crew
- Crew Orchestrator → Market Search: executes crew
- Crew Orchestrator → Course Discovery: executes crew
- Crew Orchestrator → Gap Synthesis: executes crew
- Crew Orchestrator → Roadmap Generation: executes crew
- GitHub Analysis → GitHub Analyst: assigned to
- Market Search → Market Analyst: assigned to
- Course Discovery → Course Advisor: assigned to
- Gap Synthesis → Gap Analyst: assigned to
- Roadmap Generation → Roadmap Architect: assigned to
- Gap Analyst → GitHub Analysis: uses context
- Gap Analyst → Market Search: uses context
- Roadmap Architect → Gap Synthesis: uses context
- Roadmap Architect → Course Discovery: uses context
- GitHub Analyst → GitHub Analyzer Tool: uses tool
- Market Analyst → Mock Market Search: uses tool
- Course Advisor → Catalog Search Tool: uses tool
- GitHub Analyzer Tool → GitHub API: fetches repositories
- Catalog Search Tool → NCCU Course Catalog: reads catalog
- Crew Orchestrator → Streamlit Dashboard: returns results
- Streamlit Dashboard → Student Results: renders
- Streamlit Dashboard → Recruiter Results: renders
