CVNalys is a modern, high-converting web application that helps users analyze their CVs using advanced AI technology. Upload your CV and receive professional insights, skill analysis, and actionable recommendations to make your resume stand out.
🚀 Core Features | 📱 User Experience | 🔒 Security & Privacy |
---|---|---|
AI-Powered Analysis | Mobile Responsive Design | No Data Storage |
Multi-Format Support | Touch Gestures | Secure File Processing |
Instant Results | Beautiful UI/UX | Privacy First |
Skill Analysis | No Login Required | CORS Enabled |
- AI-Powered Analysis: Advanced machine learning algorithms provide deep insights
- Multi-Format Support: PDF, DOCX, DOC, TXT, RTF files supported
- Instant Results: Get comprehensive analysis in seconds
- Privacy First: Your CV is never stored on our servers
- No Login Required: Start analyzing immediately
- Mobile Responsive: Beautiful UI that works on all devices
- Touch Gestures: Hammer.js integration for mobile interactions
Category | Technology | Purpose |
---|---|---|
Backend Framework | Flask | Lightweight web framework for API endpoints |
AI Integration | OpenAI GPT-4 | Advanced CV analysis and rewriting |
File Processing | PyPDF2, python-docx | Multi-format document text extraction |
Frontend Styling | Tailwind CSS | Utility-first CSS framework for modern UI |
Touch Support | Hammer.js | Mobile gesture recognition |
Icons | Font Awesome | Professional icon library |
Typography | Google Fonts (Inter) | Modern, readable font system |
- Python 3.11 or higher
- pip package manager
- OpenAI API key (optional, for AI analysis)
Step 1: Clone the Repository
git clone https://github.com/OpenAI4Africa/CVNalys.git
cd cvnalys
Step 2: Set Up Virtual Environment
# Create virtual environment
python3 -m venv venv
# Activate virtual environment
source venv/bin/activate # On macOS/Linux
# OR
venv\Scripts\activate # On Windows
Step 3: Install Dependencies
pip install -r requirements.txt
Step 4: Configure Environment
# Copy environment template
cp env.example .env
# Edit .env file with your settings
nano .env # or use your preferred editor
Step 5: Launch Application
python run.py
Open your browser and navigate to: http://localhost:8000
Create a .env
file in the root directory with the following configuration:
# 🔑 Required Settings
SECRET_KEY=your-super-secret-key-here
# 🤖 Optional - OpenAI API for AI analysis
OPENAI_API_KEY=your-openai-api-key-here
# 📁 Optional - File upload settings
MAX_FILE_SIZE=16777216 # 16MB in bytes
Step | Action | Result |
---|---|---|
1️⃣ | Get API key from OpenAI Platform | Access to GPT-4 models |
2️⃣ | Add key to .env file |
AI analysis automatically enabled |
3️⃣ | Restart application | Enhanced CV insights available |
💡 Pro Tip: The application works without an OpenAI API key, but AI-powered analysis and CV rewriting features will be limited.
cvnalys/
├── 🚀 app/ # Main application package
│ ├── __init__.py # Flask app factory & configuration
│ ├── routes.py # API endpoints & request handling
│ ├── 🔧 services/
│ │ └── cv_analyzer.py # AI-powered CV analysis service
│ ├── 🛠️ utils/
│ │ ├── file_processor.py # Multi-format file processing
│ │ └── report_generator.py # PDF/TXT report generation
│ ├── 🎨 static/
│ │ ├── css/
│ │ │ └── style.css # Professional Tailwind CSS styles
│ │ ├── js/
│ │ │ └── app.js # Interactive JavaScript application
│ │ └── images/ # SISU AI branding assets
│ └── 📄 templates/
│ └── index.html # Main application interface
├── 📁 uploads/ # Temporary file storage (auto-created)
├── 🐍 venv/ # Python virtual environment
├── 📦 requirements.txt # Python dependencies
├── 🚀 run.py # Application entry point
├── ⚙️ env.example # Environment variables template
├── 📖 README.md # This documentation
└── 📄 LICENSE # Apache 2.0 License
Layer | Purpose | Key Files |
---|---|---|
🌐 Web Interface | User interaction & file upload | templates/index.html , static/js/app.js |
🔌 API Layer | Request handling & routing | routes.py |
🧠 Business Logic | CV analysis & AI processing | services/cv_analyzer.py |
📁 Data Processing | File handling & reports | utils/file_processor.py , utils/report_generator.py |
🎨 Presentation | Styling & responsive design | static/css/style.css |
Step | Action | Result |
---|---|---|
1️⃣ | Upload CV | Drag & drop or click to select your CV file |
2️⃣ | Automatic Processing | System extracts text and analyzes content |
3️⃣ | View Results | Comprehensive analysis with actionable insights |
- 📊 CV Score (0-100): Professional assessment with visual progress indicator
- 📝 Word Count & Structure: Detailed text analysis and formatting insights
- 🛠️ Skills Identification: Categorized technical and soft skills detection
- 💡 Actionable Recommendations: Specific improvement suggestions
- 🤖 AI-Powered Insights: Advanced analysis using OpenAI GPT-4 (with API key)
- 📏 Maximum Size: 16MB per file
- 🔤 Encoding: UTF-8 recommended for text files
- 🎯 Quality: Higher quality PDFs provide better text extraction
- 🔄 Processing: Files are processed in memory and never stored
Feature | Description | Benefit |
---|---|---|
🔒 No Data Storage | CVs processed in memory, never saved to disk | Complete privacy protection |
✅ Secure Uploads | File validation, sanitization, and type checking | Protection against malicious files |
🌐 CORS Enabled | Cross-origin resource sharing for API access | Flexible deployment options |
🔐 Environment Variables | Sensitive data stored in secure .env files | Secure configuration management |
- ❌ Store your CV files on our servers
- ❌ Track your personal information
- ❌ Share your data with third parties
- ❌ Require account creation or login
- ✅ Process files securely in memory
- ✅ Provide immediate analysis results
- ✅ Generate downloadable reports
- ✅ Maintain complete user privacy
# Install development dependencies
pip install pytest black flake8
# 🧪 Run tests
pytest
# 🎨 Code formatting
black app/
# 🔍 Linting
flake8 app/
- 🐍 PEP 8 Compliance: Follow Python style guide standards
- 🔍 Type Hints: Use type annotations where appropriate
- 📚 Documentation: Document all functions and classes
- ⚡ Function Design: Keep functions small, focused, and efficient
Step | Action | Tools |
---|---|---|
1️⃣ | Create feature branch | git checkout -b feature/new-feature |
2️⃣ | Implement functionality | Your preferred editor |
3️⃣ | Add tests | pytest |
4️⃣ | Update documentation | README.md, docstrings |
5️⃣ | Submit pull request | GitHub PR workflow |
# Clone and setup
git clone https://github.com/OpenAI4Africa/CVNalys.git
cd cvnalys
# Create virtual environment
python3 -m venv venv
source venv/bin/activate
# Install development dependencies
pip install -r requirements.txt
pip install pytest black flake8
# Run development server
python run.py
Aspect | Requirement | Implementation |
---|---|---|
🔐 Environment Variables | Secure SECRET_KEY | Use strong, unique keys |
📁 File Upload Limits | Appropriate size limits | Configure MAX_CONTENT_LENGTH |
🌐 CORS Settings | Domain restrictions | Limit to necessary origins |
📊 Error Handling | Proper logging & monitoring | Implement structured logging |
🛡️ Security Headers | Security middleware | Add security headers |
Platform | Difficulty | Best For | Setup Time |
---|---|---|---|
Easy | Quick prototypes | 5 minutes | |
Medium | Scalable deployments | 15 minutes | |
Advanced | Enterprise solutions | 30 minutes | |
Medium | Full control | 20 minutes |
- ✅ Environment variables configured
- ✅ Dependencies installed
- ✅ File permissions set correctly
- ✅ CORS settings configured
- ✅ Security headers implemented
- ✅ Error logging enabled
- ✅ Health check endpoint working
CVNalys is an open-source project and we'd love your help to make it even better. Whether you're a developer, designer, or just passionate about AI and CV analysis, there are many ways to contribute.
Step | Action | Details |
---|---|---|
1️⃣ | Fork the repository | Click the Fork button on GitHub |
2️⃣ | Create a feature branch | git checkout -b feature/amazing-feature |
3️⃣ | Make your changes | Code, test, and document |
4️⃣ | Add tests | Ensure your changes work correctly |
5️⃣ | Submit a pull request | Create a detailed PR description |
- 🚀 New Features: CV templates, industry-specific analysis
- 🐛 Bug Fixes: Identify and fix issues
- 📚 Documentation: Improve guides and examples
- 🎨 UI/UX: Enhance the user interface
- 🌍 Localization: Add support for more languages
- 🧪 Testing: Improve test coverage
- Star this repository if you find it useful
- Fork the project to your GitHub account
- Clone your fork locally
- Create a new branch for your changes
- Make your improvements
- Test everything works
- Submit a pull request
- 💬 Discussions: Start a discussion in GitHub Discussions
- 🐛 Issues: Report bugs or request features
- 📧 Email: Contact us at [email protected]
This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for complete details.
- ✅ Commercial Use: Allowed
- ✅ Modification: Allowed
- ✅ Distribution: Allowed
- ✅ Patent Use: Allowed
- ✅ Private Use: Allowed
- 📝 License and Copyright Notice: Must be included
⚠️ State Changes: Must be documented- 📄 Apache License: Must be included in any distribution
For the complete license text, please see the LICENSE file in this repository.
Technology | Purpose | Website |
---|---|---|
AI analysis capabilities | openai.com | |
Web framework | flask.palletsprojects.com | |
Beautiful UI components | tailwindcss.com | |
Professional icons | fontawesome.com | |
Mobile touch support | hammerjs.github.io |
This project was inspired by the need to democratize AI-powered CV analysis and make professional career development tools accessible to everyone, especially in emerging markets.
Channel | Best For | Response Time |
---|---|---|
🐛 GitHub Issues | Bug reports & feature requests | 24-48 hours |
💬 GitHub Discussions | General questions & community chat | 12-24 hours |
📧 Email Support | Complex issues & partnerships | 24-72 hours |
- 🌐 General Inquiries: [email protected]
- 🔧 Open Source Support: [email protected]
- 🌍 Website: openai4africa.org
- 💼 LinkedIn: OpenAI4Africa
- 🌐 Website: sisuai.com
- 🔧 Development Support: [email protected]
- 🔧 Open Source Support: [email protected]
- 💼 LinkedIn: SISU AI
- 📖 Check the documentation - Your answer might be here
- 🔍 Search existing issues - Someone might have asked already
- 📝 Provide details - Include error messages, steps to reproduce
- 💻 Share your environment - OS, Python version, etc.
- ☑️ Be respectful and inclusive
- ☑️ Help others when you can
- ☑️ Share your experiences and use cases
- ☑️ Report bugs and suggest improvements
Category | Feature | Status |
---|---|---|
📄 Templates | Advanced CV templates | 🔄 Planning |
🏭 Industry | Industry-specific analysis | 🔄 Planning |
📊 ATS | ATS optimization scoring | 🔄 Planning |
🔍 Comparison | Resume comparison tools | 🔄 Planning |
📤 Export | Export to multiple formats | 🔄 Planning |
👥 Collaboration | Team collaboration features | 🔄 Planning |
- ✅ Core CV analysis functionality
- ✅ AI-powered insights
- ✅ Multi-format file support
- ✅ Professional UI/UX design
- 🔄 Performance optimizations
- 🔄 Enhanced error handling
- 📄 Advanced CV templates
- 🏭 Industry-specific analysis
- 📊 ATS optimization scoring
- 🔍 Resume comparison tools
- 📱 Progressive Web App (PWA)
- 🌍 Multi-language support
- 📤 Export to multiple formats
- 👥 Team collaboration features
- 📊 Advanced analytics dashboard
- 🔗 API for third-party integrations
- 🎓 Learning management system
- 🌐 Global deployment optimization
We'd love to hear your feature requests! Please:
- 🐛 Create an issue with the
enhancement
label - 💬 Start a discussion in GitHub Discussions
- 📧 Email us at [email protected]