This post is a deep dive into some of the operations engineering work at Base Power. We're hiring!
Initially, scheduling an install of Base system was an ops task and a spreadsheet, then it was a retool app, then an in house application. Still through all iterations the same problem remained: every install on the calendar required manual communication with the member, be it text or call.
Thousands of installs meant thousands of phone calls, then follow-up calls when a member wanted to move the date, then even more when it started to rain. A change in availability meant a change in our operations team’s weekend plans as they fought to re-work the schedule.
For a company with parabolic growth this is not just a difficult task, it’s impossible. Let’s dive into how we defused the bomb.
The Challenge
Getting a member on the calendar for an install is in essence a complex matchmaking problem, as both parties need to agree on the date and time when the work will take place.
This matchmaking problem we are trying to solve is not perfectly balanced. The majority of the time we are supply constrained by a large factor. Usually this is due to the challenge of scaling the human resource; trained technician crews to do the work. In a supply constrained environment we cannot allow all members to schedule at once, or competition for dates would be too high and nobody would see any availability. Therefore, we must be thoughtful about how we burn down this demand.
On our side, we are optimizing truck routes and maximizing the number of installs we can achieve in any given day. We have constraints, such as drive time between installations, that we must adhere to in order to build a viable schedule. Technicians cannot be sent all over a large metro unpredictably in order to complete work. We must be efficient with our supply.
Member Experience
The member experience portion of the solution is straight forward. Providing the member a set of dates to choose from that work for us, and they can select the one that works best for them.
The member's flow
How a member books their own electrical visit in admin web.
Reviews what to expect
A checklist covers what happens on installation day before the member commits to one.

Picks a date
Only dates backed by real crew capacity are offered. Base confirms the arrival window 24 hours out.

Gets instant confirmation
The visit, address and cancellation policy are confirmed immediately — no call needed.

Screens from admin web. The address shown is test data.
Now we have the experience, but how do we actually present the members with dates that work for us?
The Controls
Supply and Demand:
Supply is our dynamic availability, demand is members waiting to be scheduled.
Supply can be defined by the following constraints:
- Installer availability
- Drive time between installs <= 15 minutes
- The kind of work we’ve assigned the crew complete, in this case a Base Core install
- Material availability
Many of these issues are solved with the ability to assign supply to a geographic area. For this we modeled anchors, a lat/long tuple representing the geographic location of single unit of supply, in this case, an install crew
In our model there are two types of anchors:
- Demand aware anchor: an intelligent anchor placed on the map in order to satisfy demand. Supply can be allocated to these anchors per installer. Only empty days on the schedule use these anchors.
- Schedule based anchor: when a crew already has an install on the calendar, we cannot be oblivious to the route we are creating when we schedule the rest of the day. Without awareness it would be easier to schedule an undrivable route than a drivable one in a large metro with high traffic.
Therefore, when an install is already booked on a technician’s schedule that address becomes the anchor. For example, if a given crew already has an installation in the morning, that installation is the anchor, and any other demand within a 15 minute drive could be booked later in the day. This ensures the drive time between same day installs for a technician are within the acceptable driving distance.
Regardless of which type of anchor is present, the behavior is the same. Any demand within 15 minutes of an anchor that has been invited into self scheduling will see the supply allocated to that anchor.
Where an anchor's supply can be seen
An anchor is a lat/long with a single unit of supply — one install crew — allocated to it. Demand within a 15 minute drive of it can see that supply.
- Anchor
- Booked install
- Route so far
- Unscheduled install
- 15 minute drive-time radius

The radius is a 6 mile ring, which is how a 15 minute drive is approximated. Install positions are illustrative and are not members' addresses. Basemap © OpenMapTiles © OpenStreetMap contributors, via OpenFreeMap.
Supply/Demand Balancer
Once a geographic region has supply, we need to open up demand. We started by doing so manually. This quickly leads to a major operational risk. Too much supply in a region and you have underutilized technician resources. Too much demand and you have a thundering herd, fast moving members get the slots and everyone else signs in to see no availability.
This is where the balancer comes in. The balancer keeps technician utilization as high as possible, while also ensuring when a member gets to scheduling, there actually is availability for them to book.
The balancer is a Temporal workflow running on any change to scheduling availability. When it runs it walks the queue of installations waiting to be invited. It recomputes the net supply / demand balance in the region. For every installation candidate, available technician supply in the region must exceed competing demand.
If there is a supply surplus the balancer immediately invites the demand candidate. In a surplus each member immediately consumes more supply without recomputing the supply demand balance.
How the balancer works
New supply, new demand and cancellations each trigger a run. The balancer walks the queue of waiting installs and invites while the supply it can see still exceeds competing demand.
A run recomputes the supply and demand in a region, then walks the queue of installations waiting to be invited: a candidate is invited when available technician supply exceeds the demand competing for it. Every booking consumes supply, so it changes what the next run sees.
This keeps installations in the queue moving, as soon as there is supply, there is demand ready to consume. With the balancer the vast majority of supply is consumed within minutes and hours, with no intervention.
Temporal Allocation
So far we have geographically constrained supply, and we have balanced supply and demand. Now we need to service an entire metropolitan area with a limited number of crews. A single crew anchor mapping will not work and maintain utilization.
To be able to define allocation to an anchor across the temporal dimension, instead of naive “Crew A works in Plano” we need the sophistication to say “Crew A work in Plano from the 1st to the 15th, then in Frisco from the 15th until the end of the month”.
This enables us to be much more opinionated with our allocation. Looking ahead we want to be able to allocate programmatically in order to meet a pre-defined operational plan that can be very specific (X installed in Utility A, Y installed in Utility B). Having fine grained control of the supply allocation on the temporal axis opens the door for these future automations to be highly optimal.
The Wins so Far
The scheduling queue is no longer a bottleneck:
- The vast majority of installations no longer require any manual communication to schedule
- Time in the scheduling queue fell from 4 weeks to a few days
- Previously booking 80 installs took 15 hours of painstaking work, now hundreds of installs can be booked in a single day with minimal effort
Whats Next
Our approach to the scheduling problem is centered around reducing manual workload and increasing the accuracy of the schedule that is output. Some of the next steps we are targeting:
- Automation: reduce operator workload by programatically placing anchors and allocating supply
- Accuracy: ingesting constraints and targets to generate the best possible schedule for the business
Scheduling installations is a problem with many facets and infinite room for optimization. We continue to improve the system all the time in the effort to improve member experience and operational efficiency.
Colin Cassens works on software at Base Power.
We're growing fast and hiring across engineering and operations. If you want to build the systems behind that growth, see careers.



