# google-gemini/crewai-quickstart architecture

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

- Interactive diagram: https://gitdiagram.com/google-gemini/crewai-quickstart
- Repository: https://github.com/google-gemini/crewai-quickstart

## Overview

GitHub Resume Generator accepts a GitHub username, researches the profile and its projects, and generates a Markdown resume with a CrewAI agent workflow using Gemini and Google Search grounding. The web path streams task progress and the final resume to a static frontend; the CLI path saves Markdown and task output locally. The graph follows README-described capabilities and sampled entry points; frontend behavior and detailed agent/task configuration are represented only at the level supported by the README and file tree.

Main entry points: [`src/github_resume_generator/crew.py`](https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/crew.py) (Crew orchestrator), [`src/github_resume_generator/main.py`](https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/main.py) (CLI entry point), [`src/api/service.py`](https://github.com/google-gemini/crewai-quickstart/blob/main/src/api/service.py) (Streaming API), [`src/github_resume_generator/config/agents.yaml`](https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/config/agents.yaml) (Profile researcher)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Resume workflow"]
  node_profile_task["Profile research task<br/>[tasks.yaml]"]
  node_project_research["Project research<br/>[tasks.yaml]"]
  node_resume_task["Resume generation task<br/>[tasks.yaml]"]
  node_resume["Markdown resume"]
end

subgraph group_serving["Web and CLI access"]
  node_web["Resume web page<br/>[index.html]"]
  node_api["Streaming API<br/>[service.py]"]
  node_cli["CLI entry point<br/>[main.py]"]
  node_stream["Progress and resume stream"]
  node_task_output["Task output JSON"]
end

subgraph group_ai["AI research and writing"]
  node_crew["Crew orchestrator<br/>[crew.py]"]
  node_researcher["Profile researcher<br/>[agents.yaml]"]
  node_writer["Resume writer<br/>[agents.yaml]"]
  node_gemini_search["Gemini search LLM<br/>[crew.py]"]
end

node_user(("GitHub username"))
node_gemini{{"Gemini API"}}
node_github{{"GitHub profile"}}
node_google_search{{"Google Search grounding"}}

node_user -->|"enters username"| node_web
node_web -->|"requests resume"| node_api
node_api -->|"starts async crew"| node_crew
node_crew -->|"runs sequentially"| node_profile_task
node_profile_task -->|"assigned to"| node_researcher
node_researcher -.->|"researches profile"| node_github
node_researcher -->|"uses LLM"| node_gemini_search
node_gemini_search -->|"calls"| node_gemini
node_gemini -.->|"grounds research"| node_google_search
node_crew -->|"researches projects"| node_project_research
node_crew -->|"runs sequentially"| node_resume_task
node_resume_task -->|"assigned to"| node_writer
node_writer -->|"generates resume"| node_gemini
node_crew -->|"reports task updates"| node_api
node_api -->|"streams progress and result"| node_stream
node_stream -->|"renders updates"| node_web
node_crew -->|"returns Markdown"| node_resume
node_user -->|"provides username"| node_cli
node_cli -->|"starts crew"| node_crew
node_cli -->|"writes Markdown"| node_resume
node_cli -->|"writes task results"| node_task_output

click node_web "https://github.com/google-gemini/crewai-quickstart/blob/main/src/static/index.html"
click node_api "https://github.com/google-gemini/crewai-quickstart/blob/main/src/api/service.py"
click node_cli "https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/main.py"
click node_crew "https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/crew.py"
click node_profile_task "https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/config/tasks.yaml"
click node_project_research "https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/config/tasks.yaml"
click node_resume_task "https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/config/tasks.yaml"
click node_researcher "https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/config/agents.yaml"
click node_writer "https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/config/agents.yaml"
click node_gemini_search "https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/crew.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_profile_task,node_project_research,node_resume_task,node_resume,node_user toneBlue
class node_web,node_api,node_cli,node_stream,node_task_output toneAmber
class node_crew,node_researcher,node_writer,node_gemini_search,node_gemini toneMint
class node_github,node_google_search toneIndigo
```

## Components

### Resume workflow

- [Profile research task](https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/config/tasks.yaml): `src/github_resume_generator/config/tasks.yaml`
- [Project research](https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/config/tasks.yaml): `src/github_resume_generator/config/tasks.yaml`
- [Resume generation task](https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/config/tasks.yaml): `src/github_resume_generator/config/tasks.yaml`
- **Markdown resume**

### Web and CLI access

- [Resume web page](https://github.com/google-gemini/crewai-quickstart/blob/main/src/static/index.html): `src/static/index.html`
- [Streaming API](https://github.com/google-gemini/crewai-quickstart/blob/main/src/api/service.py): `src/api/service.py`
- [CLI entry point](https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/main.py): `src/github_resume_generator/main.py`
- **Progress and resume stream**
- **Task output JSON**

### AI research and writing

- [Crew orchestrator](https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/crew.py): `src/github_resume_generator/crew.py`
- [Profile researcher](https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/config/agents.yaml): `src/github_resume_generator/config/agents.yaml`
- [Resume writer](https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/config/agents.yaml): `src/github_resume_generator/config/agents.yaml`
- [Gemini search LLM](https://github.com/google-gemini/crewai-quickstart/blob/main/src/github_resume_generator/crew.py): `src/github_resume_generator/crew.py`

### Other components

- **GitHub username**
- **Gemini API**
- **GitHub profile**
- **Google Search grounding**

## Connections

- GitHub username → Resume web page: enters username
- Resume web page → Streaming API: requests resume
- Streaming API → Crew orchestrator: starts async crew
- Crew orchestrator → Profile research task: runs sequentially
- Profile research task → Profile researcher: assigned to
- Profile researcher → GitHub profile: researches profile
- Profile researcher → Gemini search LLM: uses LLM
- Gemini search LLM → Gemini API: calls
- Gemini API → Google Search grounding: grounds research
- Crew orchestrator → Project research: researches projects
- Crew orchestrator → Resume generation task: runs sequentially
- Resume generation task → Resume writer: assigned to
- Resume writer → Gemini API: generates resume
- Crew orchestrator → Streaming API: reports task updates
- Streaming API → Progress and resume stream: streams progress and result
- Progress and resume stream → Resume web page: renders updates
- Crew orchestrator → Markdown resume: returns Markdown
- GitHub username → CLI entry point: provides username
- CLI entry point → Crew orchestrator: starts crew
- CLI entry point → Markdown resume: writes Markdown
- CLI entry point → Task output JSON: writes task results
