CallRoster Pro
Automated call-center scheduling that models weekly rosters as a constraint-optimization problem, honoring staff requests fairly under hard rules.
- Python
- FastAPI
- OR-Tools
- React
- PostgreSQL
- TypeScript
Overview
CallRoster Pro
An intelligent workforce scheduling system that automates call center roster planning using constraint optimization. It replaces manual spreadsheet scheduling with an optimized, fair, and rule-compliant roster generated in a single click.
✨ Key Features
👨💼 Manager Portal
- Configure agents, skills, shifts, and departments
- Define coverage requirements and shift capacities
- Manage leave balances and public holidays
- Generate optimized weekly rosters with one click
- Review, publish, and lock generated schedules
- Import and export rosters using Excel
👤 Agent Portal
- Submit leave requests
- Request preferred off-days
- Apply for shift changes
- Request overtime
- View published schedules from any device
🧠 Optimization Engine
Powered by Google OR-Tools CP-SAT to generate high-quality schedules.
Hard Constraints
These rules are never violated:
- No double-booking of agents
- Guaranteed weekly rest days
- Maximum one shift per day
- Shift capacity limits
- Valid skill-to-shift assignments
Soft Constraints
The solver optimizes for:
- Employee leave and off-day preferences
- Shift change requests
- Overtime preferences
- Balanced workload distribution
- Coverage targets
💡 Key Design Decisions
- Graceful Understaffing: Coverage minimums are modeled as soft constraints using shortfall variables, ensuring a feasible roster is produced even when perfect staffing isn't possible.
- Fairness First: Uses a minimax optimization strategy to distribute denied requests as evenly as possible.
- First-Come, First-Served Tie-Breaking: Applied only after fairness optimization, ensuring request order never overrides a better overall schedule.
- Reusable Solver: Database-independent optimization engine that is unit-tested and shared across roster generation and Excel validation.
🔄 Roster Workflow
Draft ↓ Published ↓ Locked
- Automated scheduling lifecycle
- Friday night roster generation
- Monday morning publication
- Locked rosters prevent accidental modifications
🔒 Security
- JWT-based authentication
- Role-Based Access Control (RBAC)
- Secure API endpoints
- Protected manager and agent dashboards
🛠️ Tech Stack
Backend
- FastAPI
- SQLAlchemy 2.0
- PostgreSQL
- Google OR-Tools (CP-SAT)
Frontend
- React 19
- TypeScript
- TanStack Query
- Progressive Web App (PWA)
Deployment & Infrastructure
- Cloud Run
- Supabase
- Vercel
Additional Tools
- openpyxl (Excel Import/Export)
- JWT Authentication
Interested in something similar?
I'm open to new projects and collaborations — let's build something great together.
Get in touch