← All case studies

Resource Availability Suite

An in-house workforce-scheduling platform built in 10 weeks against an $800K vendor quote.

Role Lead engineer & architect
Period Nov 2025 – Feb 2026
Headline $284K–$310K modeled / yr · $760K vs. external quote
Stack Web backend + REST API · MySQL · Azure AD OAuth2 + Microsoft Graph · jQuery / Bootstrap 5 · RFC 5545 (RRULE) recurrence engine · ADMS / CAD integration · Kubernetes

Problem

Grid Operations personnel scheduling at OG&E lived across five to seven fragmented sources: paper rosters, spreadsheets, supervisor email threads, contact lists, ad-hoc text messages. DSOs lost five to seven minutes per dispatch checking multiple sources before they could reach the right field crew. Supervisors processed 75 to 105 emails per week on coverage and on-call changes. The legacy on-call system had no audit trail, no automated conflict detection, and no way to surface coverage gaps before they became operational incidents.

A vendor had quoted $800K to build a replacement.

Approach

Build a single enterprise system inside OG&E’s existing platform stack — Azure AD for identity, ADMS for the operational network model, CAD for the field ticketing system. Design around four pillars: instant availability lookup, automated conflict resolution, complete audit history, and decentralized self-service data entry with centralized visibility.

The engineering approach was end-to-end: a single integrated design holding architecture, conflict-resolution algorithm, RFC 5545 recurrence engine, database schema, UI, testing, and the Azure AD / ADMS integration as one consistent system. Algorithm semantics, database constraints, and UI affordances stayed internally aligned from the first commit — which matters when conflict resolution has to be reversible and the audit trail has to be exhaustive.

What I Built

Two integrated calendar applications — an On-Call Calendar (five tables: events, recurrence rules, exceptions, audit, notifications) and a Leave Calendar (two tables: events, audit) sharing a single employee directory and configuration layer.

A four-strategy conflict-resolution algorithm. When leave is approved on a day that already has an on-call assignment, the system automatically reshapes the on-call schedule using one of four strategies:

  • DELETE — the on-call assignment is fully inside the leave; drop it.
  • SPLIT — leave is inside an on-call assignment; split the on-call into two pieces around the leave.
  • TRIM_START — leave overlaps the start of on-call; trim the start.
  • TRIM_END — leave overlaps the end; trim the end.

Every change is logged with a full pre-state snapshot. If the leave is later deleted, the on-call assignments are reconstructed from the snapshots and restored to their original state.

An RFC 5545 RRULE-based recurrence engine. Supports weekly, bi-weekly, and monthly patterns (“every Monday and Wednesday”, “first Friday of each month”, etc.) — the same standard iCalendar uses, so the patterns travel cleanly between systems.

Azure AD OAuth2 + Microsoft Graph integration with three-tier authorization: department-level access, user-level grants, and superadmin. The Azure AD user directory is the source of truth for who exists in the org; the local database adds operational metadata.

Complete audit log with daily snapshots for compliance reporting.

Results

Modeled annual savings, with the methodology documented in the project’s internal executive summary:

CategoryHours/year savedAnnual $
DSO dispatch time1,906 hrs$85,770
Supervisor email & list management2,340 hrs$128,700
Field personnel notifications867 hrs$43,350
Avoided wrong-dispatch incidentsVariable$26,000–$52,000
Total4,549 hrs$284,000–$310,000

Other documented outcomes:

  • Dispatch decision time: 5–7 min → 30 sec (91% faster)
  • Wrong-dispatch reduction: 90%
  • System availability: 99.9%
  • Coverage emails replaced: 75–105 per week → zero
  • List-maintenance overhead: 15+ hrs/week → zero
  • External SI quote for same scope: $800K
  • Internal delivery: 10 weeks at roughly $40K — about $760K in avoided capital spend
  • 5-year modeled cumulative value: $1.42M – $1.55M

The numbers are modeled, not measured post-deployment. The model is grounded in observed before-state data (the email volumes, dispatch times, and list-maintenance hours were all measured before rollout). The savings are the result of removing that work.

Stack notes

The architectural choice that mattered most was building inside Nighthawk — the in-house operations platform — rather than as a separate app. Off-the-shelf scheduling tools don’t speak Azure AD, ADMS, and CAD natively; every vendor proposal baked months of integration work into the price. Sitting inside Nighthawk meant the integrations were already there.

The second most important choice was modeling conflict-resolution as a deterministic algorithm with full reversibility rather than as a flag-for-human-review workflow. Workforce scheduling at a utility is high-volume and routine; automating the routine cases while preserving full undo is a much better fit than asking a supervisor to resolve every overlap by hand.

Selected Screens

Some specifics are abstracted for confidentiality. Happy to go deeper on the technical approach, the failure modes we worked through, or the operational outcomes — jose@macias-tech.com.