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
- Host: GitHub
- URL: https://github.com/sehoon787/autopolio
- Owner: sehoon787
- License: apache-2.0
- Created: 2026-01-19T10:50:54.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-03-23T10:57:30.000Z (17 days ago)
- Last Synced: 2026-03-23T20:25:55.024Z (16 days ago)
- Topics: 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
- Language: Python
- Homepage: https://sehoon787.github.io/autopolio/
- Size: 5.68 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
- Roadmap: docs/ROADMAP.md
Awesome Lists containing this project
README
# Autopolio
> Turn your GitHub into a professional portfolio โ powered by AI
[](https://opensource.org/licenses/Apache-2.0)
[](https://github.com/sehoon787/autopolio/actions/workflows/ci.yml)
[](https://github.com/sehoon787/autopolio/actions/workflows/lint.yml)
[](https://www.python.org/downloads/)
[](https://nodejs.org/)
[](https://github.com/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 & Career Timeline

Project Management

Job Platform Templates

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.