AI for Scheduling in Telecom
At twenty past eight an engineer is parked at the end of a street he cannot get the van down. The job pack says fault, no service, two hour allowance, single operative, and a note copied from a call three days ago: customer says internet stopped working Tuesday. What is wrong is a blocked duct between the footway chamber and the property. Two person job, permit for the footway, traffic management, probably a dig. He is on site eleven minutes, the visit closes as not completed, and the customer, who booked the morning off, is offered another slot in nine days.
No optimiser made that mistake. The schedule arranged the jobs as they were described, and the description was wrong before anyone looked at a map.
The job type is guessed on a phone call and never revisited
An appointment is created by an advisor with a customer on the line, a diagnostic saying the line is down somewhere, and a dropdown of job codes. The code picked in that moment sets the duration allowance, the skill requirement, the crew size, the parts and the slot length. It is a guess by someone who has never seen the property, and it is wrong in five directions at once: wrong engineer, too little time, no second pair of hands, missing kit, and a window promised against work that cannot start for a fortnight.
So the first job for an agent is to re-derive the likely job type before dispatch, from evidence the advisor never had: line test history, network events on that node, the last two visits to the address, whether the premises is a conversion flat on a shared duct. Produce a most likely type with the reason, and reclassify before the van is allocated rather than on the doorstep.
Two engineers with the same job title are not interchangeable
Field systems hold one skill code per person and the real constraint set is finer. Working at height and pole top rescue. Confined space and chamber entry. A street works card at operative or supervisor level, which decides who signs for the excavation. Fibre splicing, a different competence from copper jointing, held by part of the patch. Power work in a cabinet, asbestos awareness for older duct routes, a vehicle category for the tower wagon.
Kit is treated as an afterthought and behaves like a hard constraint: a splicer and an OTDR, a ladder long enough for that pole, van stock of terminals, routers and drop cable in the right variant. Cards expire, medicals expire, contractors arrive with paperwork verified once. Reconciling training records, card expiry and last night's van stock into one picture of who can do what tomorrow is tractable, as is flagging every expiry inside the planning horizon.
The window has a price on it
An appointment slot is a commitment with money attached. In several markets a missed appointment or late cancellation carries an automatic payment to the customer, and on business circuits the service level agreement turns delay into credits. Neither waits for a complaint; both are triggered by the record.
So the appointment record is an operational artefact: cancelled or not, by whom, with how much notice, arrived inside the window or not. A dispatcher moving a job at four to rescue the rest of the day is making a financial decision without knowing it, because the cost surfaces two months later in another team's report. An agent touching appointments needs that as a gate: this slot moves at no cost, this one pays out unless the customer asks for the change.
Wayleaves, permits and the landlord who holds the key
Much of this work is gated long before anyone thinks about vans. A wayleave to cross third party land, with notice periods and conditions in the deed. A managing agent who grants riser access on Thursdays and wants a method statement first. A street works permit with a validity window, a traffic management grade and a charge for overrunning, plus the lights or closure that grade requires.
The permit reference sits in a street works system the planner never opens and the landlord agreement sits in an attachment, so the booking is made against the engineer calendar, which looks clear, not the permission calendar, which does not exist. Watching the gap between a permit's valid dates and the appointment on the same job is monitoring nobody does, and the drift is found on the morning of, by the person who has driven there.
The second visit belongs to a team in a different system
Plenty of work is a sequence rather than a visit: survey, civils to clear the duct or plant the pole, then install and commission. The customer sees one order with one date, while the civils stage sits with a subcontractor running its own scheduling on a weekly plan expressed as gangs per area.
That dependency is held in nobody's calendar, so the failure is predictable. The install is booked against an optimistic civils date, the engineer attends, the duct is still blocked, the job closes as not ready, and the customer goes to the back of the queue. The restraint is the valuable part: do not release the install appointment until there is evidence the civils work completed, then book it within hours of the completion note landing rather than at the next weekly planning cycle.
Planned works are scheduled against people who did not ask to be involved
Network build, node splits, cabinet rearrangement, copper migrations, exchange power maintenance. The question is not which engineer but which window, and the window is defined by whoever loses service while the work happens.
So you need who sits behind the affected element, which are business circuits with a contracted maintenance window, which have resilient routing and which only believe they do, which households carry a priority services flag, and what notice each is owed. Embargoes belong in the same picture: a city centre event, a retailer's freeze through December, an exam period in a student area. That information exists, spread across inventory, the customer base, contract documents and the memory of one person who has been there fifteen years.
The work that can only happen between midnight and five
Some jobs are nocturnal: hot cuts, splicing on live traffic, power work on exchange plant. Rest periods remove the same engineer from tomorrow morning's appointments. Access is escorted where the keyholder is a third party with their own hours. There is a rollback point partway through, after which the only safe action is to back the change out and try another night.
The cost that goes missing is the second day, because committing four engineers to a night job removes their appointment capacity from the following morning, and the tool that books the night rarely tells the tool that books the day.
Capacity bought by the day, visible as a single number
Subcontract labour is often the swing capacity and it appears in the plan as an aggregate: nine jobs in these postcodes on Tuesday, four gangs next week. Not named people with accreditations, locations and van stock.
The planner therefore holds two incompatible models at once. You cannot sequence a partner's day, check competence per person or learn durations by individual, and when a job returns unfinished the reason arrives as free text. Normalising that daily declaration into the same object as your own capacity, then comparing promised against completed, tells you which job types each partner finishes first time and how much of Tuesday's number is real.
No access at half nine, and what the next ninety minutes are worth
Nobody in. Gate locked. Entry phone broken on a block of twelve. The customer at work because the confirmation text went to an old number. The travel is spent, so the only live question is the next ninety minutes.
Three things should happen at once and usually none happen fast enough: reach the customer while the engineer is still outside, offer a replacement slot that honours the constraints on the original booking rather than the first gap in the diary, and find the standby job held in that area for exactly this, matching the engineer's accreditations and van stock. The no access note decides whether compensation is owed and whether a repeat visit is chargeable, and it is six words written at the end of a long day.
What has to be true before a job is safe to put in a slot
A schedulable job is a short list of settled facts. Job type derived from evidence rather than chosen from a menu. Duration from your own completion history for that work at that kind of address. The accreditation set and the kit list. Access recorded as who holds the key and a phone number somebody checked. Permit and traffic management status with a reference and valid dates. Any upstream dependency closed, with evidence.
Almost all of that currently exists as prose, in survey notes, photographs, an email from a managing agent, the last engineer's closing comment. Turning it into fields is the work, and the capacity plan for next Tuesday is only as good as the job packs behind it.
Solvers are fine, their inputs are not
Route and appointment optimisers solve a well posed problem properly: jobs with durations, locations, windows and skills, engineers with shifts and start points, minimise travel and respect the constraints. If you have one, keep it. The trouble is the question handed to it: duration from a task library that knows nothing about this street, a skill requirement from a job code that was a guess, an access condition in an email, a permit that lapsed.
So write the commit boundary down before go live. An agent may reclassify jobs, propose assignments, book inside published windows where every constraint is satisfied, send confirmations from approved templates and write status back to the workforce system and the engineer's device. Without a named person it may not dispatch against incomplete safety documentation, commit a window on a job whose permit is unconfirmed, alter a planned outage or relax an accreditation requirement.
Where AI fails here
It does not create engineers. If you are short of accredited splicers in one region, better scheduling describes the shortage precisely and leaves it where it was. Nor can it make a managing agent answer the phone, a council issue a permit faster or a civils gang turn up, and those bind a large share of this work.
Duration is heavy tailed and the long tail ruins the day. An estimate good on average is badly wrong on the underground fault that turns into a collapsed duct.
There is a sharper trap inside reclassification. Train on job types as recorded and you inherit the miscoding you set out to fix, because the code is usually copied from the booking rather than corrected at completion. The labels are part of the bug, so use what the engineer actually did, in parts consumed, time on site and closure notes.
Safety judgement is not a scheduling input. Whether conditions at a chamber or a pole permit work belongs to the person standing there, and a tight plan quietly argues for pressing on.
Then the failure that reads like competence: a message telling a customer the engineer is on the way, sent four minutes after that engineer was pulled onto an emergency. Bind every customer message to the state at the moment of sending.
Where to start
Take one narrow scope. Job type and duration re-derivation at the point of dispatch, run in shadow for a quarter, every prediction compared against what the engineer actually found, seen by nobody but the planners. It reaches no customer and it attacks what causes the failures rather than what looks broken.
Then add no access recovery and same day rebooking, both exception handling with a verifiable right answer. Leave planned outage scheduling, night works sequencing and anything that commits a window against an unconfirmed permit alone until the first two have survived a bad week in January. Measure first visit fix and appointments kept, not jobs dispatched, and report how often the job type at completion matches the job type booked.
If your Tuesday plan is assembled from a workforce system, a permit inbox, a partner's capacity email and one planner who knows which jobs are lying, describe it to Adopt AI Partners at hello@adoptaipartners.com and we will say plainly which parts an agent should carry and which it should not.