An automated system used for Seat Allocation in the Counselling Process, consisting of a Backend Algorithm and a Graphical User Interface used to interact with it.
- Execution Guide
- Preparing Master-Sheets
- Using the Software
- Demo Tutorial
- Presentation
- Input xlsx Layout
- Contact
Follow this process to Execute the Project.
- First make sure that
gitis Installed.
-
git clone https://github.com/faran4/seatAllocationSystem.git
- Make sure you are Inside
seatAllocationSystemdirectory wherepyproject.tomlis visible.cd seatAllocationSystem
Run the installer for your OS — it creates a dedicated virtual environment, installs
the project in editable mode (pip install -e .), and adds a Seat Allocation System
launcher to your Desktop.
-
Windows:
powershell -ExecutionPolicy Bypass -File .\install.ps1
Creates a Desktop shortcut (
.lnk). -
macOS:
- Make the install/uninstall scripts executable (file permissions don't always
survive a download/clone):
chmod +x install_macos.sh uninstall_macos.sh
-
Creates a Desktop app bundle (
./install_macos.sh
Seat Allocation System.app).
If you still get a "bad interpreter" error, the script picked up Windows-style line endings somewhere along the way (e.g. a zip download). Run this command if you see that error:
sed -i '' 's/\r$//' install_macos.sh uninstall_macos.sh
- Make the install/uninstall scripts executable (file permissions don't always
survive a download/clone):
Double-click the Desktop launcher to start the app. Since the install is editable,
a later git pull takes effect immediately — just re-run the installer if dependencies
changed.
To uninstall, run uninstall.ps1 (Windows) or ./uninstall_macos.sh (macOS) — this
removes the virtual environment and the Desktop launcher, leaving the source code
untouched. Delete the project folder yourself afterwards if you want it gone completely.
- Create a Virtual Environment if Required.
- Windows
python -m venv venv venv/Scripts/activate
- MacOSX
python -m venv venv source venv/bin/activate
- Install the project in editable mode (this also installs all dependencies from
pyproject.toml). A plainpip install -r requirements.txtis not enough here — theFrontend/Backendpackages live undersrc/, so the project itself must be installed for imports between them to resolve correctly.pip install -e . - Activate Virtual Environment (if not already active) and run:
- Windows
venv/Scripts/activate
- MacOSX
source venv/bin/activate
- Execute to start:
python -m Frontend.Main
This section lists the required columns for each sheet (refer to the Input Excel Layout for the reference file) and the rules each column must follow.
Sheet-1
- a.
Roll No. - b.
Rank: Selected Rank (ex.S120) | Waiting Rank (ex.C0013) | empty for some students - c.
Status: Round-1 categories (ex.SGM1,SGME,SIM1,SEB1) - d.
Internal\External - e.
Nomination Category 1, 2, 3: nomination categories (ex.PH, SC, ST, BC, CA, CE, DS, NC) - f.
Preferences: branch preferences (ex.Pref-1, Pref-2, ...)
Sheet-2
-
a.
Branch Names -
b.
Branch Codes -
c. No. of seats —
A(SGM1+SGME),B(SIM1),C(SEB1)
-
d.
Totalseats = A+B+C -
e. Seats for each Nomination Category
-
f.
NTotal= total sum of nomination seats (PH+SC+...)
Sheet-1 only
- a.
Roll No. - b.
Rank: Selected Rank (ex.S120) | Waiting Rank (ex.C0013) | empty for some students - c.
Status: Completed/Verified status for further rounds - d.
upgradation:Yes/No, forStatus = Completed - e.
Internal\External - f.
Nomination Category 1, 2, 3: nomination categories (ex.PH, SC, ST, BC, CA, CE, DS, NC) - g.
Preferences: branch preferences (ex.Pref-1, Pref-2, ...)
- Roll No: compulsory — every student must have one, even if their Rank is empty.
- Rank: a Selected Rank (ex.
S120), a Waiting Rank (ex.C0013), or empty. It may only be empty if the student still has a Roll No. - Status: the allowed values depend on the round —
- Round 1: categories such as
SGM1,SGME,SIM1,SEB1. These must exactly match the strings configured in the software's Settings. - Round N: one of
completed/verified/cancelled(case-sensitive, lowercase).completed→ fees paid, admission confirmed.verified→ documents verified, not yet allocated a seat.cancelled→ had a seat from a previous round but is now withdrawing/revoking it.
- Round 1: categories such as
- Internal\External: must be exactly
IorE, matching the values configured in Settings. - Upgradation: must be exactly
YesorNo(case-sensitive), or empty. - Nomination Category 1, 2, 3: each filled cell must follow
<2-letter code><digits>(e.g.CA001,BC014), with an optional trailing$/#.⚠️ If Category 3 is filled, Categories 1 and 2 must be filled too — don't leave gaps between them. - Preferences: this must be the last (rightmost) group of columns on the sheet.
- ✅ Safest: nothing else follows the Preferences columns at all.
⚠️ If something must follow them, leave one guaranteed-empty column right after the last Preference column, before any other field.
- Branch Name: free text. Can be paired with
VLOOKUPagainst the Round-1 Sheet-2 branch list to map downloaded preference data to the correct Branch Codes. - Branch Codes: the software identifies every branch only by these codes — the exact same codes must also appear in the Preferences columns on Sheet-1.
- Seats for A (SGM1+SGME)
- Seats for B (SIM1)
- Seats for C (SEB1)
- Total = A + B + C
- Seats for each Nomination Category (
PH, SC, ST, BC, CA, CE, DS, NC) — empty cells here are automatically converted to0.
Note: MUST SELECT & DELETE ALL THE CELLS OF
RANKFOR STUDENTS HAVINGNO RANK.
Note: This auto-fill is the only safety net of its kind. Items 10–13 and 15 (
A,B,C,Total,NTotal,Branch Code) are not auto-filled — leaving any of those blank silently corrupts that branch's seat count instead of raising an error.
- NTotal = sum of all Nomination Category seats (
PH + SC + ST + BC + CA + CE + DS + NC). Double-check it actually includesPH— downloaded sheets don't assumePHas part of the NTotal.
Important
Follow this exact order when turning a portal download into a usable Master-Sheet:
- Download the raw data from the counselling portal.
- Filter data to keep only the required Columns.
- Map Preferences → Branch Codes (e.g. via
VLOOKUPagainst the Sheet-2 branch list). - Arrange the rows in this order: Selected → Waiting (
C-prefixed ranks) → Non-ranked students (Any Order).
The top control bar exposes six actions:
| Button | What it does |
|---|---|
| Settings | Configure Internal/External codes, Round-1 Status categories, and the Nomination Category codes & order |
| Log | View the terminal output for the current run - prints, warnings, and errors. |
| Clear | Clear the current screen and restart the software. |
| Reset | Wipe all data produced and captured so far - irreversible, use with care. |
| Shift Seats | Shift all Nomination category seats (except PH, which is always left untouched) into either General or CE — your choice via a popup — then re-runs the allocation algorithm with the updated seats. |
| Execute | Run the allocation algorithm for the current round. |
Click below to download a video walkthrough of the software in action: Demo Tutorial
You can view the presentation slides for this project here: Presentation
You can access the input layout Excel file used in this project here: Excel Sheet
- Developer: Faran Imam
- Email: faranimam4@gmail.com
- GitHub Profile: faran4
- Developer: Mohammad Suhail
- Email: mhsuhail00@gmail.com
- GitHub Profile: mhsuhail00
