SLIDE 1
Title ~10 sec
Good morning. My name is Ibrahim, my supervisor is Dr. Husam. This semester I built MyHR — an employee management system.
SLIDE 2
Why MyHR? ~45 sec
The idea is simple — government organizations manage hundreds of employees and need to track who's eligible for promotion, who got commendations, who has sanctions. Right now a lot of this is done manually or with spreadsheets. MyHR handles all of this offline, on a local desktop — no cloud, no server, no internet needed.
SLIDE 3
System Overview / Dashboard ~45 sec
This is the main dashboard. It shows live employee stats, upcoming promotions, recent activity, and alerts when salary increments are due. The admin can approve increments directly from here. Two people use the system — the Admin who configures everything, and the HR Officer who manages daily records.
SLIDE 4
Architecture ~1 min
Three layers. The UI is built with PySide6, which is Qt for Python. The business layer handles the core logic — the promotion engine, audit services, salary workflows. The data layer uses SQLAlchemy ORM with a local SQLite database — 11 tables total. Three things cut across all layers: audit logging, access control, and multi-language support — the app supports English, Hungarian, and Arabic with full RTL layout.
SLIDE 5
Employees & Hierarchy ~1 min
When you add an employee, the system automatically assigns their level based on their degree — BSc goes to Level 7, MSc to Level 6, PhD to Level 5. Every employee gets a unique ID. On the right is the org hierarchy — it supports unlimited depth. You can build Organization, Division, Department, Unit, Team — as deep as you need. All with dependency checks so you can't accidentally delete a unit that has people in it.
SLIDE 6
Promotion Race Engine ★ ~1.5 min — take your time
This is the core feature. I call it the promotion race. Think of each level as a race track. The employee moves forward one checkpoint every month automatically. Commendations speed them up — there are three categories: minus 1, minus 3, or minus 6 months. Sanctions slow them down — anywhere from 1 to 12 months added. The key architectural decision: this is calculated live every time. We never store the result. We compute it from the raw records — join date, commendations, sanctions. This avoids stale data and makes the audit trail fully transparent. When they reach zero months remaining, they're eligible for promotion.
SLIDE 7
Commendations & Sanctions ~45 sec
Left side: commendations. Three categories with different impacts on the promotion race. Max 3 per employee per role — enforced by the system. You can issue them individually or as a bulk team award. Right side: sanctions. 1 to 12 months of delay. Once resolved, they stop affecting the race. Both get unique auto-generated IDs and everything is logged in the audit trail.
SLIDE 8
Administration ~45 sec
The admin can create and manage HR accounts — each HR officer has their own credentials. When we look at the audit log, we can see exactly which HR did what. If an HR account is deleted, we use soft delete — deactivate instead of remove — so the audit history stays intact. Even if the admin changes their username during a handover, past logs keep the original name.
SLIDE 9
Data Management ~30 sec
Employees can be imported in bulk from CSV or Excel files. The system validates every row before importing — you see errors highlighted and only valid rows go through. On the other side, you can export employee data and create database backups.
SLIDE 10
Results ~30 sec
To summarize what was delivered this semester: 10 application pages, 11 database tables, 563 translation keys across three languages, over 13,000 lines of Python code. The MVP is fully functional and tested.
SLIDE 11
Future Scope ~30 sec
For the thesis semester, I plan to add configurable promotion policies through the UI, PDF reporting, audit log diff views, dark mode, and eventually package it as a standalone installer.
SLIDE 12
Thank You let it sit
Thank you. The QR code links to the GitHub repository if you'd like to check the code. I'm happy to take questions.