An open API service indexing awesome lists of open source software.

https://github.com/sehoon787/autopolio

Turn your GitHub into a professional portfolio โ€” AI-powered resume generator with 200+ tech detection, multi-LLM support, and DOCX/PDF/MD export
https://github.com/sehoon787/autopolio

ai-resume career-automation developer-tools docx-generator electron fastapi github-analysis github-portfolio job-search llm open-source pdf-generator portfolio portfolio-generator python react resume-automation resume-builder tech-stack-detection typescript

Last synced: 5 days ago
JSON representation

Turn your GitHub into a professional portfolio โ€” AI-powered resume generator with 200+ tech detection, multi-LLM support, and DOCX/PDF/MD export

Awesome Lists containing this project

README

          

# Autopolio

> Turn your GitHub into a professional portfolio โ€” powered by AI

[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![CI](https://github.com/sehoon787/autopolio/actions/workflows/ci.yml/badge.svg)](https://github.com/sehoon787/autopolio/actions/workflows/ci.yml)
[![Lint](https://github.com/sehoon787/autopolio/actions/workflows/lint.yml/badge.svg)](https://github.com/sehoon787/autopolio/actions/workflows/lint.yml)
[![Python](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
[![Node](https://img.shields.io/badge/node-18+-green.svg)](https://nodejs.org/)
[![Stars](https://img.shields.io/github/stars/sehoon787/autopolio?style=social)](https://github.com/sehoon787/autopolio)
[![Release](https://img.shields.io/github/v/release/sehoon787/autopolio)](https://github.com/sehoon787/autopolio/releases)

[๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด README](README_ko.md)

**Autopolio** is an open-source, AI-powered portfolio and resume automation platform. It analyzes your GitHub repositories, builds a structured career knowledge base, and generates tailored resumes for major job platforms โ€” all without manually writing every line.

---

## Screenshots

Dashboard
Dashboard & Career Timeline
Projects
Project Management

Platform Templates
Job Platform Templates
AI Settings
AI Provider Settings

Additional screenshots: [Document Generation](docs/screenshots/06-generate.png) ยท [Template Management](docs/screenshots/08-templates.png) ยท [GitHub Setup](docs/screenshots/07-github-setup.png)

---

## Why Autopolio

Most developers have rich GitHub histories but blank resume pages. Writing a tailored resume for each job platform (Saramin, Remember, Jumpit) takes hours of repetitive effort. Autopolio closes that gap: connect your GitHub, define your career history once, and let the AI pipeline do the rest.

---

## Key Features

- **GitHub Repository Analysis** โ€” Parses commit history and auto-detects 200+ technologies across JavaScript, Python, Java, Kotlin, Dart, PHP, and more โ€” no LLM required for detection
- **Per-Contributor Breakdown** โ€” Isolates your commits from team repos; Conventional Commit parsing, work area detection, and code quality metrics
- **Career Knowledge Base** โ€” Structured management of companies, projects, achievements, certifications, education, and awards
- **Platform Resume Templates** โ€” Pre-built HTML templates for Saramin, Remember, and Jumpit; Mustache syntax for fully custom templates
- **Multi-LLM AI Summarization** โ€” OpenAI GPT-4, Anthropic Claude, and Google Gemini all supported; switchable per request
- **Multiple Export Formats** โ€” DOCX, PDF, and Markdown output from a single source
- **Electron Desktop App** โ€” Cross-platform installer for Windows (exe), macOS (dmg), and Linux (AppImage) with local CLI tool support
- **Internationalization** โ€” Full UI in Korean and English via react-i18next
- **CI/CD Pipeline** โ€” GitHub Actions with pytest, Playwright, ruff, tsc, Bandit security scanning, and Gemini Code Assist review

---

## How It Works

```
Step 1 โ€” GitHub Analysis Fetch commits and extract statistics (parallel)
Step 2 โ€” Code Extraction Detect code patterns and project architecture
Step 3 โ€” Tech Detection Auto-detect tech stack from dependency files (fast, no LLM)
Step 4 โ€” Achievement Detection Extract quantitative achievements from commit messages
Step 5 โ€” LLM Summarization Generate AI-powered project summaries (parallel)
Step 6 โ€” Template Mapping Map structured data to platform-specific template fields
Step 7 โ€” Document Generation Produce DOCX / PDF / Markdown output
```

---

## Quick Start

### Option A: Docker (recommended)

```bash
git clone https://github.com/sehoon787/autopolio.git
cd Autopolio

cp .env.example .env
# Edit .env โ€” set ENCRYPTION_KEY, GITHUB_CLIENT_ID/SECRET, and one LLM API key

docker-compose up -d
```

Open `http://localhost:3035` in your browser.

### Option B: Dev script

```bash
git clone https://github.com/sehoon787/autopolio.git
cd Autopolio
cp .env.example .env

# Windows
start-dev.bat

# Linux / macOS
./start-dev.sh
```

### Option C: Manual

```bash
# Backend
uv sync
uv run uvicorn api.main:app --reload --port 8085

# Frontend (separate terminal)
cd frontend
npm install
npm run dev
```

| Service | URL |
|---------|-----|
| Frontend | http://localhost:3035 |
| API Docs (Swagger) | http://localhost:8085/docs |
| API Docs (ReDoc) | http://localhost:8085/redoc |

> Ports are configured in `config/runtime.yaml`.

---

## Electron Desktop App

Run Autopolio as a standalone desktop application with built-in backend:

### Development

```bash
# 1. Start the backend
uv sync
uv run uvicorn api.main:app --reload --port 8085

# 2. Start Electron (separate terminal)
cd frontend
npm install
npm run electron:dev
```

### Build Installers

```bash
cd frontend

npm run electron:build:win # Windows exe (NSIS)
npm run electron:build:mac # macOS dmg
npm run electron:build:linux # Linux AppImage
```

> The desktop app auto-detects CLI tools (Claude Code, Gemini CLI) and manages API keys locally.

---

## Testing

```bash
# Full suite: Docker โ†’ pytest โ†’ Playwright
tests/scripts/run-all.sh # Linux / macOS
tests/scripts/run-all.bat # Windows

# API tests only
tests/scripts/run-api-tests.sh

# E2E tests only
tests/scripts/run-e2e-tests.sh
```

### Seed Data

Populate a local environment with realistic sample data:

```bash
python tests/seed_sample_data.py # Insert sample data
python tests/seed_sample_data.py --clean # Wipe first, then insert
python tests/seed_sample_data.py --create-user # Create user + insert
```

Inserts 3 companies, 6 projects, 2 education records, 4 training records, 3 certifications, 2 awards, 3 publications, 2 patents, and 2 activities.

---

## Tech Stack

| Layer | Technologies |
|-------|-------------|
| Backend | FastAPI, SQLAlchemy, SQLite |
| Frontend | React 19, TypeScript, Vite, Tailwind CSS, Shadcn/ui |
| Desktop | Electron, electron-builder, electron-serve |
| State Management | Zustand, TanStack Query |
| Internationalization | react-i18next, i18next |
| LLM | OpenAI GPT-4 / Anthropic Claude / Google Gemini |
| Document Generation | python-docx, reportlab, chevron (Mustache) |
| Package Managers | uv (Python), npm (Frontend) |
| CI/CD | GitHub Actions + Gemini Code Assist |
| Testing | pytest, Playwright |

---

## Project Structure

```
Autopolio/
โ”œโ”€โ”€ api/ # FastAPI backend
โ”‚ โ”œโ”€โ”€ constants/ # Centralized enums and config constants
โ”‚ โ”œโ”€โ”€ models/ # SQLAlchemy ORM models
โ”‚ โ”œโ”€โ”€ schemas/ # Pydantic request/response schemas
โ”‚ โ”œโ”€โ”€ routers/ # API route handlers (modularized)
โ”‚ โ””โ”€โ”€ services/ # Business logic (modularized)
โ”œโ”€โ”€ frontend/ # React frontend + Electron
โ”‚ โ”œโ”€โ”€ electron/ # Electron main process and services
โ”‚ โ””โ”€โ”€ src/
โ”‚ โ”œโ”€โ”€ api/ # API client functions
โ”‚ โ”œโ”€โ”€ components/ # Reusable UI components
โ”‚ โ”œโ”€โ”€ locales/ # i18n translation files (ko, en)
โ”‚ โ”œโ”€โ”€ pages/ # Page components
โ”‚ โ””โ”€โ”€ stores/ # Zustand state stores
โ”œโ”€โ”€ .github/workflows/ # CI/CD pipeline definitions
โ”œโ”€โ”€ tests/ # Test scripts and E2E tests
โ”œโ”€โ”€ config/ # YAML configuration files
โ”œโ”€โ”€ data/ # SQLite database and platform HTML templates
โ”œโ”€โ”€ docs/ # Project documentation and screenshots
โ”œโ”€โ”€ result/ # Generated output documents
โ”œโ”€โ”€ pyproject.toml # Python dependencies (uv)
โ””โ”€โ”€ docker-compose.yml
```

---

## Key API Endpoints

| Method | Path | Description |
|--------|------|-------------|
| `POST` | `/api/users` | Create a user |
| `GET` | `/api/github/repos` | List connected repositories |
| `POST` | `/api/github/analyze` | Start repository analysis |
| `GET` | `/api/github/contributor-analysis/{id}` | Per-user detailed analysis |
| `GET` | `/api/knowledge/projects` | List projects |
| `GET` | `/api/platforms` | List platform resume templates |
| `POST` | `/api/platforms/{id}/render` | Render a template with user data |
| `POST` | `/api/pipeline/run` | Run the full generation pipeline |
| `GET` | `/api/documents` | List generated documents |

Full interactive documentation is at `http://localhost:8085/docs` when the server is running.

---

## Environment Variables

| Variable | Description | Required |
|----------|-------------|----------|
| `ENCRYPTION_KEY` | Fernet encryption key for stored tokens | Yes |
| `LLM_PROVIDER` | Default LLM provider (`openai` / `anthropic` / `gemini`) | Yes |
| `OPENAI_API_KEY` | OpenAI API key | One of the three |
| `ANTHROPIC_API_KEY` | Anthropic API key | One of the three |
| `GEMINI_API_KEY` | Google Gemini API key | One of the three |
| `GITHUB_CLIENT_ID` | GitHub OAuth App client ID | Yes |
| `GITHUB_CLIENT_SECRET` | GitHub OAuth App client secret | Yes |
| `DATABASE_URL` | SQLite database path (default: `data/autopolio.db`) | No |

---

## Contributing

Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines on reporting bugs, proposing features, and submitting pull requests.

This project follows the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md).

## License

Apache License 2.0 โ€” see the [LICENSE](LICENSE) file for details.