This project was created for the Boot.dev 2025 Hackathon.
LIVE PREVIEW
View Live Application
A full-stack application that automatically generates professional resumes for you by scraping data from your Github, LeetCode, and Boot.dev profiles. This app uses AI to format and present your coding achievements, projects and skills in a polished resume format.
PresenceCV aggregates your programming accomplishments from multiple platforms:
- GitHub: Extracts repositories, contributions, languages used, and project details
- LeetCode: Gathers problem-solving statistics and achievements
- Boot.dev: Collects course completions and learning progress
The scraped data is then processed using AI to generate a professional formatted resume that highlights your technical skills, projects, and coding experience. Resumes are generated in both Word document format (.docx) and PDF format.
The PresenceCV workflow as follows:
- Data Collection: Enter your usernames for GitHub, LeetCode, and Boot.dev platforms
- Profile Scraping: The backend automatically scrapes your public profiles and repositories
- Data Analysis: AI analyzes your coding activity, evaluates project complexity, and identifies key skills demonstrated
- Content Generation: AI model create professional descriptions about your projects and experience
- Resume Formatting: The system formats everything into a polished resume with styling and structure
- Export Options: Download your resume in either PDF or DOCX format for immediate use
The entire process takes just a few seconds, transforming your online presence into a resume that you can showcase and show the world.
- FastAPI: Modern, fast web framework for building APIs
- Python 3.11+: Core backend language
- LiteLLM: AI model integration for resume generation
- python-docx: DOCX document generation
- ReportLab: PDF document generation
- Pydantic: Data validation and settings management
- aiohttp: Async HTTP client for web scraping
- Next.js 14: React framework with App Router
- TypeScript: Type-safe JavaScript
- Tailwind CSS: Utility-first CSS framework
- Bun: Fast JavaScript runtime and package manager
- OpenRouter: AI model routing and management
- Google Gemini: Primary AI model for content generation
- GitHub API: Repository and profile data extraction
- LeetCode API: Problem-solving statistics
- Boot.dev API: Learning progress tracking
- Python 3.11 or higher
- Node.js 18 or higher
- Bun (for frontend package management)
-
Navigate to the backend directory:
cd backend -
Install uv package manager:
pip install uv
-
Create virtual environment and install dependencies:
uv venv uv pip install . -
Create a
.envfile with your API keys:OPENROUTER_API_KEY=your_api_key_here OPENROUTER_MODEL=google/gemini-2.5-flash
Getting API Keys:
- Get OpenRouter API key: https://openrouter.ai/settings/keys
- For free usage, use integrations (BYOK): https://openrouter.ai/settings/integrations
- Recommended: Connect Google Gemini API key (free with high limits): https://aistudio.google.com/app/apikey
Model Selection:
You can use any AI model available through OpenRouter (provided you have credits or have linked an API key through BYOK). Simply change the
OPENROUTER_MODELvalue to your preferred model. Options include:google/gemini-2.5-proanthropic/claude-sonnet-4-20250514x-ai/grok-4moonshotai/kimi-k2
Browse all available models at: https://openrouter.ai/models
-
Start the development server:
uv run fastapi dev
The API will be available at http://127.0.0.1:8000 and http://127.0.0.1:8000/docs
-
Navigate to the frontend directory:
cd frontend -
If you don't have Bun installed, install it first:
npm install -g bun
-
Install dependencies:
bun install
-
Start the development server:
bun dev
The frontend will be available at http://localhost:3000
POST /api/v1/resume/generate- Generate resume from profile data
Request Body:
{
"github_user": "username",
"leetcode_user": "username",
"bootdev_user": "username",
"personal": {
"name": "Your Name",
"email": "email@example.com",
"phone": "123-456-7890",
"location": "City, State"
},
"format": "pdf", // or "docx"
"summarize": true
}- GitHub repository analysis and README parsing
- LeetCode problem-solving statistics
- Boot.dev course completion tracking
- Automatic skill categorization
- Project description generation
- AI-powered content summarization
- Professional formatting in DOCX and PDF
- Customizable personal information
- Rate limiting and caching
- Token usage tracking
- Async web scraping for performance
- TTL-based rate limiting
- Error handling and retry logic
- CORS configuration for frontend integration
- Environment-based configuration
PresenceCV/
├── backend/
│ ├── api/v1/endpoints/ # API route handlers
│ ├── core/ # Configuration and settings
│ ├── models/ # Pydantic data models
│ ├── services/ # Business logic and scrapers
│ └── main.py # FastAPI application entry
├── frontend/
│ ├── src/app/ # Next.js app directory
│ ├── src/components/ # React components
│ ├── src/services/ # API client functions
│ └── src/types/ # TypeScript type definitions
└── README.md
