ASE · Auto-Schedule Engine

It advises, never blocks.

ASE is the scoring layer underneath Scape's schedule. It does the math — who's qualified, who has room, what the route can actually promise — and hands you the obvious choice. Then it gets out of your way.

The helper, not the gate. The schedule is yours; ASE just makes the smart pick easy to see.

ASE does the scheduling math and hands you the obvious choice. You stay in control.

3
questions behind every placement: fit, capacity, promise.
1 pass
advisory scoring — no replan loop, no flag-repair cycle.
0
dates moved on their own. You commit every change.
The rule

The helper, not the gate.

Every scheduling tool eventually meets a customer with a weird Tuesday. Most of them block. ASE scores it, tells you what it sees, and lets you save it anyway.

ASE never disables a button. It advises, never blocks.

If a worker isn't qualified, you can still assign them — ASE just flags it. If a stop runs past end of shift, you can still save it — ASE shows the overrun. Holiday, weekend, an odd window the engine doesn't recognize? The schedule still saves. You know your business better than any engine does, and ASE is built to respect that.

It always gives you a pick

No "no worker available" dead ends. ASE returns the best option it can find and tells you why — qualifications, availability, geography, room left in the day.

It's always reversible

Every suggestion moves in one drag. Drop it somewhere else, override the pick, undo it — ASE learns your preferences over time, but it never forces them on you.

It's always honest

No silent moves, no quiet date changes, no "we fixed it for you" surprises. Every change to your schedule starts with something you did — a drag, a Reschedule, a Cascade.

How it thinks

Every decision answers three questions.

A good scheduling call has three honest parts. ASE's whole job is to make each one true before it suggests anything.

Fit
Who can actually do this work?

Workers whose start date is on or before the visit, who aren't on leave, whose weekly availability covers the day, and who are qualified for the service. A crew counts as one assignable unit; a solo tech counts as one person's minutes.

Capacity
Is there real room in the day?

Hours on shift, minus daily overhead, minus a safety buffer you set, minus the drive between stops. No make-believe minutes. If a crew is tight, ASE says so before you add to it — not after the day falls apart.

Promise
Can we keep the window we'd be making?

ASE checks the customer's time window against real drive distances, the business-open anchor, morning prep, and lead time — then shows whether the promise holds or it's a stretch. You decide what to commit to.

Candidates · Acuña HVAC
ASE
M. Garcia 92
Qualified · 2 hrs of room · +11m drive · window holds
D. Reyes 78
Qualified · in the zone by noon · tighter afternoon
T. Morgan 54
Qualified, but the day's nearly full · long drive
Garcia looks best
Closest qualified crew, keeps the route under 8 hours.

The three questions, scored and shown. You pick the row — every one stays clickable.

Honest math

Honest math, fewer surprises.

Because ASE never edits your schedule behind your back, the numbers on the dashboard match what's actually going to happen. Capacity is counted the boring, real way.

Capacity you can trust

Per-day room is work hours times the crew on shift, minus daily overhead, minus your safety buffer, minus travel between stops. If the dashboard says four service days of buffer this month, you have four service days of buffer.

Coverage gaps surface early

ASE projects every recurring visit across the horizon — weekly Tuesdays, monthly on the 8th, whatever the cadence — minus blackouts, skips, and completed work. Gaps show up on the dashboard before a customer ever notices one.

One pass, not a guessing loop

ASE scores once and shows its work. There's no iterative replan churning in the background, no convergence loop, no engine quietly second-guessing what you already decided.

Capacity · Garcia · Tue
2.0 hrs free
Hours on shift 8h 00m
Daily overhead 0h 30m
Safety buffer 0h 45m
Travel between stops 1h 10m
Work already booked 2h 35m
Room left today 2h 00m

No fungible-minute fiction. Just the hours, the costs, and what's honestly left.

The contract

What ASE does — and what it won't.

We scaled the engine back in May 2026 after autonomous date moves turned into a flag-repair-flag-repair loop. Now every change is small, explicit, and started by you.

What ASE does
  • Scores every candidate by qualifications, availability, capacity, geography, and preferred service day — with reason codes you can read.
  • Creates net-new recurring stops on their canonical cadence dates — weekly Tuesdays, monthly on the 8th, and so on.
  • Runs the Cascade waterfall when a crew runs late — slides every unstarted stop forward by exactly the lateness, on your tap.
  • Recomputes arrival times when a stop is added or moved, using real drive distances, the open-time anchor, prep, and lead time.
  • Flags at-risk recurring customers and offers a one-click Repair that fills only the missing visits — it never shuffles existing stops.
What ASE won't do
  • Disable a button. Create, Save, and Assign are always live — even when the engine doesn't love the choice.
  • Move existing stops between days on its own. No auto-shift to relieve a heavy day. Overload shows up honestly; you decide.
  • Throw up a dead-end modal like "no worker available." It picks the least-bad option and explains the trade-off.
  • Cascade across days. The overflow tail lands on the next workday and stays there — no chain rolling further down the calendar.
  • Reject a stop because qualifications, availability, or capacity look off. It places the stop and warns you.
Cascade

Late routes, handled without surprises.

A crew is two hours behind. They tap Cascade. Here's exactly what happens — no autonomy, no surprises.

Anchor at right now

ASE starts from server time, rounded up to the next whole minute, so the first moved stop is always in the future when it applies.

Find the first stop that can move

The earliest unstarted, unlocked stop for that crew. Locked stops stay put; if one would be overrun, ASE surfaces it for you to sort out.

Slide everything by the lateness

It works out the gap — delta = now − earliest stop time — and pushes every shiftable stop forward by exactly that much. That's the whole core.

Offer the overflow, once

Anything that now lands past end of shift is offered to the next workday. You approve or dismiss it. Overflow lands once — it never chains further out.

My Route · D. Reyes
Running late
Cedar Park Dental
OpenerDone 9:20a
Complete
Maple Street Clinic
11:30a1:30p
Moved +2h
Birchwood HOA
Closer2:45p
Moved +2h
One stop spills past 5:00
Birchwood lands at 4:45 and runs late. Move it to tomorrow morning?
Move it Keep it

Cascade does the arithmetic. The overflow is a question, not a decision.

An engine that respects you.

ASE does the scheduling math and shows you the smart pick — then leaves the call to you. Run it on your real schedule for two weeks and see how a quieter, more honest engine feels.

Two-week Team trial · secure Stripe checkout · questions go to hello@modulus-software.com