📖 Project Story
💡 Inspiration
As a student at GGITS Jabalpur, I witnessed 5000+ students facing a critical problem every placement season: "Am I ready for that Software Intern role?"
Students would spend hours comparing their skills against job descriptions, unsure if their resumes showcased the right competencies. Many talented peers missed opportunities simply because they didn't know which skills to highlight or what gaps to fill. This uncertainty costs careers.
I asked myself: What if AI could analyze your entire academic journey in 15 seconds and tell you exactly where you stand?
That's when SkillMap AI was born — a tool that transforms resumes into actionable insights using Google's cutting-edge technology.
🎯 What It Does
SkillMap AI is your AI-powered career readiness coach that:
- 📄 Extracts skills, certifications, and education from PDF resumes
- 🧠 Analyzes your profile against target roles using Google Gemini 2.5 Flash
- 📊 Visualizes readiness scores with interactive Google Charts (gauge + donut charts)
- 🎯 Identifies skill gaps with personalized recommendations
Input: Upload your resume
Output: Live skill graph + 0-100 readiness score + actionable gaps ("Learn Docker", "Add CI/CD projects")
🛠️ How I Built It
Tech Stack
- Backend: Flask (Python 3.13) with RESTful API architecture
- AI Engine: Google Gemini 2.5 Flash API for intelligent skill analysis
- Visualization: Google Charts API (gauge + donut charts)
- OCR: PyPDF2 for text extraction from resumes
- Frontend: Vanilla JavaScript with drag-drop upload
Architecture
Key Implementation Steps
- PDF Processing: Built OCR service with PyPDF2 fallback (initially tried PaddleOCR but hit numpy compatibility issues with Python 3.13)
- Gemini Integration: Crafted optimized prompts with 4096 token output limit, implemented robust JSON parsing with regex for handling malformed responses
- Visualization: Integrated Google Charts with color-coded gauge (red/yellow/green/blue zones) and donut chart for skill distribution
- API Design: Created async job processing with unique job IDs to handle multiple concurrent analyses
🚧 Challenges I Faced
Challenge 1: Numpy Compatibility Crisis
Problem: PaddleOCR (my initial OCR choice) threw RuntimeError: module compiled against ABI version 0x1000009 but numpy is 0x2000000
Solution: Pivoted to PyPDF2 with graceful fallback handling. Learned the importance of dependency compatibility in production systems.
Challenge 2: Gemini API Model Naming
Problem: Got 404 errors with gemini-1.5-flash and gemini-pro models
Solution: Used curl to list available models via Google's API, discovered gemini-2.5-flash was the correct endpoint for v1beta
Challenge 3: Response Truncation
Problem: Gemini responses were cutting off mid-JSON, causing Unterminated string parsing errors
Solution: Increased maxOutputTokens from 2048→4096 and simplified prompts to be more concise. Added regex-based cleanup: re.sub(r',(\s*[}\]])', r'\1', json_str) to handle trailing commas
Challenge 4: API Key Security
Problem: Accidentally pushed app_config.py with exposed API key to GitHub
Solution: Completely rewrote git history using Remove-Item .git -Recurse -Force, created clean repository, added comprehensive .gitignore
Challenge 5: Mock Data Trap
Problem: System kept returning 75% score for all resumes (mock data instead of real analysis)
Solution: Updated prompt with explicit instruction: "IMPORTANT: Calculate actual score based on the resume. DO NOT use the example score of 85." This forced Gemini to perform real analysis
📚 What I Learned
Technical Skills
- Google Gemini API: Mastered prompt engineering, learned how token limits affect response quality, understood v1beta vs v1 API differences
- API Design Patterns: Implemented async job processing with polling endpoints instead of long-running requests
- Error Handling: Built resilient systems with fallback mechanisms (PyPDF2 fallback, mock analysis fallback)
- Security Best Practices: Git history rewriting, environment variable management, API key rotation
Hackathon Skills
- Rapid Prototyping: Built full-stack app in <48 hours from concept to deployment
- Problem Validation: Talked to 20+ GGITS students to validate the pain point before coding
- Google Technology Integration: Learned to leverage multiple Google APIs (Gemini + Charts) for maximum impact
Soft Skills
- Persistence: Hit 5+ critical bugs but debugged each with systematic logging and testing
- Documentation: Wrote comprehensive README and pitch deck for judges and users
- Time Management: Prioritized MVP features over nice-to-haves to meet hackathon deadline
🎓 What's Next for SkillMap AI
Immediate Enhancements (Post-Hackathon)
- Firebase Authentication: Multi-user support with profile history
- Google Analytics: Track which skills are most commonly lacking at GGITS
- ATS Optimization: Suggest resume formatting improvements for Applicant Tracking Systems
Long-Term Vision
- Multi-language support for regional language resumes
- Job marketplace integration (Naukri, LinkedIn) for instant application readiness checks
- Campus partnerships with 100+ colleges across India
- AI-powered skill roadmaps with course recommendations (Coursera, Udemy)
Business Model
- Freemium: 3 free analyses/month, unlimited for ₹99/month
- B2B SaaS: Sell to college placement cells at ₹50,000/year
- Affiliate revenue: Earn commissions from recommended courses
🙏 Acknowledgments
- Google Gemini Team: For the incredible 2.5 Flash model that powers intelligent analysis
- Google Charts Team: For making data visualization so accessible
- GDG on Campus GGITS: For organizing TechSprint 2025 and inspiring student innovation
- My Peers: 20+ GGITS students who tested prototypes and gave honest feedback
🏆 Why SkillMap AI Deserves to Win
- Real Problem: Solves actual pain for 5000+ GGITS students (validated through surveys)
- Google Tech Excellence: Deeply integrates 2 Google technologies (Gemini + Charts), not just surface-level usage
- Production-Ready: Fully working app with error handling, fallbacks, and security best practices
- Scalable Impact: Can expand to 1000+ colleges across India
- Technical Innovation: Creative prompt engineering to extract structured data from unstructured resumes
Built with ❤️ for TechSprint 2025 | GitHub | Demo Video
Built With
- css3
- flask
- flask-cors
- gemini
- git
- github
- google-chart
- html5
- javascript
- numpy
- pypdf2
- python
Log in or sign up for Devpost to join the conversation.