Django · Case Study
Django HR Management System: Automating Employee Records, Leave Requests, Attendance, Payroll Inputs, Documents, and HR Reporting
A detailed Django case study showing how a growing retail company replaced spreadsheet-based HR administration, paper leave forms, manual attendance reconciliation, and scattered employee documents with a secure HR management system.
ClientUrbanMart Retail Group
IndustryRetail, Human Resources, Workforce Operations, and Payroll Administration
Project typeDjango HRMS Development, Employee Records, Leave Management, Attendance Workflow, Payroll Input Automation, Document Management, and HR Dashboard
Duration22 weeks
Overview
Project: Django HRMS Development, Employee Records, Leave Management, Attendance Workflow, Payroll Input Automation, Document Management, and HR Dashboard
Duration: 22 weeks
UrbanMart Retail Group operates retail stores, distribution points, and regional support offices across several states. The company grew from a small regional chain into a larger workforce with full-time, part-time, seasonal, warehouse, and office employees. HR processes did not scale with that growth. Employee records were maintained in spreadsheets, leave requests were submitted through email or paper forms, attendance data came from different store-level trackers, payroll inputs were manually compiled, and employee documents were stored across shared drives. HR teams spent too much time reconciling data instead of supporting employees and managers. UrbanMart needed a Django-based HR management system that could centralize employee records, streamline leave approvals, improve attendance visibility, prepare cleaner payroll inputs, and create reliable HR reporting.
The core problem
UrbanMart had no single reliable system for employee operations. HR data was fragmented across spreadsheets, emails, paper forms, shared folders, and store-level trackers. Leave balances were checked manually, attendance exceptions were found late, payroll inputs required repeated correction, and managers lacked a clear view of team availability. As workforce size increased, manual HR administration became slow, error-prone, and difficult to audit.
Issues we addressed
Business signals
- Employee records were spread across spreadsheets and shared folders.
- Leave requests were submitted through email, chat messages, or paper forms.
- Managers had no consistent workflow for approving or rejecting leave.
- HR manually calculated leave balances and checked policy rules.
- Attendance exceptions were discovered late during payroll preparation.
- Payroll input files required manual cleanup before submission.
- Employee documents such as IDs, contracts, certifications, and policy acknowledgements were difficult to track.
- Document expiration reminders were handled manually.
- Store managers lacked a live view of leave schedules and staffing gaps.
- Leadership lacked reliable reporting on headcount, turnover, absenteeism, leave usage, and attendance exceptions.
Technical signals
- Employee data used inconsistent naming, IDs, store codes, job titles, and employment status values.
- Leave policies differed by employee type, tenure, location, and role.
- Attendance records came from different store-level formats.
- Payroll inputs needed to be generated from attendance, overtime, leave, and exception data.
- Sensitive employee documents required strict role-based access.
- Manager permissions depended on reporting lines and assigned locations.
- Background jobs were needed for leave reminders, document expiry alerts, attendance exception alerts, and payroll cut-off notifications.
- Historical HR records needed careful migration and deduplication.
- Audit logs were required for employee profile edits, leave approvals, document uploads, and payroll input changes.
- Reporting needed historical snapshots, not only current employee states.
Baseline & measurement
Metrics Leave Approval Delay: 1 to 4 business days
Leave Balance Disputes: 18 to 24 employee questions per month
Document Expiry Tracking: Managed manually through spreadsheets
Manager Leave Visibility: Limited to manual calendars and message threads
Payroll Input Correction Rate: 11.3% of sampled payroll input rows required correction
Employee Record Duplicate Rate: 7.8% of reviewed records contained duplicate or conflicting employee profiles
Weekly H R Admin Reconciliation: 10 to 14 hours per week
Attendance Exception Detection: Often discovered during payroll cut-off review
Monthly H R Reporting Preparation: 7 to 10 hours per month
Policy Acknowledgement Tracking: Handled through email confirmations and shared files
Pages Measured
- Employee master spreadsheet
- Leave request workflow
- Attendance exception tracker
- Payroll input preparation file
- Employee document folder
- Document expiry tracker
- Store staffing view
- Monthly HR reporting pack
Primary Audience: HR administrators, store managers, warehouse supervisors, payroll coordinators, employees, and leadership
Measurement Window: 60 days before implementation
Discovery & diagnosis
The discovery phase focused on mapping UrbanMart's HR operations from hiring record creation to payroll input preparation. The team reviewed employee spreadsheets, leave policies, attendance formats, payroll files, document folders, manager approval workflows, and reporting packs. The discovery showed that UrbanMart needed a custom Django HRMS because generic HR tools did not fit its mix of retail store operations, warehouse shifts, location-based approvals, document tracking, and payroll input workflow.
What we inspected
-
Title: HR lifecycle mapping
Description: The team mapped employee record creation, onboarding documents, role changes, leave requests, attendance exception handling, payroll input preparation, document expiry tracking, and offboarding.
-
Title: Employee data audit
Description: Existing employee spreadsheets were reviewed to identify duplicate records, inconsistent job titles, missing manager relationships, inactive employees, and conflicting store assignments.
-
Title: Leave policy review
Description: Leave rules were documented by employee type, tenure, location, carryover policy, accrual method, blackout periods, and approval requirements.
-
Title: Attendance workflow analysis
Description: Store and warehouse attendance trackers were reviewed to understand shift formats, overtime indicators, missing punches, late arrivals, absences, and manual corrections.
-
Title: Payroll input review
Description: Payroll coordinators explained how attendance, overtime, approved leave, unpaid absence, allowances, and manual adjustments were compiled before payroll submission.
-
Title: Document management review
Description: The team reviewed employee contracts, ID documents, certifications, training acknowledgements, policy forms, and expiry tracking requirements.
-
Title: Permission model planning
Description: Roles were defined for employees, managers, HR administrators, payroll coordinators, regional managers, and executives.
-
Title: Reporting requirements review
Description: Leadership defined reports for headcount, turnover, leave usage, absenteeism, overtime, document compliance, payroll exceptions, and location staffing trends.
The challenge
The main challenge was to build an HR platform that matched real workforce operations across stores, warehouses, and offices. The system had to support multiple employment types, shift-based attendance, manager approvals, leave balances, document expiration, role-based access, payroll input preparation, and HR reporting. It also needed strong privacy controls because employee records, compensation-related inputs, identification documents, disciplinary notes, and leave history were sensitive. The application had to remain simple for store managers while giving HR enough structure and auditability.
Approach
The solution was a Django-based HR management system that centralized employee records, leave workflows, attendance exceptions, payroll inputs, employee documents, and HR reporting. Django provided a secure, permission-aware platform that could handle relational workforce data, approval workflows, audit logs, background alerts, and operational dashboards.
Strategy
- Create a centralized PostgreSQL database for employee profiles, job assignments, reporting lines, leave balances, attendance records, payroll inputs, and documents.
- Build employee and manager portals for leave requests, approval workflows, team calendars, and document acknowledgements.
- Automate leave balance calculations and policy validation.
- Import attendance records and flag exceptions before payroll cut-off.
- Generate cleaner payroll input files from approved attendance and leave data.
- Track employee documents, expiry dates, certifications, and acknowledgements.
- Use background jobs for reminders, expiry alerts, approval nudges, and payroll cut-off notifications.
- Add role-based access for employees, managers, HR, payroll, regional leaders, and executives.
- Create dashboards for headcount, leave, attendance, overtime, document compliance, and payroll exceptions.
- Migrate clean historical HR records from spreadsheets and shared folders.
Implementation playbook
Phase1 Title: Core HR data model
Actions
- Created Django apps for employees, departments, locations, leave, attendance, payroll, documents, approvals, notifications, and reporting.
- Designed PostgreSQL models for employee profiles, job assignments, departments, locations, managers, leave policies, leave balances, attendance records, payroll input lines, employee documents, and audit events.
- Added employment statuses for active, onboarding, probation, suspended, on leave, terminated, and archived.
- Created relationships between employees, managers, locations, departments, roles, and payroll groups.
- Added database constraints for employee IDs, active assignments, location ownership, and duplicate profile prevention.
- Built admin screens for HR users to manage employee profiles, assignments, locations, departments, and policy records.
- Added activity tracking for important employee record changes.
- Created test fixtures for full-time, part-time, seasonal, warehouse, and office employees.
Description: The first phase created the Django apps and database structure for employee operations.
Phase2 Title: Authentication and role-based permissions
Actions
- Implemented secure login and password reset workflows.
- Created roles for employees, line managers, store managers, HR administrators, payroll coordinators, regional managers, and executives.
- Restricted employees to their own leave, attendance, documents, and profile details.
- Allowed managers to view team leave calendars, pending approvals, and attendance exceptions for direct reports.
- Restricted payroll data to payroll and approved HR roles.
- Restricted sensitive documents and disciplinary notes to HR-only access.
- Created regional manager access for assigned locations.
- Added audit logs for permission changes, profile edits, document access, leave approvals, and payroll input updates.
Description: The second phase focused on protecting sensitive employee data while giving managers and employees practical access.
Phase3 Title: Employee record management
Actions
- Built employee profile pages for personal details, employment details, location, department, manager, employment type, start date, status, and role.
- Added job assignment history to track promotions, transfers, location changes, and manager changes.
- Created onboarding status fields for new employee setup.
- Added emergency contact and compliance fields with access restrictions.
- Created duplicate detection during employee creation.
- Added filters for location, department, manager, role, employment type, and status.
- Created employee timelines showing profile changes, leave events, document uploads, and payroll-relevant updates.
- Added import tools for cleaned employee spreadsheet data.
Description: The employee profile module replaced the master spreadsheet and became the central source of workforce data.
Phase4 Title: Leave request and approval workflow
Actions
- Created leave types for annual leave, sick leave, unpaid leave, parental leave, bereavement leave, training leave, and emergency leave.
- Configured leave policies by employment type, location, tenure, and role.
- Built employee leave request forms with date range, leave type, reason, attachment option, and half-day support.
- Added automatic leave balance checks before submission.
- Created manager approval queues for pending requests.
- Added HR escalation for exceptions, policy overrides, and sensitive leave types.
- Created team leave calendars for managers.
- Added status values for pending, approved, rejected, cancelled, withdrawn, and HR review.
- Sent notifications for submission, approval, rejection, cancellation, and upcoming leave.
Description: The leave module replaced email and paper-based leave requests with structured approvals and balance checks.
Phase5 Title: Attendance import and exception tracking
Actions
- Created attendance import tools for store and warehouse files.
- Normalized attendance records by employee ID, location, shift date, clock-in time, clock-out time, break time, overtime, absence, and exception status.
- Flagged missing punches, late arrivals, early departures, overtime, unapproved absences, and conflicting records.
- Linked approved leave to attendance dates.
- Created manager review queues for attendance exceptions.
- Allowed authorized corrections with reason capture.
- Created attendance history views on employee profiles.
- Added alerts for unresolved exceptions before payroll cut-off.
Description: The attendance module helped HR and managers identify problems earlier instead of waiting until payroll review.
Phase6 Title: Payroll input preparation
Actions
- Created payroll periods by location, payroll group, and cut-off date.
- Generated payroll input lines from attendance records, approved leave, overtime, unpaid absences, allowances, and adjustments.
- Flagged unresolved attendance exceptions before payroll export.
- Created review screens for payroll coordinators.
- Added approval status for payroll input batches.
- Generated export files in the format required by the payroll provider.
- Created audit logs for manual adjustments and approval changes.
- Added payroll summary reports by location, department, employee type, and exception type.
Description: The payroll module generated cleaner payroll inputs from approved attendance, leave, overtime, and manual adjustments.
Phase7 Title: Employee document management
Actions
- Created document categories for contracts, IDs, certifications, training records, policy acknowledgements, tax forms, and performance records.
- Allowed HR users to upload and manage employee documents.
- Allowed employees to view selected documents and submit required acknowledgements.
- Added expiry dates for certifications, permits, IDs, and training documents.
- Created reminder rules for upcoming document expiry.
- Restricted sensitive document categories to HR-only users.
- Added audit logs for upload, download, expiry update, acknowledgement, and deletion actions.
- Created compliance dashboards for missing, expired, and soon-to-expire documents.
Description: The document module centralized employee files and automated expiry tracking.
Phase8 Title: Employee and manager dashboards
Actions
- Created employee dashboards showing leave balance, pending requests, approved leave, required documents, acknowledgements, and attendance summaries.
- Created manager dashboards showing pending approvals, team leave calendar, attendance exceptions, staffing gaps, and upcoming document expiries.
- Created HR dashboards showing onboarding status, leave exceptions, document compliance, employee changes, and unresolved attendance issues.
- Created payroll dashboards showing cut-off readiness, unresolved exceptions, pending adjustments, and batch export status.
- Added filters by location, department, manager, payroll group, and employment type.
- Created quick actions for approving leave, resolving attendance issues, uploading documents, and reviewing payroll inputs.
- Added notification panels for urgent HR tasks.
- Reduced dependency on email follow-ups and manual tracker updates.
Description: Dashboards were designed around daily HR and manager tasks rather than broad generic analytics.
Phase9 Title: Alerts, reporting, and HR analytics
Actions
- Used Celery jobs for leave approval reminders, document expiry alerts, payroll cut-off warnings, attendance exception alerts, and policy acknowledgement reminders.
- Created reports for headcount, turnover, leave usage, absenteeism, overtime, attendance exceptions, document compliance, and payroll readiness.
- Added historical snapshots for monthly headcount and turnover reporting.
- Created location-level dashboards for store and warehouse managers.
- Created executive summaries for workforce trends and compliance risks.
- Added exportable CSV reports for HR audits and payroll review.
- Created exception reports for missing employee data, expired documents, unresolved attendance issues, and negative leave balances.
- Added scheduled email summaries for HR administrators and regional managers.
Description: The reporting layer gave HR and leadership better visibility into workforce trends.
Phase10 Title: Migration, testing, deployment, and rollout
Actions
- Cleaned employee spreadsheets by normalizing names, employee IDs, locations, managers, departments, job titles, and employment statuses.
- Merged duplicate employee records after HR review.
- Imported active employees, leave balances, attendance history, document references, and payroll groups.
- Added automated tests for permissions, leave policies, balance calculations, attendance imports, payroll exports, document access, and alerts.
- Configured Docker environments for development, staging, and production.
- Ran pilot testing with selected stores and HR users.
- Compared HRMS payroll input exports against manual payroll files during rollout.
- Trained managers on leave approvals, attendance exceptions, and team dashboards.
- Trained employees on leave requests, document acknowledgements, and profile access.
- Retired legacy HR spreadsheets after the HR team validated the system outputs.
Description: The final phase focused on importing existing records safely, validating workflows, and rolling the system out across locations.
Results
- Employee records moved from spreadsheets into one secure Django HRMS.
- Leave approval delays decreased because requests and approvals followed a structured workflow.
- Leave balance disputes dropped because employees could view balances and request history.
- Attendance exceptions became visible before payroll cut-off.
- Payroll input correction rates decreased because exports were generated from approved attendance and leave data.
- Document expiry tracking improved through automated reminders and compliance dashboards.
- Managers gained live team leave calendars and attendance exception queues.
- HR administrators reduced weekly reconciliation work.
- Employee duplicate records were reduced through migration cleanup and creation-time validation.
- Policy acknowledgement tracking moved from email confirmations into the HRMS.
- Leadership gained better reporting on headcount, turnover, leave usage, absenteeism, overtime, and compliance.
- Payroll coordinators gained clearer batch readiness and exception visibility.
- Sensitive employee data became better protected through role-based access and audit logs.
- UrbanMart gained a scalable HR platform for future onboarding, performance review, and employee self-service features.
Business impact
The Django HRMS helped UrbanMart centralize workforce administration, reduce manual HR reconciliation, improve leave and attendance visibility, prepare cleaner payroll inputs, and strengthen document compliance. The system gave employees, managers, HR, payroll, and leadership role-specific access to reliable workforce data.
Outcomes
- Reduced HR administrative workload.
- Faster and more transparent leave approvals.
- Earlier detection of attendance and payroll exceptions.
- Cleaner payroll input preparation.
- Improved document compliance and expiry tracking.
- Better manager visibility into staffing gaps and team leave.
- Reduced employee questions about leave balances.
- Stronger privacy controls for sensitive HR records.
- More reliable workforce reporting for leadership.
- A scalable HR foundation for future employee lifecycle workflows.
Before & after
| Area | Before | After |
|---|---|---|
| User Experience | Employees submitted leave through emails or paper forms and waited for updates. Managers tracked team availability manually, HR reconciled spreadsheets, and payroll teams corrected input files close to deadlines. | Employees could request leave, view balances, complete acknowledgements, and check relevant records through a secure portal. Managers could approve requests, view team calendars, and resolve attendance issues in one place. |
| Business Experience | UrbanMart's workforce had grown, but HR operations stayed manual. More employees and locations created more reconciliation, more disputes, and more reporting delays. | UrbanMart reduced manual HR work, improved payroll readiness, increased document compliance, and gained stronger workforce visibility across locations. |
| Engineering Experience | Employee records, leave balances, attendance files, documents, and payroll inputs were disconnected. There was no central relational system enforcing HR rules, permissions, or audit history. | Django provided a maintainable HRMS with relational workforce data, role-based permissions, leave rules, attendance imports, payroll exports, document tracking, background alerts, audit logs, and reporting dashboards. |
Engineering decisions
-
Use Django for a custom HRMS instead of forcing store operations into a generic HR tool.
UrbanMart needed location-based approvals, shift attendance imports, payroll input preparation, document expiry tracking, and custom leave policies that did not fit a simple off-the-shelf workflow.
-
Separate employee profiles from job assignments.
Employees could transfer stores, change roles, move departments, or report to different managers over time. Assignment history preserved that context.
-
Use PostgreSQL for workforce records.
Employee profiles, managers, locations, leave, attendance, payroll inputs, and documents required strong relational integrity and reliable reporting.
-
Automate leave validation but allow HR overrides.
Most requests could follow policy rules, but HR needed controlled override options for exceptions, emergencies, and special cases.
-
Flag attendance exceptions before payroll export.
Payroll errors are cheaper to fix before cut-off than after submission.
-
Restrict sensitive document categories.
Not all employee files should be visible to managers or payroll users. HR-only access reduced privacy risk.
-
Use background alerts for deadlines.
Leave approvals, document expiries, attendance exceptions, and payroll cut-offs needed scheduled reminders.
-
Clean employee data before migration.
Duplicate and inconsistent employee records would have damaged trust in the HRMS immediately.
Lessons learned
- HR systems fail when they ignore how managers actually approve work across locations.
- Django is a strong fit for HR workflows that require permissions, audit logs, relational data, and custom policies.
- Leave balances must be transparent to reduce employee disputes.
- Attendance exceptions should be handled before payroll deadlines, not during final payroll review.
- Employee documents need expiry alerts and role-based access from the beginning.
- Separating job assignment history from employee identity makes transfers and promotions easier to track.
- Payroll exports are more reliable when built from approved workflow data.
- Data cleanup is essential before replacing HR spreadsheets.
- Manager dashboards should focus on approvals, staffing gaps, and exceptions.
- The best HR platforms reduce administrative friction while protecting employee privacy.
Role: Head of People Operations
Quote: The HRMS gave us one place to manage employee records, leave, attendance, documents, and payroll inputs. It reduced manual work and gave managers much better visibility into their teams.
Person: Laura Mitchell
Company: UrbanMart Retail Group
Summary
UrbanMart Retail Group used Django to build an HR management system for employee records, leave requests, attendance exceptions, payroll inputs, document tracking, approvals, alerts, dashboards, and workforce reporting. The system replaced spreadsheet-heavy HR administration with a secure PostgreSQL-backed Django application using role-based permissions, policy validation, Celery-powered reminders, audit logs, and reporting dashboards. The result was faster leave approvals, cleaner payroll inputs, better attendance visibility, stronger document compliance, reduced HR admin work, and a scalable foundation for future employee self-service.
About the Author
Author icon By Oleksandr S.
- ✓ Verified Expert
Experience icon 10 years of experience
My name is Oleksandr S. and I have over 10 years of experience in the tech industry. I specialize in the following technologies: Generative AI, LLM Prompt Engineering, Generative AI Software, Python, Data Science, etc.. I hold a degree in Master of Business Administration (MBA), . Some of the notable projects I've worked on include: Gen AI Hairstyle Try-On Solution, Reporting & Analysis Automation with AI Chatbots, LLM-Powered Recommendation System, AI Web Platform for Data-Driven E-commerce Decisions, AI Platform Revolutionizing Healthcare Insights, etc.. I am based in Kiev, Ukraine. I've successfully completed 15 projects while developing at Softaims.
I'm committed to continuous learning, always striving to stay current with the latest industry trends and technical methodologies. My work is driven by a genuine passion for solving complex, real-world challenges through creative and highly effective solutions. Through close collaboration with cross-functional teams, I've consistently helped businesses optimize critical processes, significantly improve user experiences, and build robust, scalable systems designed to last.
My professional philosophy is truly holistic: the goal isn't just to execute a task, but to deeply understand the project's broader business context. I place a high priority on user-centered design, maintaining rigorous quality standards, and directly achieving business goals—ensuring the solutions I build are technically sound and perfectly aligned with the client's vision. This rigorous approach is a hallmark of the development standards at Softaims.
Ultimately, my focus is on delivering measurable impact. I aim to contribute to impactful projects that directly help organizations grow and thrive in today's highly competitive landscape. I look forward to continuing to drive success for clients as a key professional at Softaims.
