Availability
Loading…
Ready to schedule ACTIVE projects whose survey is waiting — send the rep a booking link
The filter is
project_status = 'ACTIVE' and the survey status — not survey
status alone. Verified live: 94% of surveys sitting in a schedulable status (1,054 of 1,124)
belong to CANCELLED projects, because survey status is never cleaned up when a project dies.
Expect this queue to be short; it's arrival-driven, not a backlog.
| OUR # | Customer | City | State | Survey status | Type | Geocode | Booking | |
|---|---|---|---|---|---|---|---|---|
| Loading… | ||||||||
Links issued every booking link minted — issued is not the same as sent, see below
Issued, not sent. A row records that a link was minted, not that it reached
anybody. Whether a send went out is recorded in Audit — as
mail.suppressed when it did not. About this screen has the rules on
replacing, revoking and Tape-issued links.
| OUR # | Customer | Rep | Issued | Expires | Uses | Status | |
|---|---|---|---|---|---|---|---|
| Loading… | |||||||
Demo links rehearsals — they walk the real booking flow and are stopped at the commit
A demo link is a real
book_tokens row
an admin minted on purpose. It offers real times from the real engine and is intercepted
before anything is written, so it has never held or booked anything and it never will.
They are listed apart from the real links because they are not work — nobody is waiting
on one.| OUR # | Customer | Minted by | Issued | Expires | Uses | Status | |
|---|---|---|---|---|---|---|---|
| Loading… | |||||||
Surveyors OWEDB is the seed, not the source of truth — curate here
Import pulls Site Surveyor and Site Survey Tech / Lead only — matching on
role ILIKE '%Survey%' would make 8 schedulers and 8 reviewers bookable.
OWEDB has no home lat/lon, so set a home base below or drive time can't be measured.
| Name | State | Home base | Timezone | Jobs/day | Max drive | Phone | Status | |
|---|---|---|---|---|---|---|---|---|
| Loading… | ||||||||
Default working hours
Set a weekly pattern effective-dated — changing hours adds a dated row, it never rewrites one
Changing hours adds a dated row rather than rewriting history, so a slot
offered last month can still be explained. Times are local wall clock — they survive DST.
Hours in effect today one row per surveyor, resolved: the market that wins on priority today, and the week that market selects. Everyone keeps default hours; hours set for a market are an override on top, and each kind closes only its own kind. Earlier and future patterns are on the surveyor's own record — open a row.
| Surveyor | Week | Break | Market today | Effective | Status | |
|---|---|---|---|---|---|---|
| Loading… | ||||||
Temporary changes
Everything temporary, in effect or upcoming a read view over all three kinds — one-off day changes, surveyor absences, and market moves
| Surveyor | Kind | Dates | Detail | Where it lives |
|---|---|---|---|---|
| Loading… | ||||
A one-off day change replaces the pattern for that single date and is set below.
An absence over a date range is a blackout scoped to one
surveyor — it subtracts from whatever hours they have, so the pattern stays intact.
A market move is an assignment with a date range, and it
changes which market's clock and centre their day runs on.
One-off day change different hours, or no hours, for a single date
One-off days already set last week onward — clearing one hands that date back to the recurring pattern
| Surveyor | Date | Hours | Reason | Set by | |
|---|---|---|---|---|---|
| Loading… | |||||
Move a surveyor to a market state or region, for a date range
A temporary move outranks the home market for its date range and then hands back
automatically — the home assignment is left intact. Their working day starts from the
destination market's centre and runs on that market's timezone, so sending a
Phoenix tech to Houston gives a 7 AM Central start, not 7 AM Mountain. Setting a new
home market auto-closes the previous home the day before this one starts.
Assignments a read view — assignments are made by the form above and ended by date, never deleted
| Surveyor | Market | Type | From | To | Timezone | Priority | Status |
|---|---|---|---|---|---|---|---|
| Loading… | |||||||
Remove is gone on purpose (P3.1). It ran a hard
DELETE, which
destroyed the record that a surveyor had ever covered a market — and this table is
effective-dated precisely so that a slot generated last month can still be explained.
To end an assignment, set its To date using the form above; the row stays and
greys out. Creating a home assignment still auto-closes the previous one.
Coverage state → market → survey tech base. A market spans one timezone — that's why El Paso and the Florida panhandle are their own
Loading…
A state-wide row is the fallback for anything in that state no region claims;
it sits last in its group. Click a market to see who covers it and how it is
configured. Offices are listed under the market they belong to.
Coverage map where we have configured coverage — not where work is
Configuration, not work. Shaded state = a market exists there. Ring = a market's
centre. Pin = a base a survey tech reports to. No shape here means a job, a booking or a
person, and the centre is neither a radius nor a day origin. About this screen has
how coverage is actually decided.
Bases without a position named, because a missing pin is a record gap and not an absence
Time off this app is the system of record — OWEDB has no leave table at all
Every “PTO” field in OWEDB means Permission To Operate (utility
interconnection), not leave — none of them are wired to this.
Only approved time off removes availability; pending never does.
Requests
| Surveyor | Dates | Kind | Reason | Status | Decided | |
|---|---|---|---|---|---|---|
| Loading… | ||||||
Service areas ZIP3 is primary; radius is a fallback and a ranking signal
We deliberately don't derive coverage from OWEDB's zip→office table: it's populated
for only ~8,945 of ~22,000 ZIPs (CA has 10) and is empty for NY/IL/VA/MA/NJ/MD/ME/CT/VT.
Since this serves all markets, coverage lives here. A state row is a fine start for a
one-surveyor market.
| Surveyor | Kind | Value | Priority | |
|---|---|---|---|---|
| Loading… | ||||
Blackouts dates nobody is bookable — company holidays and regional closures
Leave To empty for a single day. A blackout removes
availability for everyone it covers, whatever their working hours say — it is a
closure, not a person's leave. One person's absence belongs in
Time off, which needs approval and warns you about surveys
already booked in the range; a blackout applies immediately and asks nobody.
| Scope | When | Label | |
|---|---|---|---|
| Loading… | |||
Calendar book a survey, or narrow this tab to one project
Find it by OUR#, customer name
or address, then pick a window.
No project loaded yet. Everything
below is showing the whole team.
Every window here works on the route, not just on paper. The tech
finishes their last job, drives over, and is at the door somewhere inside the
arrival window — each chip is the whole window, not a start time — and can still
reach their next customer inside the window that customer was given.
Who is available when bookable local hours per surveyor, after shifts, overrides, approved time off and blackouts
Every arrival window each
surveyor has, and which are already taken. Click a free one to book into it.
Name a project at the top of this tab and this narrows to the people who can
actually take that job, with the drive time checked.
Tickets
Everything the team has raised, what was
actually done about it, and whether it's finished. Anyone here can add one or move one
along — you shouldn't have to ask for a status.
Auto-send to the customer send the booking link on its own once a project clears QC
“Cleared QC” is read as: the project is ACTIVE, it has a sale date, its survey is
waiting to be scheduled, and no link has been sent and nothing booked for it yet. Turning this on
still respects the email switch on Config — with email suppressed, nothing
leaves either way.
Who would be sent, right now a preview — nothing is sent while this is off
| OUR # | Customer | Address | State | Sale date | Would go to |
|---|---|---|---|---|---|
| Loading… | |||||
Day board every tech's day in one place — jobs, addresses, route and drive time
workable
check it
unreachable / over cap
Amber and red are computed from real drive time between consecutive addresses, not a
gap rule — a red day contains a job the tech physically cannot reach. Map overview
opens the whole route in Google Maps. Click a job to move or cancel it; reviewing a day
records who cleared it, and the review lapses automatically if the day changes afterwards.
What's scheduled every survey on the calendar — filter by surveyor, market, state, status or date
Click a scheduled survey to open it. The detail opens over the list and the list
does not move — the row you clicked stays where it is and is highlighted, so when
you close it you are back where you were and a second click cannot land on somebody
else's booking (#29). Move and Cancel are on the detail.
| Date | Window | OUR # | Customer | Market | State | Surveyor | Drive in | Status |
|---|---|---|---|---|---|---|---|---|
| Loading… | ||||||||
Booked, but the project is in trouble surveys with a slot on the calendar whose project in OWEDB reads JEOPARDY or HOLD — call the sales rep and settle it before the slot reopens
Loading…
| Date | Window | OUR # | Customer | Project status | Survey status in Tape | State | Surveyor | Booking |
|---|---|---|---|---|---|---|---|---|
| Loading… | ||||||||
Waiting to be entered in Tape bookings live here first — ops reads Tape, so each one is mirrored by hand until a real integration exists
Open the Tape record, enter the survey as Scheduled with the date, arrival window and
tech below, then tick it off. It's undoable from the list underneath, and a booking that
later cancels comes back into this queue so Tape gets updated too.
The tick is your word; the check is separate. Ticking a row records who
said they entered it and when. The app then re-reads OWEDB's copy of the Tape
survey record for that OUR#, and a row reads VERIFIED only if that copy shows
the survey scheduled. Anything else stays ADDED with the status OWEDB actually
returned — including "not there yet", which is a normal thing to see while the sync
catches up. Not verified never means Tape is missing it; it means the check has
not seen it yet. Use Check Tape again on the row.
| Survey date | Arrival window | OUR # | Customer | Address | Surveyor | Status | Link to Tape | In Tape? | |
|---|---|---|---|---|---|---|---|---|---|
| Loading… | |||||||||
Recently marked as entered a person's tick, plus whatever the check found when it re-read OWEDB
| OUR # | Customer | Survey date | Window | Says they entered it | When | In Tape? | |
|---|---|---|---|---|---|---|---|
| Loading… | |||||||
Bookings the sync could not place Tape holds these; the console would not guess at them — most are fixed in Tape, and the next sync closes them on its own
The hourly sync files a booking here instead of guessing, because a guess puts a real
job on the wrong technician. Most of these are fixed in Tape, not here. Once
Tape is right the next sync brings the booking in and closes the row itself — you only
need to resolve a row by hand when the answer is that nothing is coming
(a duplicate, a cancellation), or when you have done the fix and want it off the list.
Loading…
Outbound email the go-live switch — this is what decides whether real homeowners are mailed
Read this before changing it.
off sends nothing at all — no sign-in links, no rep links, no
homeowner confirmations; bookings still record normally.
internal is testing mode: only @ourworldenergy.com addresses receive
mail, and every suppressed message is recorded in Audit as
mail.suppressed.
on means real customers and outside reps receive real email.
This screen is the only place in the app that can change it.Scheduling rules what the offer engine is allowed to promise · these fields write the global scope
No changes.
Advanced every row as stored, and the raw setter — the escape hatch for keys the fields above don't know
Show all config rows and the raw key/value setter
A key nothing reads is a row that looks
saved and does nothing — the original complaint on this screen. Anything not
already in the table below, and not a field above, is queried before it is
written. Security and governance switches are refused by the server in every
scope, and the refusal is recorded.
| Scope | Key | Value | Updated by | |
|---|---|---|---|---|
| Loading… | ||||
Who can sign in fail-closed and invite-only — an @ourworldenergy.com address gets NOTHING until it's listed here
Listing an email that is already here updates their role rather
than adding a second entry — the change is recorded in the audit trail, and the original
grant's author and date are kept.
Two gates still protect this app, but the first one moved.
OWE sign-in (ScaleKit → the company directory) decides who can authenticate;
this list decides what they can do — and anyone not on it is refused outright,
even with a perfectly good OWE login. Cloudflare Access used to be the front door and
no longer is, so this list is now the only place a new person is let in.
A surveyor login must be linked to its surveyor record — that's what scopes
them to their own day.
What each role can see which tabs a role gets — the server decides this, the sidebar just follows
Hiding a tab is convenience, not the security
boundary: every endpoint behind every tab re-checks the role itself, so a URL
typed by hand still gets refused. A surveyor login is additionally scoped
to its own record — that's what keeps a field tech out of the whole company's day.
Who actually signed in successes and refusals — the only way to see a person being turned away, since the directory holds no roster we can read
Loading…
| When | Result | Why | |
|---|---|---|---|
| Loading… | |||
Current access
| Role | Linked surveyor | Added by | When | ||
|---|---|---|---|---|---|
| Loading… | |||||
Audit trail append-only; every availability edit and booking action
| When | Who | Action | Entity | Detail |
|---|---|---|---|---|
| Loading… | ||||
Settings super admin only
—
surveys on today's calendar
—
routes today that don't work as booked
—
live booking links expiring within 48 hours
—
bookings still to be entered in Tape
Where to go next the four things this console is for
Nothing on this screen changes anything —
it is a read of four other tabs. Every number links to the screen that owns it.