Product · Maintenance planning

Being free doesn't mean being able to do the job.

The calendar says there's a slot. Nobody checks that the working-at-height certificate is still valid, or how long each technician really takes to get there. In Maptainer, the system knows who can do the job, when they can do it and how far away they really are. And if someone isn't eligible, it tells you why.

Most systems handle assignment with a calendar and a list of names. Checking that a certification is still valid happens in the team leader's head, or it doesn't happen at all. And on the day it doesn't, what's at stake isn't efficiency.

What stops happening to you

Nobody goes up on a roof with an expired certificate.

The argument here isn't efficiency, it's risk avoided: anyone whose working-at-height certificate has expired shows up as not eligible, with the reason in plain view. It doesn't rely on the planner remembering to check a date, and assigning them anyway is logged as a deliberate decision, not an oversight.

Nor does it simply hide whoever doesn't qualify, which leaves the planner guessing. The engine returns, for each person, whether they are eligible and the specific reason when they aren't: "working-at-height certificate expired on 14/03", "outside shift", "confirmed absence".

When your customer or an inspector asks why that person was sent and not someone else, the answer is on record.

Web application · planning optimiser
Assigning work orders to technicians by skills, availability and proximity
Eligibility engine

Seven checks before it lets you assign.

Resolved in the database, so the result is the same from the web, from the mobile app and from automated processes.

CriterionWhat it checks
SkillsThat the person has the skills marked as mandatory for the task, at the required minimum level.
CertificationsThat the required certifications are valid on the date of the work, not merely on file.
TradesThat the person's trade matches the maintenance type.
Effective shiftThe schedule that actually applies that day, resolved as a cascade over the base shift.
HolidaysHoliday calendar per branch, not a single one for the whole organisation.
AbsencesHolidays, sick leave and one-off exceptions already confirmed.
ProximityA score calculated over a Valhalla driving-time matrix, not straight-line distance.
Skills

You find out a certificate is expiring before it expires.

  • Certifications with dates Every certification carries its expiry date. Expiry tracking warns you before the certificate lapses, not after.
  • Skills with a minimum level A task can require level 3 welding, not just "welding". The level is recorded per person and compared at assignment.
  • Trades The professional classification that defines which maintenance types each person can carry out.
  • Requirements per task Mandatory skills and certifications are defined once, on the task and the maintenance type, not work order by work order.
Availability

Each technician's schedule, as it really is on the day.

Knowing whether someone works on a particular Tuesday isn't a matter of reading a field: it means resolving four layers that overlap. The system does it as a cascade.

  1. Base shift

    The working pattern assigned to the person.

  2. Holidays per branch

    Each branch has its own calendar. A local holiday doesn't stop the whole organisation.

  3. Absences

    Confirmed holidays and sick leave remove the person from the eligible pool.

  4. One-off exceptions

    A schedule change for a specific day overrides everything above.

Proximity

The nearest technician is the one who gets there first, not the closest as the crow flies.

The technician two kilometres away on the other side of the river isn't the nearest: it's a twenty-minute detour to the bridge. A system that ranks by straight-line distance sends the wrong team several times a day, and nobody notices, because the mistake leaves no trace.

Proximity is calculated over a Valhalla origin-destination matrix, which returns real driving time over the road network. Because the routing engine runs inside the installation, calculating large matrices has no per-call cost.

  • Dispatch to the nearest For emergencies: based on staff's last known position, filtered by skills and ranked by real driving time.
  • First available slot The system suggests the first time slot in which a qualified technician is free, instead of leaving you to hunt for it by hand.
  • A schedule that adds up If each job's duration is whatever someone typed in years ago, the day never goes to plan. Here it is resolved using the real historical median when there are enough samples of that type of job, not a fixed value entered once.
Planner

You stop dividing up the workload by eye every morning.

The planner distributes pending work orders across technicians and teams over a horizon of up to 14 days, solved as a single problem: if a work order doesn't fit on one day, it can land on another within the range. It runs on VROOM, a multi-vehicle routing solver, fed with Valhalla's real road travel times. It doesn't allocate by area or in alphabetical order: it solves the problem with the constraints you give it.

Without it, the medium-priority preventive job is always the one that gives up its slot: today there's something more important, tomorrow too, and it ends up overdue without anyone having decided that.

  • Time windows Work orders with a fixed start time or a set deadline.
  • Each resource's shift and schedule Each technician's effective working day, day by day, with their break, their branch's holidays, their confirmed absences and the work already in their schedule, all of which the plan respects.
  • Skills valid for the whole work order Before assigning a work order, the planner checks that the technician's training is valid for the entire period of that work order. If a certification expires before the work order ends, that technician doesn't get it.
  • Real travel times Over the road network, not apparent distance.
  • Balanced distribution Optional and on by default: limits how many work orders each technician receives per day, so the load doesn't always fall on the same people.
  • Deadline pressure When planning, the optimiser adds a boost to each work order's priority based on how close its deadline is. An overdue medium-priority preventive job competes on equal terms with a high-priority one and is placed in the first free slot. It applies when the plan is run and to work orders with a deadline; the priority stored on the work order doesn't change.

The plan is generated as a draft and changes nothing on the work orders until you approve it. When it is applied, the deadline agreed with the customer is never modified. Work orders that don't fit within the range are left unassigned, with the reason.

Views

Four ways of looking at the same workload.

  • By technician Each person's day, which is the view the team leader uses in the morning.
  • Calendar The load per day, with recurring schedules already generated.
  • Kanban By lifecycle status, to move work along visually.
  • List With filters by status, priority, type, customer, sector and assignee.

Frequently asked questions

What happens if nobody is eligible for a work order?
The engine says so explicitly and shows, for each person excluded, which criterion they failed. It's usually an expired certificate or a shift that doesn't cover the time slot. That's actionable information: you know whether you need to renew a certification or move the work order to another day.
Can you override the check and assign anyway?
Manual assignment exists and is the normal route in many operations. What the engine adds is that the block and its reason are logged, so overriding it is a deliberate, traceable decision, not an oversight.
Where does a work order's estimated duration come from?
From the median of the real history of work orders of that same type, when there are enough samples. If there aren't, the duration configured on the maintenance type is used. The difference matters: an estimate inherited from the initial setup stops resembling reality within a few months.
Does the proximity calculation cost anything per query?
No. Valhalla runs inside the installation, so origin-destination matrices don't go through a paid API. That's what makes it viable to calculate the proximity of your entire workforce every time the panel is opened.

Last updated:

Assigning the right person is of little use if the technician reaches the asset without what they need.

Next on the tour: how they set off with the asset record, its documentation and the orthophoto on their phone, and work the full day even with no signal.