CAP Priority List
A practical helper for Maharashtra CAP engineering admissions. Filling the option form means ranking dozens of college–branch pairs under time pressure. This project turns published CAP cutoff history into a short, ordered preference list tailored to one candidate.
You provide a CET Final Merit Status page (recommended)
or an MHT-CET scorecard. The tool reads category, gender, percentile, and —
when available — PCM State General Merit No. It then
compares those against three years of CAP Round 1–3 closings already parsed
into data/cutoffs_db.csv.
The result is a CSV of about 100 college–branch options split into aspirational, moderate, and safe buckets. Government, government-aided, and university institutes are preferred when they qualify. Use it as a starting preference list — not a guarantee of allotment. See Assumptions below for every modeling choice.
Merit .mht (preferred) or CET scorecard PDF + raw CAP cutoff PDFs
output/recommendations.csv — priority-ordered choices
Candidates (and families) preparing CAP preference forms for FE engineering
Parse DB → read candidate → filter → score & shortlist
How the database is generated
Cutoff PDFs → data/cutoffs_db.csv · click to expanddata/cutoffs_db.csvRecommendations do not read CAP PDFs at runtime. First, a one-time (or rare) offline step converts historical cutoff PDFs into a flat CSV database.
raw/YYYY-YY/Cutoffs/
(currently 2022–23, 2023–24, 2024–25). Each year has CAP Round 1–3 PDFs
whose names contain CAP1, CAP2, or CAP3.
python scripts/parse_cutoffs.py
extracts text from each PDF, finds college headers, choice codes / branches,
category columns, and Stage-I closing merit rank + percentile
pairs, then normalizes codes (zero-padding, suffixes like F/K/U).
data/cutoffs_db.csv with fields such as year, round,
college, choice_code, branch, status, category, merit_rank, percentile, stage.
raw/, or if parsing logic changes. Day-to-day recommendation
runs only read this CSV.
Assumptions
What this tool assumes · click to expand · 16 modeling choices · planning aid, not a guaranteeThese are deliberate modeling choices. The shortlist is a planning aid, not an allotment prediction.
GVJ*) plus OPEN (GOPEN*).
Separate EWS / TFWS / PWD / Defence paths are not modeled beyond what
those standard category codes already cover.
G* seats only. Female → G* and Ladies
L* seats.
merit_rank = State General Merit scale.
CAP PDF closing ranks are treated as comparable to the candidate’s
State General Merit No (lower rank is better;
cleared if candidate ≤ closing).
candidate ≥ closing %).
Difficulty scores always use percentiles so ordering stays comparable.
Recommendation logic
Per choice code (college–branch), each year×round keeps the easiest eligible historical closing. Then: would this candidate have cleared it?
Merit mode: State General Merit No vs CAP closing ranks
Percentile mode: scorecard fallback
Stretch — near history, low clear rate
Realistic — clears a fair share of past rounds
Comfortable CAP1 clearance + margin
Govt → Aided → Univ → Private
Bucket rules
Run
pip install -r requirements.txt python scripts/parse_cutoffs.py python generate_recommendations.py "candidate.mht" --streams all python generate_recommendations.py scorecards/scorecard.pdf --streams 1,2
Past closings only — pools change yearly
Home University not applied yet
Cutoff strength + ownership bias
.mht State Merit drives clear/bucket
Made with by your's truly