Vertex AI Dispatch and Route Planner

Vertex is an AI route planner that can assign your whole day's call schedule at once, finding the lowest-cost solution given your available shifts.

Vertex.medium

Exclusive

Vertex is a bespoke AI, designed and built exclusively for AngelTrack.

It is not an LLM such as ChatGPT. Rather it is a "traveling salesman" solver, similar to what Fedex uses to choose the routing of their deliveries.

Vertex belongs to AngelTrack LLC, and so competing EMS or fire apps do not have access to it.

Configuration

Follow these steps to configure Vertex:

  1. Login to AngelTrack with Dispatcher or Administrator privileges.
  2. Go to the Settings page and select the Service Levels Configuration item.
  3. Scroll down and click the link to the Service Costs Configuration.
  4. AngelTrack will display the costing chart, which controls the AI's decisions when planning the lowest-cost route. By adjusting these costs, you can prioritize mileage or time, and you can adjust its willingness to use higher-level units to cover lower-level calls. At first, try using the defaults, but now you know where to look to adjust its decisions.
  5. Ensure you have a license for Vertex, by visiting the Authorization page and clicking on the "Feature selection" item to review the Feature Buffet. (You can take a Test Drive before you have a license.)

Add-On License Required / Free Test Drive

Vertex is not included in your base AngelTrack license; rather it is an add-on which costs extra. To learn more, refer to the Feature Buffet Guide.

Without a license, you can still take Vertex on a test drive. You get one free solve per day, to use however you wish.

Capabilities and Limitations

Vertex supports all of the following:

  • Shift capabilities and shift capability overrides;
  • Scheduled shifts aka dispatch preassignments;
  • Round-trip calls where the two legs are run by different shifts;
  • Wait-and-return calls (assumed to be 1 hour spent at destination);
  • Double-loading, triple-loading, and quadruple-loading of wheelchair vans and car services;
  • Daisy chains (pickup pickup dropoff pickup dropoff dropoff)
  • Catch-and-release calls i.e. no transport;
  • Use of higher-level units (BLS, ALS) to run lower-level calls (WC, car);
  • Labs calls and telemedicine calls; 
  • Fire service levels;
  • Shifts held in reserve aka surge units;
  • Keeping shifts past their planned end time to help with an overloaded schedule;
  • Standby events (assumed to be 3 hours long);
  • Well-person checks (assumed to be 1 hour long);
  • The cost of idle time and of slack mileage;
  • Back-logs of waiting calls up to six hours old; and
  • User-configurable variable costing for each service level.

Vertex does NOT support any of the following:

  • Trips that run across midnight, i.e. Vertex solves one full calendar day at a time;
  • Aircraft and watercraft;
  • Mass-casualty events, evacuations, and disasters;
  • More than seven simultaneous patients/riders in a vehicle;
  • Very long trips to or from a state not in your region (see the Regions section below);
  • Shift qualification check overrides, i.e. a dispatcher can override a shift's capabilities during scheduling, but apart from that, Vertex cannot assign calls to unqualified shifts;
  • Shifts and scheduled shifts whose duration is less than one hour;
  • Shifts with 15 minutes or less remaining on their scheduled time period*;
  • Multiple responders to one call;
  • "Last in / First out" convenience for double- and triple-loaded wheelchair vans;
  • Lift assists needed by additional responders;
  • Special patient requirement flags like "Requires ECG", "Requires ventilator", "Requires isolation", and so forth, such requirements must be encapsulated within the service level requested; 
  • Will-call trips;
  • Delegation to affiliates (see discussion below); 
  • Badly overloaded schedules (see discussion below);
  • Preassignment to future recurrences** of a recurring dispatch; and
  • Patient affinities for specific crews, where one particular crew always takes care of a certain patient on certain days of the week... Vertex does not honor such preferences, instead it will always plan a route that minimizes quantifiable costs.

*The 15-minute limitation means that you cannot use Vertex if you keep your shift records open for weeks at a time. Vertex requires your shift records to have tidy start- and end-times so that it knows how much time each crew has on-duty.

**On the topic of recurring dispatches, please see the discussion below regarding Tomorrow Solves.

Vertex is a CPU-intensive AI, and it is shared between all AngelTrack customers, so your Vertex license confers a maximum of twenty solves per hour.

Also note, Vertex can only work with shifts that are already booked -- either active or scheduled. This means, if you want to use Vertex first thing in the morning to assign the entire day's calls, all shifts planned for the day must already be booked as active or scheduled. This will require you to use the Crew Scheduler, but don't worry, it's an extension of the Shifts system and so will be easy to learn.

"Garbage In, Garbage Out"

Vertex depends on accurate records for shifts, vehicles, and dispatches.

For shifts, their records must have accurate start times, end times, and capabilities. A crew's capabilities can be overridden in its shift record, but not on a call-by-call basis, as your dispatchers might be accustomed to doing.

For vehicles, their records must have accurate service capabilities and patient capacity:

  • Ambulances should be marked "Patient capacity = 1" unless they really do carry two stretchers at all times. Your ambulances might have set of auxiliary stretcher anchor points on their walls, to carry a second stretcher in a mass-casualty / disaster situation, but do not mark them as "Patient capacity = 2" or else Vertex will try to assign two simultaneous stretcher transports.
  • Wheelchair vans should be marked "Patient capacity = 1" unless they have two sets of anchor points and two sets of straps on board. If they have three sets, then you can mark them as "Patient capacity = 3" and Vertex will take advantage of that, however it will not try to arrange the convenience of "last in / first out".
  • Fire vehicles should be marked "Patient capacity = 0" and be designated capable of "First responder" but not wheelchair transport, gurney van transport, or BLS+ transport.

For dispatches, each record must have either of the following:

  • A specific pickup time that occurs during the selected date*; or
  • An accurate activation time.

These are used to plan arrival times, and so the efficiency of the plan depends on the accuracy of those fields. If you do not use the activation time field to store the "time to roll", then you must ensure that all calls have an accurate pickup time.

*Note that a certain common dispatcher error can cause Vertex to ignore a trip. If, for example, a dispatcher books a call to activate at 14:30 for a pickup at 14:00, AngelTrack will interpret the 14:00 pickup time as occurring the next day, i.e. after midnight. Vertex will therefore ignore the call, leaving it for a dispatcher to assign manually or to fix and then re-solve.

Regions / Transports Across State Lines

Vertex divides the United States into regions:

AngelRoutesRegionMap.600x400

You can see that some very large US states are regions unto themselves -- Texas, Florida, California, New York, and Michigan. Other states are smaller and thus form a region with their neighboring states.

Vertex can solve all trips -- both transports and non-transports alike -- that occur within a region. It cannot solve a trip that crosses into a different region.

Therefore, depending on where you live, it may be able to solve interstate transports, or it may exclude them (leaving them to your dispatcher to assign manually).

This limitation exists for performance reasons. By loading the Vertex routing engine with just one region at a time, it can solve your dispatch board in 1/20th of the time as would be needed by a planetary solver -- which means you can get a solution in five or ten or twenty seconds, instead of waiting ten minutes for it. Since nearly all AngelTrack agencies perform nearly all of their work intrastate, we think this is a good tradeoff.

Puerto Rico

Puerto Rico is supported. Incidentally it is included in the Alaska + Hawaii region, however Vertex cannot solve for any ferry trips into or out of Puerto Rico, Alaska, or Hawaii.

Australia and Mexico

Our beloved customers in Australia and Mexico each reside in a single nationwide region, and so Vertex supports interstate / interprovince transports anywhere within their country.

Reviewing a Solution / Before Commit

After a solution returns, Vertex will present you with two different ways of looking at it:

On the "Map" view, you can move the time-slider at the bottom to animate all vehicle movements throughout the day, and you can also select any particular shift from the list at left to zoom in on its activities.

On the "Tabular" view, you can see the solution rendered in the familiar style of the Today Bar, showing each shift's assignments throughout the day as colored blocks.

The solver will leave unassigned any calls that it can't fit into the available shifts. Ineligible trips (see the Capabilities and Limitations section above) do not appear in the solution and so must be assigned manually.

The solver will try to use as few crews as possible, so it might leave some shifts with zero calls to run. You will also see it frequently assign wheelchair calls to BLS+ units, if that is cheaper than sending a wheelchair van. You can adjust these behaviors by returning to the Service Costs Configuration page.

After reviewing a solution generated for 'Today', for 'Tomorrow', or for a future date, you have the option to commit it. See below for further discussion.

Committing a Solution / Saving the Route Plan

If your generated solution is for 'Today', for 'Tomorrow', or for a future date, then you have the option to commit it, saving the entire plan to your dispatch board.

This might entail a complete rearrangement of existing call assignments, if you've already got your day planned out. However, Vertex will not touch any call where the assigned crew has already gone enroute, and so committing your solution will not cause any confusion among your crews, except where they might've already looked over their day's assignments.

To commit the solution, open the Route Statistics Tab that appears in the lower-right corner of the Vertex page, and click the Commit button. It will save each trip's new assignment, which will then appear on your dispatch board.

There are two common errors that might occur when committing a solution, if you spent some time reviewing it before you commit such that it might've become stale:

  • A scheduled shift chosen for a call might've already activated and so is no longer available for preassignment; or
  • An active shift chosen for a call might've already ended, or been re-composed (and therefore possibly got different capabilities), and so is longer available for assignment.

In either case, only part of your solution will have been saved. You will be prompted to re-solve for the day and try again.

Last-Minute Options

As discussed further below, the Vertex Configuration page (under Settings) allows you to permanently change the priorities and costings that Vertex uses when solving your call schedule.

When performing a Full-Day Solve or a Mid-Day Solve on the Vertex page, some of the costing adjustments appear as sliders, which you can temporarily adjustment as necessary. Your changes to the sliders will not apply once you leave the Vertex page; to permanently change the adjustments, please visit the Vertex Configuration page.

Mid-Day Solves

You can ask Vertex to re-solve today's remaining call schedule in the middle of the day, if you like.

When it does so, Vertex will ignore trips for which all of the following are true:

  • The trip has activated;
  • The trip is assigned to an active shift (not to a scheduled shift); and
  • The assigned shift has already marked themselves 'enroute'.

It will also ignore trips for which any of the following are true:

  • The trip has become will-call; or
  • The trip is already delegated to an affiliate, even if that affiliate has not yet gone enroute.

During the re-solve, Vertex will try to fit the remaining call schedule into the remaining shifts, in the usual manner. It might rearrange the entire call schedule that it arranged earlier, if it sees a way to save money. If it can't fit everything together, it will leave some calls unassigned.

Mid-day solves utilize your default settings for Rush Hour Pad, Recovery Pad, and Flag Late After, which you can adjust by visiting the Preferences page under Settings.

Tomorrow Solves / Tomorrow Coverage Checks

You can solve and commit your call schedule for tomorrow, at any point in time today, rather than waiting until tomorrow morning to do it.

However, this task should be done at the very end of the day, as late as possible, for these reasons:

  • It allows last-minute calls and cancellations to get onto the schedule before solving; and
  • It allows any daily-recurring trips activating today to finish and then recur onto tomorrow's schedule, which is necessary because Vertex cannot assign a crew to a future recurrence of a dispatch. (Thankfully, daily-recurring calls are rare in our industry, so this limitation probably will not bother you.)

Of course you can always re-solve whenever you like.

For example, late this evening you could solve tomorrow's schedule, to satisfy yourself that you'll have adequate coverage, and perhaps call up additional units; you don't need to commit the solution yet, not unless tomorrow's shifts are all on the schedule and you want their crews to be able to review tomorrow's plan in advance. Then, first thing tomorrow morning, re-solve and commit, to pick up any calls or cancellations that came in during the night.

Delegation to Affiliates

As noted above, Vertex never decides to delegate trips to an affiliate.

If Vertex cannot fit your whole call schedule into the available shifts, it will hold some shifts late, or leave some calls unassigned. A dispatcher must review these leftovers and either fit them into the call schedule, or reschedule them, or call up additional crews, or delegate the calls to an affiliate.

When performing a mid-day solve, Vertex will ignore any call already delegated to an affiliate. Such calls will remain delegated, or you can manually reassign them if Vertex is able to free up a time window in the call schedule.

Overloaded Schedules

If your schedule is overloaded, you will see Vertex do any or all of the following to cope:

  • Late pickups, which on the tabular view will blink to indicate lateness; rapid blinking indicates they will be late by more than twice the lateness threshold.
  • Shifts held past their scheduled off-time, which on the tabular view likewise blink slowly or rapidly to indicate they will be kept late.
  • Calls left unassigned.

Vertex cannot propose to activate a shift earlier than scheduled. If you see Vertex struggling to solve your schedule, you must adjust your shifts' start times yourself, then solve again, and if it works better, then phone the crew members and ask them to come early.

Nor can Vertex propose to activate individual dispatches earlier than scheduled; it can only propose to pick them up late, as necessary.

If your schedule is badly overloaded then Vertex will be unable to achieve any satisfactory solution; indeed its solutions will become unstable, and change wildly minute by minute. In that situation we recommend delegating a couple of calls to an affiliate, or summoning another shift or two, before relying on Vertex to solve the schedule.

Costing Adjustments

The Vertex Configuration page, under Settings, allows you control of Vertex's behavior.

The page offers various adjustments, in the form of sliders. Here are what the adjustment sliders do:

  • Flag late after: Adjust this number of minutes to determine when the Map view and Tabular view will highlight a pickup or dropoff that is going to be late. The Map view will indicate late arrivals by bouncing the map pins, while the Tabular view will indicate late arrivals by slowly blinking the trip blocks. The Tabular view will blink a trip block quickly, rather than slowly, if either its pickup or dropoff is going to be late by twice the number of minutes you set. (You can change the default value of this setting by visiting the Preferences page under Settings.)
  • Recovery pad: Adjust this number of minutes to give a bit of extra time to each crew after the normal time allotted for dropoffs. On the Service Costs Configuration page you can set the normal dropoff delays for each service level, but the recovery pad lets you experiment with giving a bit of extra time to every call. You might try to squeeze in as many extra recovery minutes as possible while still covering all your calls in a satisfactory way. (You can change the default value of this setting by visiting the Preferences page under Settings.)
  • Rush hour pad: Adjust this number of minutes to give extra time for any call whose pickup occurs between 07:00 and 09:59, or between 16:00 and 18:59. Use this option when Vertex's live traffic data does not include good coverage of your service area, causing it to allocate more calls to your crews than they can complete during rush hour. (You can change the default value of this setting by visiting the Preferences page under Settings.)
  • Pickup / dropoff lateness cost: Adjust these cost sliders to prioritize on-time pickups and/or dropoffs against the normal cost schedule, if you are under pressure to be on-time and are therefore willing to spend some extra time, mileage, and/or crews to accomplish it.
  • On-call cost: This is a multiplier for how much more expensive -- per minute -- is it to use a shift that was marked 'on call'. The default is 150%.

The adjustment sliders apply to all Vertex solves, though you can temporarily readjust them when performing a Full-Day Solve or Mid-Day Solve.

Per Service-Level Detailed Costing

Also on the Vertex Configuration page, under settings, is the per-service-level costing grid.

The grid specifies the detailed cost of the various service levels of your units, according to each shift's highest capability. For example, a BLS shift might have car, gurney, wheelchair, first responder, and BLS transport capabilities, but it will be costed according to its highest capability which is BLS transport. It also has longer pickup and dropoff delays than, say, a wheelchair van.

Here are the functions of the columns in the costing chart:

  • Cost Per Mile Driven: This is the marginal cost for every mile the vehicle drives, reflecting the cost of fuel, maintenance, repairs, and any per-mile insurance. AngelTrack's various fleet cost reports can help you adjust this column.
  • Cost Per Hour Waiting: This is the hourly cost of crewing the vehicle while it's sitting at the station ready to respond, and also the cost of waiting at the destination during a wait-and-return call.
  • Cost Per Hour Servicing: This is the hourly cost of crewing the vehicle while on-scene or at destination. Normally this is the same as the Cost Per Hour Waiting, but you can increase it to reflect the approximate marginal cost of liability, exposures, and accidents during patient contact.
  • Cost Per Hour Transporting: This is the hourly cost of crewing the vehicle while transporting a patient. Normally this is the same as the Cost Per Hour Waiting, but you can increase it to reflect the approximate marginal cost of the risk of traffic accidents.
  • Average Pickup Delay Minutes: This is the typical number of minutes spent on-scene for a call of the specified service level. The values in this column were pre-set for you using statistical data drawn from all AngelTrack customers, so you may need to adjust it if your caseload is different from the national average.
  • Average Dropoff Delay Minutes: Same as above, but for the number of minutes spent dropping off at destination.

Surge Units / Excluding Shifts Held in Reserve

You already have a lot of ways to put your thumb on the scales, regarding Vertex's choice of units. For example, you can adjust the costing so that Vertex tries to avoid using your higher-level units wherever possible.,

To entirely exempt certain shifts from Vertex, so that they are kept available as surge units, then set the shifts' "Primary role" datafield to "Surge / Reserve responder".

You can do the same thing with scheduled shifts.

When using Vertex to analyze historical data, you have the option to include your surge units, since they would've been used as needed on that date.

Work-Ins / Quick Schedule Checks

Vertex.small.redWith a customer still on the phone, Vertex can show you how a new trip will affect the day's call schedule.

It can do this for any future date when you've got your shifts already scheduled, or for the current day where you've still got active or scheduled shifts. In other words, this feature requires you to have at least one shift already active or booked on the proposed date.

To perform this check, fill out the trip form first with the pickup and dropoff address (if any), service level, and dates and times, then click the Vertex icon that appears on a side-tab at the bottom-right corner of the Dispatch Create page. 

To learn more about Vertex's work-in solver, please visit the Vertex Work-In Solver Guide.

Quick Schedule Visualizer

Vertex.smallIf you like the way Vertex animates the map of the work day, or the way it renders your trip assignments using the colored bars, you can use that to view your current call schedule, without performing any solve or making any changes.

To do this, find and click the blue Vertex icon in the bottom-right corner of the dispatch board.

Dispatch Assignment Suggester

Vertex.small.greenIf you use next-up dispatching, Vertex can still provide advice. On the Dispatch Assignment page, find and click the Vertex icon at the bottom-right corner. Vertex will perform a Mid-Day Solve of whatever remains of your call schedule, and then tell you which shift it would use for the call.

To learn more, please visit the Vertex AI Suggester Guide.

Running Analytics Against Historical Data

Vertex can re-solve past dates, comparing its solutions to the actual performance of your dispatch office.

To learn more, please visit the Vertex Analytics Guide.

Throttle / Hourly Solve Limit

Vertex is an AI running in a dedicated cluster where it is shared by all AngelTrack customers. Solves are CPU-intensive and so each customer has an hourly limit on the number of solutions that can be requested. When you reach your limit, Vertex will issue a warning and ask you to wait a while before submitting more requests.

Once Vertex matures and its population of users stabilizes, we will adjust its hardware resources and the hourly solve limit in order to provide the greatest value to the greatest number of users.

Frequently Asked Questions

All frequently-asked questions are listed in the Vertex FAQ.