GradeScope is a local academic analytics dashboard built for students of SZABIST University who want a clearer view of their attendance, marks, GPA, and subject risk from the ZABDESK Academic Portal.
The application opens ZABDESK in a real browser, lets the student log in manually, captures attendance and result pages, parses the data, and displays everything in a clean Streamlit dashboard.
GradeScope runs locally. It does not require portal credentials inside the code, and it does not store passwords.
- Overview
- Why This Project Exists
- Core Features
- ZABDESK Portal Workflow
- Risk Rules
- Screenshots
- Quick Start Using ZIP
- Quick Start Using Git
- Manual Setup
- Project Structure
- Important Files
- Tech Stack
- Current Status
- Possible Improvements
- Disclaimer
Student portals often show academic data, but they usually do not explain what needs attention.
GradeScope solves that by turning ZABDESK portal data into a focused local dashboard. It helps students quickly understand attendance risk, marks performance, GPA trend, missing finals, and subject priority.
The project is designed around the SZABIST Academic Portal, ZABDESK.
ZABDESK Portal
↓
Manual Student Login
↓
Portal Page Capture
↓
HTML and Text Extraction
↓
Attendance, Marks, and GPA Parsing
↓
CSV Dataset Generation
↓
Streamlit Dashboard
ZABDESK provides important academic information, but students still have to manually open multiple pages and interpret the risk themselves.
GradeScope answers practical questions such as:
- Which subjects are below 80 percent attendance?
- Which subjects are below 55 percent marks?
- Which subjects have missing final marks?
- What is the semester GPA trend?
- What is the cumulative GPA trend?
- Which subjects should be fixed first?
- What data was captured from the portal?
- What tables are powering each chart?
- Local Streamlit dashboard
- Clean white UI
- Live academic stat cards
- Attendance health chart
- Marks performance chart
- SGPA and CGPA trend graph
- Assessment contribution chart
- Grade distribution chart
- Subject health heatmap
- Performance spread chart
- Attendance versus marks risk map
- Priority action plan for high-risk subjects
- Opens the SZABIST ZABDESK Academic Portal in a real browser
- Student logs in manually
- Detects successful login
- Captures attendance pages
- Captures current semester result pages
- Captures previous semester GPA pages
- Saves raw HTML and raw text locally
- Parses captured data into structured CSV files
- Raw Notes page for captured portal text
- Tables page for all parsed and merged datasets
- GPA table
- GPA course table
- Attendance table
- Marks table
- Risk map table
- Final merged dashboard table
- Parser output tables
- Clear local dashboard data from inside the app
- Reset before a new scrape
- Keep scripts and setup files untouched
- Remove private captured portal data safely
GradeScope is built for the SZABIST ZABDESK Academic Portal.
The app does not bypass login. It opens the portal and waits for the student to log in manually.
1. Start GradeScope
2. Open Portal Sync
3. Click Start live portal sync
4. ZABDESK opens in a browser
5. Student logs in manually
6. GradeScope detects the logged-in session
7. Attendance pages are captured
8. Current semester results are captured
9. Previous semester GPA pages are captured
10. Data is parsed and merged
11. Dashboard updates locally
GradeScope uses simple academic risk rules.
| Metric | Safe Level | Risk Condition |
|---|---|---|
| Attendance | 80 percent or above | Below 80 percent |
| Marks | 55 percent or above | Below 55 percent |
These rules are used to flag subjects that need attention.
Place screenshots in the assets/charts/ folder and keep the filenames matched with the paths below.
If an image does not load, check the filename inside assets/charts/ and update the path in this README.
A ready-to-use .zip file is included in this repository.
Use the ZIP version if you want to download and run the project without manually cloning the repository.
- Download the ZIP file from this repository.
- Extract it anywhere on your computer.
- Open the extracted folder.
- Run the setup file:
setup.bat
- Start the app:
start_gradescope.bat
- The Streamlit app will open in your browser.
Clone the repository:
git clone <your-repository-link>
cd gradescopeInstall dependencies:
setup.batStart the app:
start_gradescope.batUse this method if you want to run everything from the terminal.
pip install -r requirements.txt
python -m playwright install
streamlit run app.pyAfter starting the app:
- Open the sidebar.
- Click
Portal Sync. - Click
Start live portal sync. - Wait for ZABDESK to open.
- Log in manually.
- Do not close the browser while GradeScope is capturing pages.
- Wait for all parser steps to finish.
- Return to the dashboard.
The dashboard will update using the locally captured and parsed data.
gradescope/
├── app.py
├── setup.bat
├── start_gradescope.bat
├── requirements.txt
├── README.md
├── SZABIST_Academic_Dashboard.ipynb
├── scraper.ipynb
├── scripts/
│ ├── portal_scraper.py
│ ├── parse_attendance.py
│ ├── parse_marks.py
│ ├── parse_gpa.py
│ └── merge_dashboard.py
├── data/
│ ├── processed/
│ │ └── demo_gradescope_dashboard.csv
│ ├── raw/
│ └── summaries/
├── assets/
│ ├── charts/
│ └── reports/
│ └── gradescope_report.html
└── docs/
├── DATA_DICTIONARY.md
└── PRIVACY_CHECKLIST.md
| File | Purpose |
|---|---|
app.py |
Main Streamlit dashboard |
setup.bat |
Windows setup script |
start_gradescope.bat |
Starts the local app |
requirements.txt |
Python dependencies |
scripts/portal_scraper.py |
Opens ZABDESK and captures portal pages |
scripts/parse_attendance.py |
Extracts attendance data |
scripts/parse_marks.py |
Extracts current semester marks |
scripts/parse_gpa.py |
Extracts previous semester GPA data |
scripts/merge_dashboard.py |
Builds the final dashboard dataset |
data/processed/demo_gradescope_dashboard.csv |
Public-safe demo dataset |
docs/DATA_DICTIONARY.md |
Dataset column reference |
docs/PRIVACY_CHECKLIST.md |
Privacy checklist before publishing |
| Area | Tools |
|---|---|
| Language | Python |
| Dashboard | Streamlit |
| Browser Automation | Playwright |
| HTML Parsing | BeautifulSoup |
| Data Processing | Pandas, NumPy |
| Charts | Plotly, Matplotlib |
| Development Workflow | Jupyter Notebook |
| Platform | Windows |
GradeScope creates local data files during portal sync.
data/raw/
data/summaries/
data/processed/
Typical generated files include:
scraped_attendance_summary.csv
scraped_marks_summary.csv
scraped_gpa_summary.csv
scraped_gpa_courses.csv
gradescope_final_dashboard.csv
The app also stores raw captured portal text and HTML locally during scraping.
These files should not be uploaded publicly unless sanitized.
GradeScope is currently a working local academic dashboard.
It can:
- Open the SZABIST ZABDESK portal
- Wait for manual student login
- Capture attendance pages
- Capture current semester result pages
- Capture previous semester GPA pages
- Parse attendance data
- Parse marks data
- Parse SGPA and CGPA data
- Merge parsed data into a dashboard dataset
- Display polished charts
- Display source tables
- Display raw sync notes
- Clear local data safely
- PDF report export
- Better mobile layout
- Demo mode for public hosting
- Attendance recovery calculator
- Grade prediction
- Weekly reminder system
- Course priority planner
- Exportable semester report
- Better handling for different ZABDESK layouts
This project is for personal academic tracking and portfolio demonstration.
It is not an official SZABIST product.
It is not affiliated with SZABIST University or the ZABDESK Academic Portal.
Use it responsibly. Keep private student data local and do not publish real academic records.
GradeScope started as a Jupyter Notebook experiment and later became a full local dashboard app.
The notebooks were used for exploration, parsing, testing, and building the data pipeline. The final product is the Streamlit app powered by app.py.



