SkipOps

Plain English, start here

What SkipOps does — and exactly where we are

SkipOps runs the day for a UK rubbish-clearance firm. The boss books jobs and lays out the day on his dashboard; the system works out the smartest route for every van; the crew get their job cards and checklists inside Telegram (nothing to install); and the boss watches it all happen live, ending the day with a photo-proof record of every job. No money or pricing anywhere in version 1 — the win is told in saved fuel, time and wages.

The big news since the last update: the whole daily loop is LIVE. On the dev build, a real crew (Pier to Pier, our test firm) can sign in by sharing their location, get sent to jobs, work photo-proof checklists that save every tick instantly, and the boss can plan, correct and watch the whole day from his phone. What's left is polish, a handful of decisions, and taking it to production.

Updated 11 Jul 2026 · reflects everything merged up to today (the planning board, "Plan for Me", and the gaffer-only crew placement rule)

6stages live and working on the dev build — the two chats, the route planner, routes-to-crew, live van tracking, photo-proof checklists, and the boss dashboard
3stages part-done — firm set-up (built twice over; the front-door decision and production launch remain), job entry (forms are live; "just text it" parsing is later), and auto re-planning (on-demand works; the automatic trigger is next)
0stages still on the drawing board — nothing is unbuilt anymore
built & live on dev part-built to build

The whole thing on one page

The loop, top to bottom

Five moving parts. Set the firm up once, then the same loop repeats every working day.

flowchart LR
  A["① Set the firm up
(once)"] --> B["② & ③ Boss books
the jobs"] B --> C["④ System plans the
smartest day"] C --> D["⑤–⑦ Crew get job cards
+ post photos"] D --> E["⑥ ⑧ ⑨ Boss watches live +
gets the record"] E -. "new job or change
→ re-plan" .-> C classDef here fill:#eef2ff,stroke:#4f46e5,stroke-width:2px,color:#3730a3; class B,C,D,E here;
We are here — the loop itself is live; we're polishing the boss's controls and heading for production
What that means in practice: every part of the daily cycle now runs for real on the dev build. The crew sign in by sharing live location (and a brand-new crew member is recruited on the spot with a "who are you?" card — no admin). The boss lays the day out on his dashboard: a planning board where he places crew into vans and jobs onto vans with a tap, then hits "Plan for Me" and the route optimiser plans everyone's day around his placements. Crew get each job's checklist as they approach; every tick and photo saves the moment it happens; leaving a site with items missed pings the boss naming exactly what was skipped. One rule got simpler this week, at Alex's call: crew are never asked which van they're in — placing people is the gaffer's job, always. Signing in is now completely silent for the crew.

Every stage — what it's for, and where we are

The 9 stages in detail

Each one: the plain-English objective (what we're trying to achieve), a quick picture, and an honest done / still-to-do.

Set the firm up

built twice over (two wizards live side by side) · front-door decision + production launch remain

The objective: before SkipOps can run anyone's day, it has to learn how that firm works. The boss answers a short setup wizard: the firm and its vans, the base/yard, what waste it handles and where each type ends up (its own tips, picked on a real map), and the job checklist the crew work to. Two versions exist on purpose: the original detailed wizard, and a rethought v2 that asks only what a boss can answer in a minute (crew are never typed in — they join through Telegram by simply sharing their location on day one). Alex has walked v2 on his phone and approved it.

What we gather → what it powers: the vans → the planner's fleet and the day's van columns on the board; the base pin → the anchor every route starts and ends at; the per-waste destinations → right-waste-to-the-right-place routing and the stored-at-the-yard answer that powers consolidation runs (SkipOps' signature); the checklist → what the crew must tick, photograph or measure on every job.
flowchart LR
  A["① Your firm
(name + vans)"] --> B["② Your base
(one pin)"] B --> C["③ Where does it go?
(tip cards + waste ticks)"] C --> CL["④ Checklist +
review link"] CL --> D["Save — the
firm exists"]

Done

  • Both wizards are built, tested and on main — the original at /, the approved v2 at /v2. v2's share-able takeover link works (fill it in on a sales call, send the link, whoever opens it becomes the boss).
  • The waste-type answers got smarter in the field — each type now records whether it's stored at the yard, disposed of, or lives in the skip (the July change that made the Yard screen honest). The boss can also add a new waste type straight from his dashboard, no wizard revisit needed.
  • Design system locked — restrained dark look, amber only ever marks the thing to do, everything thumb-sized; enforced by automated checks, not by eye.

Still to do

  • Decide the front door — v2 or the original greets a new firm. Queued decision; v2 is the favourite.
  • Production launch — the whole stack runs live on the dev deployment today (dashboard, crew app, bots, planner). Going to production (the real bot pair, the real database, the public domain) is its own job, after the P2P field-testing proves the loop on real workdays.
  • Small follow-ons — auto-find the firm's Google review link; the wizard's "stored vs disposed" question gains the third "in the skip" option (the dashboard already understands it).

Give the firm its two chats

live & proven on real phones

The objective: every firm gets two Telegram chats — a private one for the boss (the "Gaffer" chat) and a group for the crew (the "Dispatch" group) — with a hard wall so one firm can never see another firm's data. And joining should be effortless: a new crew member shouldn't need an account created for them.

flowchart LR
  A["Firm set up"] --> B["Gaffer chat
(boss only)"] A --> C["Crew group
(the roster)"] N["New face shares
location"] --> W["'Who are you?'
card → tap your name"] W --> C

Done

  • The boss pairs his chat with one tap (the setup wizard's link) and the crew group links itself the first time the bot is added to it. Proven live on Alex's phones.
  • New crew recruit themselves — an unknown person sharing location in the crew group gets a "who are you?" card: tap your name off the roster (first tap wins) or type it, and you're in, signed in, tracked. No admin, ever.
  • The data walls are on — every table is firm-walled at the database level, and every chat message is resolved to its firm before anything is trusted.

Still to do

  • Production bot pair at launch (the dev bots do everything today).

Boss books the jobs

forms live everywhere · "just text it" parsing is a later luxury

The objective: getting a job into the system should take seconds. Today that's a proper Add job form (address with map-pick, customer, waste types, size, time window, notes) on both the boss's dashboard and the crew app. The original dream of texting a job in plain words and having it understood is still on the list — but the forms turned out to be the honest first step, and they're what a real firm needs day one.

flowchart LR
  A["Add job
(dashboard or crew app)"] --> B["Job created:
where, what, when"] B --> C["Sits in the day's pool
until placed on a van"]

Done

  • The Jobs tab is the full book — add a job, tap any job to edit it (everything pre-filled), delete with a named "are you sure?" (and if the crew are mid-route to it, the boss gets a clear warning first, never a silent block). A date picker shows any day's jobs; Today is the working list.
  • Customers are first-class — jobs carry a customer, and per-customer checklist extras bake into the job.
  • Every entry says who made it — each job, tick and photo is stamped with the person's name.

Still to do

  • Address autocomplete for customers is misbehaving — reported today, a fix is in progress right now.
  • Plain-English job texting — "clear a garage on Dyke Road tomorrow, half a load" typed straight into chat. Designed, deliberately queued behind the forms.

Plan the smartest day

live on the server · reworked to distance + load · takes the boss's placements as gospel

The objective: given the day's jobs, work out the most efficient round for every van — fewest miles, fullest loads — including nipping back to the yard to empty when a van fills up. This saving (fuel, time, wages) is the whole pitch. And crucially: the optimiser serves the gaffer, it doesn't overrule him — anyone he's placed on a van, and any job he's pinned to a van, stays exactly where he put it.

flowchart LR
  A["Today's jobs"] --> C["The planner"]
  B["Who actually
signed in"] --> C P["The gaffer's
placements (pins)"] --> C C --> D["Most-efficient
route per van"]

Done

  • Reworked from "cheapest" to distance + load — no money anywhere, exactly as decided for v1. Runs on our own server with free road-distance maths (£0 per plan).
  • Plans from facts, not wishes — availability comes from who actually signed in this morning, never from the firm's config. A planned-but-absent crew member is named, not guessed around.
  • Honours the gaffer's pins (new this week) — staff pinned to vans and jobs pinned to vans are locked in the solve; the optimiser only decides what's left. If a day can't work, it says so honestly rather than saving nonsense.
  • Multi-trip reloads work — a van that fills up plans a yard/tip visit and carries on.

Still to do

  • A proper multi-van, real-scale field proof (the maths is tested; a real 3-van P2P day is the true test).

Tell each crew their route

live — the approach card runs the day

The objective: once the day's planned, the crew shouldn't need to think about what's next. As a van gets close to its next stop (about two minutes out), that job's card appears in the chat: the checklist, the details, a tap-to-navigate link. Finish or leave, and the next direction arrives by itself.

flowchart LR
  A["Route planned
(ordered stops)"] --> B["~2 min from a stop →
its card appears"] B --> C["Work the checklist"] C --> D["Done or left →
next direction sent"]

Done

  • The live loop is merged and running — routes persist as ordered stops, the approach card fires from real GPS proximity, completing or leaving advances the van to its next stop and tells the boss.
  • The plan and the crew app are one pipe — whatever the planner writes is exactly what the crew's checklist reads. No second version of the truth.

Still to do

  • Field polish as real P2P days shake it out (wording, timing thresholds).

See where the vans are

live — sharing location IS signing in

The objective: each crew member taps "share live location" in Telegram once at the start of the day. That's it — that one tap is the sign-in, and the system now knows who's working and where every van is, with no app and no tracking box. As of this week it's completely silent: no questions back, no "which van?" — placing people in vans is the gaffer's job, done on his board.

flowchart LR
  A["Crew taps
'share location'"] --> B["Signed in, silently"] B --> C["Live position feeds
the boss's map"] B --> D["Arrive/leave at jobs
timed automatically"]

Done

  • Sign-in, presence and tracking all live — proven with two real phones this week. The stream also times arrivals and departures at each job automatically (geofenced), which powers the honest day report.
  • Gaffer-only placement — the crew-facing "which van are you in?" question was killed at Alex's call. If the gaffer pinned you to a van, sharing location puts you straight aboard it (creating the day's team if you're first in).

Still to do

  • Nothing structural. One open decision rides along: whether arriving at the yard should end a tip run automatically or stay a manual tap (everyone currently leans "stays a tap").

Photo-proof every job

live — every tick saves instantly; leaving IS the save

The objective: the crew photograph and tick their way through every job and every yard visit, and the record is bulletproof. There's no "confirm" button to forget: every tick, photo and load saves the instant it happens, and driving away is what closes the stop. If someone leaves with items missed, the boss is told exactly which items, by name, straight away.

flowchart LR
  A["Tick / photo / load"] --> B["Saved instantly"]
  B --> C["All done OR drove away
= stop closed"] C -->|items missed| D["Boss alerted,
items NAMED"]

Done

  • Real-time checklist end to end — the confirm button is gone; each action lands in the record the moment it happens, and late photos amend the boss's alert rather than being lost.
  • Forced yard photos — the crew can't close a yard visit without photographing the skip and each stored waste pile (the photo list builds itself from what the firm stores, so a new waste type is automatically photographed too).
  • Photos are safe the instant they're taken — uploaded immediately with a visible "saved" badge, filed against the job with a timestamp and the crew member's name.
  • The review QR works off the real scan — the customer scanning it is what ticks the item, never the crew's word.

Still to do

  • A real yard-visit proof by the actual P2P crew (Alex has proven it solo; a real crew day is the final tick).

Re-plan when things change

on-demand re-plan live ("Plan for Me") · the automatic nudge is next

The objective: jobs change all day — a new one lands, one's cancelled, a van runs early. The boss can already re-plan any moment with one tap. The next step is the system noticing for him: quietly re-solving in the background and only speaking up when it genuinely matters ("a better route would save you 12 minutes — want it?").

flowchart LR
  A["Something changes"] --> B["Quiet background
re-solve"] B -->|saves real time| C["'Saves you X min —
see it / keep mine'"] B -->|barely different| D["Stays quiet"]

Done

  • "Plan for Me" is live — one tap re-plans the rest of the day from the current facts (who's signed in, what's done, what the gaffer has pinned).

Still to do

  • The automatic nudge — the background re-solve with a ~10-minute "worth telling him" threshold. Designed and agreed; next slice after the current work.

The boss's dashboard

live on real data · 5 tabs · being refined right now

The objective: the boss sees and runs his whole operation from one place on his phone. Home: the live map plus a one-glance line per van. Teams: today's crews, plus the collapsible board where he places people into vans. Jobs: the full book and the day's planning (the board, the pools, "Plan for Me", the date picker). Yard: the skip and every stored pile — latest photo, how full, who did what and when. More: history with proper search.

flowchart LR
  A["Home
(map + glance)"] --- B["Teams
(crews + board)"] B --- C["Jobs
(book + plan)"] C --- D["Yard
(skip + piles)"] D --- E["More
(history)"]

Done

  • Everything reads real tenant data — the placeholder era is over; what the dashboard shows is what the database says, in UK time, with an honest amber banner if a day was never wrapped up.
  • The boss can correct reality — skip fill and pile loads are editable, and every correction is recorded as who/when/old→new, never silently rewritten.
  • The planning board (this week) — tap-only, two columns (vans wide, crew beside), place crew and jobs, hit "Plan for Me". Live placement: pinning a signed-in person moves them for real, unpinning takes them off.
  • The Yard tab tells the truth — the skip is a first-class card; each stored pile shows a load bar, its latest forced photo, and a timestamped who-did-what story.
  • History fits one screen (today) — search plus compact Date / Customer / Waste filters, waste as a tick-several dropdown.

Still to do

  • Map views — in progress right now: an Overview (all vans, sites, yard) plus a per-van view that isolates one van and draws its remaining route with numbered stops, so the boss can see exactly where any van is going.
  • Production launch — the dashboard lives on the dev address today, boss-locked via Telegram sign-in; the production home comes with the go-live step.

Staying on track

What's next, in order

The build phase is nearly over. The order now: finish the in-flight polish, prove the loop on real workdays, launch, sell.

1
Finish the two in-flight pieces now
Map views (overview + per-van numbered route) and the customer address-autocomplete fix — both being built today in parallel.
2
Clear the small decisions
The front-door wizard (v2 vs original) · tip-run ending: automatic at the yard vs stays a tap · the automatic re-plan nudge (slice B, designed and agreed) as the next build slice.
3
Prove it on real Pier to Pier workdays
The whole loop, driven by the real crew for a week: sign-ins, the board, Plan for Me, approach cards, forced yard photos, the day report. Field findings become the final polish list.
4
Production launch
The real bot pair, production database with the migrations applied, the public domain, the maps keys on their proper referrers. A one-block job once the field week passes.
5
Sell it
20 firms at £75/mo by 5 Nov. P2P becomes the reference customer and the demo. The remaining ~115 days of the mission are this row.

Mission: 20 paying firms at £75/mo by 5 Nov 2026. The build stretch is nearly done; the selling stretch is most of what's left.