Most modules record.
These two decide.
One works out the order a driver should actually drive in. The other works out the day you have to have ordered by. Both of them run on the records every other module is already writing.
Available in Texas only today
Your own routing engine,
not somebody else's API.
The engine is ours, not a metered call out to somebody else's map service. There is no per-request bill, no monthly quota to blow through in December, and no list of your customers' addresses handed to a third party to come back as a line on a map.
OSRM is the open-source engine that holds the road network. It is built from an OpenStreetMap extract, and what it answers is driving time from any stop to any other over actual roads — not how far apart two pins are in a straight line. We run our own instance of it. The layer above it, the one that decides which driver takes which stop, in which order and in which vehicle, is ours, and it is what the rest of this section is about.
Available in Texas only today. The engine plans against a Texas OpenStreetMap extract that we host, so a second region is a second extract and a rebuild rather than a second product.
The drivers you have today
Who is working, when their shift starts and ends, where they set out from and how long a stop takes them. Not an average driver on an average day.
The vehicles you have today
What each one can carry and how much of it is already spoken for. A load the van cannot take is not a load the van gets offered, and nobody has to remember that it shouldn't be.
The windows you already promised
The slot the customer was given goes into the solve as one of the things it has to satisfy, rather than into the order as a note somebody has to notice.
| Driver | Vehicle | Stop | Drive to this stop | Promised window | Planned arrival |
|---|---|---|---|---|---|
| M. Alvarez (shift 07:00 to 15:00) | Transit 350 · 1,800 lb | Round Rock | 18 minutes from the depot | 08:00 to 10:00 | 08:20 |
| M. Alvarez (shift 07:00 to 15:00) | Transit 350 · 1,800 lb | Pflugerville | 22 minutes from the previous stop | 09:00 to 12:00 | 09:22 |
| M. Alvarez (shift 07:00 to 15:00) | Transit 350 · 1,800 lb | Georgetown | 26 minutes from the previous stop | 11:00 to 11:30, the binding window | 11:12 |
| M. Alvarez (shift 07:00 to 15:00) | Transit 350 · 1,800 lb | Hutto | 21 minutes from the previous stop | 09:00 to 15:00 | 12:20 |
| D. Whitcomb (shift 08:00 to 17:00) | F-450 flatbed · 5,200 lb | Cedar Park | 31 minutes from the depot | 09:00 to 13:00 | 09:40 |
| D. Whitcomb (shift 08:00 to 17:00) | F-450 flatbed · 5,200 lb | Leander (2,900 lb · flatbed only) | 17 minutes from the previous stop | 11:00 to 12:00 | 11:15 |
| D. Whitcomb (shift 08:00 to 17:00) | F-450 flatbed · 5,200 lb | Marble Falls, added to the board at 10:20 | 48 minutes from the previous stop | 12:00 to 14:00 | 13:05 |
| D. Whitcomb (shift 08:00 to 17:00) | F-450 flatbed · 5,200 lb | Burnet | 29 minutes from the previous stop | 14:00 to 16:00 | 14:20 |
A model of your business.
Trained on your business.
Not a template with your logo on it. It learns the shape of your year out of the records your own modules have been writing all along, and out of whatever else you decide belongs in there.
Sales, rental contracts, appointments, stock counts and delivery volume are already in your instance, so the model starts with them and nobody uploads a thing. What it reads beyond that is yours to decide: the weather, the events calendar that empties your town for a weekend, the term dates that fill it again. If your business knows a number moves your numbers, that number can go in — and come back out again when it turns out not to.
A projection, the band it is working inside, and a date. It does not decide what to buy and it does not place the order — you do, and the projection shows you how wide the gap it is guessing across has got.
| Signal | Source | Weeks of history | Read by the model |
|---|---|---|---|
| Sales orders | Storefront | 104 | Yes |
| Rental contracts | Rentals | 104 | Yes |
| Stock counts | Inventory | 104 | Yes |
| Appointments | Bookings | 96 | Yes |
| Delivery volume | Deliveries | 38 | Yes |
| Daily high temperature | Added by this business | 104 | Yes |
| Local event calendar | Added by this business | 62 | Yes |
| Campus term dates | Added by this business | 40 | Yes |
| Diesel price | Added by this business | 12 | No, switched off |
A year has a shape, and it is rarely the one on the wall planner. This is the one the records describe — what the business actually took, month by month, against its own average — and the useful half of it is not the peak everybody already knows about.
| Month | Contracts completed over two years | Multiple of the average month | Season |
|---|---|---|---|
| January | 468 | 0.72 | None |
| February | 429 | 0.66 | None |
| March | 663 | 1.02 | Formal season, declared |
| April | 910 | 1.40 | Formal season, declared |
| May | 968 | 1.49 | Formal season, declared |
| June | 715 | 1.10 | Formal season, declared |
| July | 286 | 0.44 | Nobody's season, derived rather than declared |
| August | 332 | 0.51 | Nobody's season, derived rather than declared |
| September | 832 | 1.28 | Festivals, declared |
| October | 845 | 1.30 | Festivals, declared |
| November | 559 | 0.86 | None |
| December | 793 | 1.22 | Parties, declared |
| Average month | 650 | 1.00 | The baseline every month is read against |
And then it hands you
a week to order in.
Not a chart to interpret. A list in the order you have to act on it, a day rate the season points at, and the one thing a forecast cannot fix — a supplier slower than the threshold that was set for it.
| Rank | SKU | Item | Counted, W31 to W35 | Projected, W36 to W40 | Run rate a week | Reorder point | Weeks of cover | Order by |
|---|---|---|---|---|---|---|---|---|
| 1 | NN-4185 | Cable Ramp 4ch | 72, 60, 49, 34, 22 | 14, 6, 0, 0, 0 | 8 | 26 | None, already at or under the reorder point | Overdue |
| 2 | NN-2277 | Truss Section 10ft | 92, 78, 66, 51, 38 | 27, 16, 5, 0, 0 | 11 | 30 | 0 | W36 |
| 3 | NN-1042 | Fog Machine 1500W | 148, 129, 112, 96, 84 | 70, 56, 42, 28, 14 | 14 | 45 | 2 | W38 |
| 4 | NN-3310 | LED Par Can | 318, 290, 268, 240, 210 | 188, 166, 144, 122, 100 | 22 | 60 | Does not reach the reorder point before W40 | Nothing to place in this window |
| 5 | NN-5023 | Speaker Stand Pair | 138, 127, 119, 106, 96 | 85, 74, 63, 52, 41 | 11 | 30 | Does not reach the reorder point before W40 | Nothing to place in this window |
| Week | Suggested day rate | Difference from the current rate |
|---|---|---|
| W35 | $48 | No change |
| W36 | $48 | No change |
| W37 | $51 | $3 more |
| W38 | $54 | $6 more |
| W39 | $56 | $8 more |
| W40 | $57 | $9 more |
| W41 | $57 | $9 more |
| W42 | $55 | $7 more |
| W43 | $51 | $3 more |
| Currently charged | $48 | Set by you |
| Item | Supplier | Reorder point | Run rate a week | Weeks of cover the threshold buys | Supplier lead time in weeks | Margin |
|---|---|---|---|---|---|---|
| Cable Ramp 4ch | Cable factor, overseas, 28 days | 26 | 8 | 3.3 | 4.0 | 0.8 weeks short |
| Truss Section 10ft | Rigging fabricator, 21 days | 30 | 11 | 2.7 | 3.0 | 0.3 weeks short |
| LED Par Can | Lighting importer, 10 days | 60 | 22 | 2.7 | 1.4 | 1.3 weeks spare |
| Speaker Stand Pair | Audio distributor, 9 days | 30 | 11 | 2.7 | 1.3 | 1.4 weeks spare |
| Fog Machine 1500W | Stage effects wholesaler, 12 days | 45 | 14 | 3.2 | 1.7 | 1.5 weeks spare |
The same SKU, in full: what was counted, what is projected, the width of the gap the projection is guessing across, and the week it crosses the line you set once. The stock panel above is this, run for everything you stock.
| Week | Units on hand | Source |
|---|---|---|
| W31 | 148 | Counted |
| W32 | 129 | Counted |
| W33 | 112 | Counted |
| W34 | 96 | Counted |
| W35 | 84 | Counted |
| W36 | 70 | Projected |
| W37 | 56 | Projected |
| W38 | 42 | Projected |
| W39 | 28 | Projected |
| W40 | 14 | Projected |
| Reorder point | 45 | Set by you |
The forecast is what
loads the truck.
Two modules, one set of records, and no step in between where somebody exports a file so the next thing can read it.
The forecast names the date
Demand per SKU, weeks of cover, and the day an order has to be placed to land before the shelf empties.
The stock arrives against it
Inventory takes the receipt, and the orders waiting on it stop waiting. Nothing was re-keyed to make that happen.
The router puts it on a van
Those orders become stops, and the stops become a run against today's drivers, vehicles and windows.
Every module here toggles on and off from the panel, so neither of these is something you have to take to get the other. See what else is in the platform, or ask us what your own operation would look like on it.
Alpha, and specific about it.
Four things worth knowing before you put a week of deliveries or a quarter of stock through either of them.
Alpha means early, not absent
Both are switched on for real accounts today, and both count among the 10 modules that are live rather than in development. Alpha here means the surface is still moving. It does not mean a waiting list.
Texas today, and that is the map
Available in Texas only today. The engine plans against a map we host, and a map covers what it covers — a limitation of an extract, not a decision about who this is for.
Both of them run in your instance
Not a sandbox, and not a trial environment to migrate off later. They sit beside the modules you already use, behind the same isolation, reading the same records.
Neither one holds a plan you have stopped agreeing with
Add a signal to the model or take one away, change a driver's shift or move a promised window, and the next answer is worked out against what is true now rather than what was true when somebody pressed go.
Tell us what you run
Both of these are in alpha and both are set up with you rather than handed over. Say what you deliver and what you stock, and we'll tell you what it looks like on Neon.
alpha · configured per business · accounts opened by us