Syllabalance is a Flask-based exam-planning tool that helps students decide where their limited study time should go.
Instead of simply tracking exam dates, it considers grade gaps, exam weight, urgency, confidence, course credit hours, and weekly availability. It then ranks competing course priorities, explains the ranking, and produces a realistic study schedule.
- Accepts multiple upcoming exams, with each exam entered as a separate item.
- Ranks courses using an explainable priority model.
- Allocates a limited number of weekly study hours.
- Checks whether a target grade is mathematically reachable.
- Calculates the exam score required to reach a target using cumulative-points or percentage grading.
- Lets students test possible exam outcomes.
- Builds a deadline-safe seven-day study schedule using Steady, Front-loader, or Deadline-driven distribution.
- Generates up to three plan-based nudges ordered by urgency.
- Explains why each course received its ranking.
- Supports light and dark themes.
- Stores interface preferences locally in the browser.
- Does not permanently store entered course information.
- Download or clone the repository.
- Open the project folder.
- Double-click
OPEN_SYLLABALANCE.bat. - Keep the command window open while using the application.
The application will open at:
http://127.0.0.1:5050
py -m venv .venv
.venv\Scripts\activate
py -m pip install -r requirements.txt
py app.pyThen open:
http://127.0.0.1:5000
In Points earned so far mode, enter the cumulative course points already earned. The maximum is 100 - exam weight. For example, when coursework is worth 70 points and the final is worth 30, enter 60 if 60 course points have already been earned.
In Average percentage mode, enter the percentage average across coursework completed before the exam.
The overall grade the student wants to achieve by the end of the course, out of 100.
How much the upcoming exam contributes to the final course grade.
For example, enter 30 if the exam is worth 30% of the course total.
The calendar date of the exam. The scheduler never places a study session on or after this date.
A self-reported value from 1 to 5:
1means very low confidence.3means moderate confidence.5means very high confidence.
Lower confidence can increase the course's study priority.
The official credit value of the course.
The total number of hours the student can realistically study during the selected week.
Syllabalance uses several stages:
- It validates the course and exam information entered by the student.
- It calculates a priority score for each course.
- It compares urgency, academic impact, grade gap, confidence, and course load.
- It checks whether the target grade is mathematically reachable through the upcoming exam.
- It distributes the available study time across the ranked courses.
- It converts those allocations into manageable sessions across seven days.
- It generates plain-language explanations for the recommendations.
The application is intended to support student decisions. Its output is a recommendation, not a guarantee of a particular academic result.
Each recommendation includes a short explanation describing the factors that influenced the course's position.
The application calculates the exam score required to reach the target grade and identifies targets that are currently:
- Within reach
- Challenging
- High risk
- Mathematically impossible through the upcoming exam alone
Students can adjust a possible exam score and immediately see:
- The projected overall course grade
- The change from the current grade
- Whether the selected target would be reached
Available hours are distributed across competing courses while ensuring that the total recommendation does not exceed the student's stated availability.
The scheduling engine divides allocated time into study sessions across seven days while respecting the selected daily limit and every exam date. The study-style preference changes how those sessions are distributed.
py -m pytest- Python
- Flask
- SciPy
- HTML
- CSS
- JavaScript
- Jinja
- pytest
- Gunicorn
Syllabalance/
├── app.py
├── nudge_engine.py
├── priority_engine.py
├── schedule_engine.py
├── OPEN_SYLLABALANCE.bat
├── requirements.txt
├── README.md
├── screenshots/
│ ├── exam-setup.png
│ └── study-plan.png
├── static/
│ └── style.css
├── templates/
│ └── index.html
├── tests/
│ ├── test_app.py
│ ├── test_nudge_engine.py
│ ├── test_palette.py
│ ├── test_priority_engine.py
│ └── test_schedule_engine.py

