Problem
You are staffing AI calling agents for a single day in Pacific Time (PT). Each customer must place a required number of outbound calls to their patients within an allowed time window during that day.
Given a CSV of customer call requirements, build a scheduler that outputs hour-by-hour agent needs:
-
Total agents needed each hour
(across all customers)
-
Agents needed per customer each hour
Assume:
-
One agent can handle
at most one call at a time
.
-
Each call for a customer takes that customer’s
average handle time
(AHT) in minutes.
-
Calls can start at any time within the allowed window.
-
You may choose
when
within the allowed window to place calls (i.e., you can distribute the calls across the window) in order to minimize staffing.
Input CSV (define and support this schema)
Each row represents one customer’s requirements for the day:
-
customer_id
(string)
-
calls_required
(int)
-
avg_handle_time_min
(float)
-
window_start
(HH:MM, 24-hour, PT)
-
window_end
(HH:MM, 24-hour, PT; may be later the same day; you may state how you handle an end earlier than start)
-
Optional:
max_concurrent_calls
(int; if present, you cannot schedule more than this many simultaneous calls for that customer)
Output
Produce an hour-by-hour report for hours 00:00–23:00 PT. For each hour, output:
-
hour_start
(e.g.,
09:00
)
-
agents_total
-
agents_by_customer
(mapping of
customer_id -> agents_needed_that_hour
)
You must provide a CLI demo (required). A tiny UI (optional) can be added for bonus.
Constraints / Expectations
-
Reasonable runtime for up to ~10,000 customers.
-
Clearly document assumptions and rounding rules (e.g., how partial-hour workload turns into integer agents).
-
Prefer a schedule that
minimizes peak agents
(or state a different objective and justify it).