Professional CISSP Exam Analysis Tool
Analyzes exam results and generates beautiful 7-sheet Excel reports showing exactly where students are weak.
Status: β Production Ready (Core Features) | Tests: 418/419 Passing | Version: 2.0.0 | Python: 3.9-3.12 | Platforms: macOS, Windows, Linux
β οΈ Note: Ready for standalone & batch analysis. Add Phase 3F (Database) + Phase 3D (Security) for multi-user production deployment (~14 hours).
You provide:
- π Exam PDF (questions and answers)
- π Student answer Excel file
- π€ Student name(s)
You get:
- π Professional 7-sheet Excel reports
- π Shows weak domains, topics, question types
- π Personalized study plan for each student
- π― Color-coded results (easy to understand)
Example Output:
Input:
- June_21st_Test.pdf
- student_answers.xlsx (John Doe's answers)
Output:
- CISSP_Individual_Report_John_Doe.xlsx (7 professional sheets)
- Shows John got 68.8%, weak in Kerberos, strong in Access Control, etc.
Phase 2 Integration Testing:
- β Real exam PDF parsing (25 questions, 100% confidence)
- β Real student Excel files (5 students, 116 answers, 84-96% coverage)
- β Complete pipeline validated end-to-end
- π See: PHASE2_VALIDATION_REPORT.md
Full System Integration Testing (with Ollama AI):
- β All 7 modules work seamlessly together
- β Data integrity verified (deterministic, zero loss)
- β Scales to 1000+ students (99% memory savings)
- β File safety verified (atomic writes, locking)
- β AI-powered insights generated (qwen2.5-coder:1.5b)
- β 418/419 tests passing
- π See: FULL_INTEGRATION_TEST_REPORT.md
On Mac:
git clone https://github.com/sriramshiv26-prog/cissp-analyzer.git
cd cissp-analyzer
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pytest -v # Should show 279 passedOn Windows (Command Prompt):
git clone https://github.com/sriramshiv26-prog/cissp-analyzer.git
cd cissp-analyzer
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
pytest -vOn Linux (Ubuntu/Debian):
git clone https://github.com/sriramshiv26-prog/cissp-analyzer.git
cd cissp-analyzer
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pytest -vThe system requires a local CISSP question bank on your machine. Place it here:
cissp-analyzer/
βββ data/
βββ questions/
βββ CISSP_162_QUESTIONS_REFERENCE.json β Your question bank goes here
Why local? Each user has their own question bank version. The repo doesn't include itβyou provide your own.
Example question bank format:
{
"metadata": {
"total_questions": 162,
"exam_name": "CISSP",
"version": "2026"
},
"questions": [
{
"id": "Q001",
"domain": "Security & Risk Management",
"topic": "Information Security Governance",
"difficulty": "Medium",
"type": "Scenario",
"trap_category": "All-of-the-Above",
"text": "Question text here...",
"options": {
"A": "Option A",
"B": "Option B",
"C": "Option C",
"D": "Option D"
},
"correct_answer": "C"
}
// ... more questions
]
}Don't have a question bank yet? Use the included example:
cp examples/CISSP_162_QUESTIONS_REFERENCE.json data/questions/python3 run.py --helpThis shows available commands and verifies the system is ready.
FIRST TIME? Try with included example:
python3 run.pyANALYZING STUDENT ANSWERS?
- Place student answer Excel file in your working directory
- Ensure question bank is in
data/questions/CISSP_162_QUESTIONS_REFERENCE.json - Run:
python3 run.py --analyze <student_file.xlsx>BATCH ANALYSIS (Multiple Students)?
python3 run.py --batch <directory_with_answer_sheets>Open the generated Excel file in:
- Microsoft Excel
- Google Sheets
- LibreOffice Calc
Multi-Week Question Bank Management & Flexible Answer Sheet Matching
Solve the problem: "If I upload a question bank today and answer sheets next week, will the system remember it without re-uploading?"
Answer: YES! We've added a complete multi-question-bank system:
| Layer | Feature | Benefit |
|---|---|---|
| 0.25 | π Question Bank Registry | Remember PDFs forever - no re-uploading across months/years |
| 0 | π Fuzzy File Matching | Find sheets matching PDFs despite typos (Jul12 = july12 = JULY12) |
| 0.5 | π― Interactive Question Bank Mapper | Explicitly confirm which answer sheets belong to which PDF |
| 1 | β Format Validation | Verify files are valid before processing |
| 2 | π Sheet Variation Detection | Handle different Excel sheet naming patterns automatically |
| 3 | π Exam Consistency Check | Verify answer sheets match question bank before analysis |
# Remember question banks across time
python3 question_bank_registry.py --register july12
python3 question_bank_registry.py --find-matches july26
python3 question_bank_registry.py --list
# Interactive PDF β Answer sheet mapping
python3 map_questions_to_answers.py --batch july26
# Detect exam consistency & groupings
python3 detect_exam_consistency.py --batch july26
# Fuzzy filename matching debug
python3 fuzzy_file_matcher.py --batch july26Month 1, Week 1: Upload 5 question banks (CISSP, CompTIA, AWS, GCP, Azure)
python3 question_bank_registry.py --register qbanks_july
Month 1, Week 2: Program A submits 100 answer sheets for CISSP exam
python3 question_bank_registry.py --find-matches program_a
β System auto-suggests CISSP_Exam.pdf from 1 week ago β
Month 1, Week 3: Program B submits 80 answer sheets for CompTIA exam
python3 question_bank_registry.py --find-matches program_b
β System auto-suggests CompTIA_Security+.pdf from 2 weeks ago β
Month 2, Week 1: Program A retakes CISSP (new 100 students)
python3 question_bank_registry.py --find-matches program_a_round2
β System recognizes CISSP_Exam.pdf (now used in 2 batches) β
β NO re-uploading needed!
Start here for complete workflows:
- π START_HERE.md β Begin here! Day 1 to ongoing use
- π QUICK_WORKFLOW_GUIDE.md - First-time setup vs recurring
- π PERSISTENT_QUESTION_BANK_REGISTRY.md - Registry deep dive
- π MULTI_QUESTION_BANK_SCENARIO.md - 3+ to 10+ different banks
- π COMPLETE_SOLUTION_SUMMARY.md - All 6 layers working together
- π INTERACTIVE_MAPPING_GUIDE.md - PDF β Answer sheet mapping
When you run python3 run.py, you see 3 choices:
| Option | Use Case | Input |
|---|---|---|
| [1] Batch Analysis | Multiple students in one exam | Exam PDF + Excel with multiple students |
| [2] Standalone Analysis | Single student, one-time exam | Exam PDF + Single student answers |
| [3] Full Batch Workflow | Complete pipeline with validation | Same as [1] + auto-fix + consolidation |
Choose based on your needs. See section above for examples.
| # | Sheet Name | What It Shows |
|---|---|---|
| 1 | Performance Summary | Score, pass/fail status, how much more needed to pass, personalized message |
| 2 | Q&A Breakdown | Every question - was it right or wrong, color-coded (green=correct, red=wrong) |
| 3 | By Question Type | Performance on Definition vs Scenario vs Application questions |
| 4 | By Exam Tricks | Performance on trick questions (MOST, BEST, FIRST, NOT, EXCEPT keywords) |
| 5 | By Domain | Performance across 8 CISSP domains (which domain is weakest?) |
| 6 | By Difficulty | Performance on Easy vs Medium vs Hard questions |
| 7 | Study Plan | Personalized weekly study plan based on weak areas |
Example: If student got 68.8%, the report shows:
- β Strengths: Domain 2 (88.9%), Domain 6 (100%)
- β Weaknesses: Domain 3 (47%), Domain 5 Kerberos (0%)
- π Study Plan: "Focus on Kerberos - 3 hours/week"
Track student progress across multiple exams and get adaptive study recommendations.
python3 run.py
# Select: Standalone Analysis β Single Student ModeOutput:
outputs/CISSP_Individual_Report_StudentName.xlsx
python3 run.py
# Select: Standalone Analysis β Comparative Mode (with history)
# Tool auto-detects previous exam and tracks progressThe tool automatically detects prior exams and adds:
- Sheet 7: Progress Over Time (trends in domains, difficulty levels, question types)
- Sheet 8: Adaptive Study Plan (momentum-based recommendations)
Output:
outputs/Mock2_2026-06-28_StudentName.xlsx β Shows progress vs Mock1
All reports follow this pattern:
Mock[N]_[YYYY-MM-DD]_[StudentName].xlsx
Where:
N= exam sequence (Mock1, Mock2, Mock3, etc.)YYYY-MM-DD= analysis dateStudentName= student name (spaces converted to underscores)
| Sheet | Content |
|---|---|
| Sheet 7: Progress Over Time | Trend charts showing performance across exams: domains improving/declining, difficulty level progression, question type mastery |
| Sheet 8: Adaptive Study Plan | Momentum-based recommendations: focus areas with highest ROI based on trend analysis, not just raw weaknesses |
The adaptive recommendation engine:
- Compares exam-to-exam performance
- Calculates momentum (improving vs declining topics)
- Identifies "quick wins" (topics improving but still weak)
- Recommends 3-week focused study plan with daily time allocation
Analyze multiple students at once:
python3 run.py
# Select: Batch Analysis (Multiple students in cohort)
# Provide exam PDF and student answers Excel fileOutput (one report per student):
outputs/CISSP_Individual_Report_John.xlsx
outputs/CISSP_Individual_Report_Jane.xlsx
outputs/CISSP_Individual_Report_Bob.xlsx
outputs/CISSP_Class_Report.xlsx β Compare all students
- Python: 3.9, 3.10, 3.11, or 3.12
- Packages: pandas, openpyxl, pypdf (auto-installed via
pip install -r requirements.txt) - Time: Installation = 2 min, Analysis = 10-15 sec per exam
- AI: None needed - pure data analysis
- Exam PDF - Your test file with questions (example:
exam.pdf) - Student Answers Excel - Student responses in Excel format (see EXAMPLE_student_answers.xlsx)
- Domain Mapping JSON - Already included for CISSP exams
- student_roster.json - Only needed for [1] Batch Analysis option
Column headers = Student names, Rows = Answers (A/B/C/D)
Example:
| Question | John Doe | Jane Smith |
|---|---|---|
| Q1 | A | B |
| Q2 | B | A |
| Q3 | C | C |
| Q4 | D | D |
See EXAMPLE_student_answers.xlsx for real example See FORMATS_AND_TEMPLATES_GUIDE.md for all accepted formats
Platform-specific installation commands:
- π See INSTALLATION_COMMANDS.md for macOS, Windows (CMD), and Windows (PowerShell)
Quick reference card (printable):
- π See QUICK_SETUP_CARD.txt
Complete documentation index:
- π See DOCUMENTATION_INDEX.md for all guides and learning paths
Download templates and examples:
- π See WHERE_TO_DOWNLOAD_TEMPLATES.md
Step 1: Parse PDF β Extract 125 questions Step 2: Parse Excel β Get student answers Step 3: Match answers to questions β Calculate correct/wrong Step 4: Analyze 5 dimensions:
- Domain (8 CISSP domains)
- Topic (20+ topics within domains)
- Difficulty (Easy/Medium/Hard)
- Question Type (Definition, Application, Scenario, Exception, Sequence)
- Exam Tricks (MOST, BEST, FIRST, NOT, EXCEPT keywords) Step 5: Generate 7-sheet Excel report with color coding
No AI involved - pure data processing and analysis.
All components are thoroughly tested:
pytest -v
# Result: 279 passed, 2 skipped (comprehensive coverage across all modules)Tests cover:
- β Environment validation (12 tests)
- β Question bank registry (persistence & fingerprinting)
- β Fuzzy filename matching (flexible file grouping)
- β Sheet variation detection (Excel naming patterns)
- β Exam consistency detection (grouping & validation)
- β Interactive mapping (PDF β Answer sheet confirmation)
- β PDF extraction & parsing
- β Excel parsing (multiple formats)
- β Question mapping & metadata
- β Performance analysis (5 dimensions)
- β Report generation (7-sheet format)
- β Error handling & edge cases (15+ scenarios)
- β Input format variations (40+ formats)
- β Integration across all modules
- β Performance benchmarks
Q: Does this use AI? A: No. Pure Python data analysis and Excel generation.
Q: Can I use it with a different exam? A: Yes! Provide a mapping file with question β domain/topic data.
Q: What if my Excel format is different? A: The parser is flexible. It handles most formats. Minor adjustments may be needed.
Q: Can it handle 200 questions instead of 125? A: Yes! Works with any number of questions.
Q: Can teachers use this? A: Yes! Teachers provide exam PDF + student answer file, get reports for each student.
Q: Is it free? A: Yes! Open source, MIT licensed.
cissp-analyzer/
βββ README.md β You are here
βββ check_setup.py β RUN THIS FIRST! (verify setup)
βββ INSTALLATION_COMMANDS.md β Platform-specific setup
βββ QUICK_SETUP_CARD.txt β 7-step quick start
βββ DOCUMENTATION_INDEX.md β Master documentation index
βββ WORKFLOW_OVERVIEW.md β 5-step process explanation
βββ FORMATS_AND_TEMPLATES_GUIDE.md β All input formats
βββ NAMING_CONVENTIONS_AND_FORMATS.md β Naming rules
βββ WHERE_TO_DOWNLOAD_TEMPLATES.md β Download guide
βββ requirements.txt β Dependencies
βββ analyze.py β Main entry point (run this!)
βββ analyze_standalone.py β Standalone analysis mode
βββ analyze_dec25.py β Dec-25 batch analysis (pre-configured)
βββ analyze_july26.py β July-26 batch analysis (pre-configured)
β
βββ cissp_analyzer/ β Source code modules
β βββ pdf_parser.py β Reads exam PDF
β βββ excel_parser.py β Reads student answers
β βββ domain_mapper.py β Question metadata
β βββ analysis_engine.py β Performance analysis
β βββ adaptive_plan_generator.py β Study recommendations
β βββ individual_report_gen.py β Creates 7-sheet report
β βββ class_report_gen.py β Compares students
β βββ interactive_cli.py β CLI interface
β βββ main.py β Orchestrator
β βββ dependency_checker.py β Environment validation
β
βββ data/ β Question mappings
β βββ question_domain_mapping.json β 125 CISSP questions
β
βββ EXAMPLE_answer_key.json β 30 sample questions (JSON)
βββ EXAMPLE_answer_key.csv β 30 sample questions (CSV)
βββ EXAMPLE_student_answers.xlsx β 4 students, 20 questions (USE THIS!)
βββ EXAMPLE_FILES_HOW_TO_USE.md β How to expand examples
βββ TEMPLATE_answer_key.json β Blank JSON template
βββ TEMPLATE_student_answers.md β Excel format guide
βββ TEMPLATE_directory_structure.md β Project setup guide
βββ TEMPLATE_REFERENCE.txt β Template overview
β
βββ tests/ β Test suite (277 tests)
βββ test_environment_validation.py
βββ test_analysis_engine.py
βββ test_adaptive_plan_generator.py
βββ test_input_formats.py
βββ test_error_handling.py
βββ test_integration.py
βββ ... (additional test modules)
Real example from Arjun (Practice Test 1):
Input:
- Practice_Test_1.pdf (107 questions)
- arjun_answers.xlsx (Arjun's 124 answers)
Output:
- CISSP_Individual_Report_Arjun.xlsx
Arjun's Results:
- β Score: 40/117 = 34.2% (needs 35.8% improvement)
- β Weakest Domain: Domain 5 (IAM) = 12.5%
- β Weakest Topic: Kerberos = 0%
- β Weakest Trick Type: Multiple keyword tricks = 0%
- π Study Plan: Focus on Domain 4 (Network) and Domain 5 (IAM)
Cause: You selected [1] Batch Analysis but don't have the batch setup files. Solution:
- For first-time use, select [2] Standalone Analysis instead
- For batch analysis, read TEMPLATE_directory_structure.md
Cause: The exam PDF doesn't exist at the path you provided. Solution:
- Check the file path is correct
- Make sure the file exists:
ls -la path/to/file.pdf - Try using the full path:
/Users/yourname/Downloads/exam.pdf
Cause: The student answers Excel file doesn't exist. Solution:
- Check the file path is correct
- Try using EXAMPLE_student_answers.xlsx first to verify the format
- Make sure your Excel file matches the format in FORMATS_AND_TEMPLATES_GUIDE.md
Cause: Column names in Excel don't match student names in the mapping. Solution:
- Open EXAMPLE_student_answers.xlsx and check the format
- Make sure your Excel column headers are student names
- See FORMATS_AND_TEMPLATES_GUIDE.md for details
Cause: Some tests are being skipped (usually 4 skipped is normal). Solution:
- Run:
pytest -vto see details - 277 passed + 4 skipped = healthy test suite
- If you see failures, check your Python version:
python3 --version(need 3.9+)
Run these checks:
# 1. Verify setup
python3 run.py --setup
# 2. Verify tests pass
pytest -v
# 3. Check Python version
python3 --version
# 4. Check required packages
pip list | grep -E "pandas|openpyxl|pypdf"
# 5. Verify file exists
ls -la your_exam_file.pdf
ls -la your_student_answers.xlsxIf all pass and you still have issues:
- Read FORMATS_AND_TEMPLATES_GUIDE.md for file format help
- Check DOCUMENTATION_INDEX.md for more resources
- Open an issue on GitHub with the error message
If you get stuck during installation:
- Make sure Python 3.9+ is installed:
python3 --version - Make sure pip is installed:
python3 -m pip --version - Reinstall packages:
pip install -r requirements.txt --force-reinstall - See INSTALLATION_COMMANDS.md for detailed platform-specific troubleshooting
MIT License - Free to use for any purpose
NEW: Complete Onboarding Guides (v1.0.1)
- π Start with START_HERE.md - Day 1 setup through ongoing use
- π Then QUICK_WORKFLOW_GUIDE.md - First-time vs recurring
- π Then COMPLETE_SOLUTION_SUMMARY.md - All features overview
Setup & Format Help
- π Read INSTALLATION_COMMANDS.md for platform-specific setup
- π Read QUICK_SETUP_CARD.txt for quick start (printable)
- π Read FORMATS_AND_TEMPLATES_GUIDE.md for data format help
- π Read DOCUMENTATION_INDEX.md for complete guide index
- π Check test files (
tests/) for code examples - π Open an issue if something doesn't work
Ready to analyze exams? Run: python3 run.py
Version: 1.0.1 | Last Updated: July 13, 2026 | Tests: 279/279 Passing | Status: Production Ready | New Features: Question Bank Registry, Fuzzy Matching, Interactive Mapping