Clickable mock • Sample data only

One screen.
Every gig.

This is the command center from the pitch — built as a working mock of all the modes. Plan your shift before you leave, judge offers live — now by voice first, typing as fallback — compare up to three offers in A / B / C when more than one lands at once, then bring the day's real numbers home after the shift. Nothing here connects to DoorDash, Uber, or Flex — the driver brings the data.

🎙️ New: the Voice Judge is live in this mock

Open tab ②, tap the mic, and say “DoorDash, twelve fifty, four miles.” It echoes the numbers back out loud before the verdict — because a misheard $12 vs $20 flips take to skip. No mic or no speech support? The demo phrases and the 2-field judge below do the same job.

The four screens

1 = Before the shift — Plan  •  2 = During the shift — Voice Judge + Quick Judge  •  3 = Compare — up to 3 offers in slots A / B / C, ranked out loud by net $/hour  •  4 = After the shift — Add Data: screenshots, CSV & voice logging, reconciled into the ledger. No timer pressure at home.

View as
gigpilot.app/command-center — website viewDESKTOP DASHBOARD
LIVE ON DOORDASH
TODAY — TUESDAY SHIFT
Sample shift • Hamburg area • Ends 9:00 PM
$86.409 offers judged
$24.10after miles & gas est.
48.2incl. deadhead
1:24left • 3:30–6:30 PM

Set your floors — never go below them

These numbers drive both the plan and the offer judge. Drag them and watch the plan change its advice.

Your time-blocked plan

Don't run everything at once. Work one lane at a time — that's how the $150 Flex-only day becomes ~$195.

Coach tip: Your floors are solid. With a $1.80/mi floor, you'll skip roughly 4 in 10 food offers — that's the point. Dead time waiting for a good offer beats a bad offer that locks you up for 30 minutes.

🎙️ Voice Judge — say it, hear the verdict

Phone mounted, site open, one tap to wake the mic. Say the app, the pay, and the miles — it always echoes the numbers back before the verdict, because mishearing $12 as $20 (or 4 miles as 14) flips take to skip. If it's unsure, it asks instead of guessing. You still tap Accept / Decline in the driver app itself — this only advises, and it never accepts for you.

Tap to listen
Try it: “DoorDash, twelve fifty, four miles.”  Also works: “Pause Uber Eats” (reads the pause checklist back) and “Log it” after a take. Vocabulary is deliberately tiny — app names and numbers only — so car noise has less to ruin.
No mic? Demo phrases:

🔒 Honest privacy note: on Chrome, the browser sends your voice audio to Google's servers to transcribe it — it's not processed only on your phone. Safari on iOS 14.5+ and Edge also support speech recognition; Firefox effectively doesn't, so Firefox drivers get the typed judge below. And a website can't listen continuously in the background while DoorDash is in front — v1 needs this site in the foreground or a second mounted phone. Kill line for the real product: more than ~1 in 20 pay/miles misheard in a real car, or verdicts slower than 5 seconds, and the live voice judge gets parked.

Quick Judge — typed fallback, 2 fields

The fallback when voice isn't available or the car is too loud — and the same brain the Voice Judge uses. Type the pay and the miles off the offer card — that's all. Everything else is pre-filled from your Plan settings, because there's no time for anything else.

⏱The clock is real: DoorDash gives you ~45 seconds to accept, Uber Eats ~15. A screenshot upload here would burn the whole window — that's why screenshots live on the After Shift screen instead.

Pre-filled, set once in Plan — never typed mid-offer: trip time 25 min (your typical run) • vehicle cost $0.67/mi • floors $1.80/mi • $25/hr. After the shift, the import screen swaps these estimates for the real numbers.

BORDERLINE — CHECK THE MATH

$1.37per mile
$20.40projected / hr*
$4.35net after miles*

Below your $1.80/mi floor and under your $25/hr floor. Only take it if it heads toward your next zone.

*Projected from your pre-filled 25-min trip time and $0.67/mi vehicle cost. Estimates on purpose — the After Shift import replaces them with actuals.

Pause-all — the golden rule

The second you accept on one app, pause the rest. One tap here replaces juggling 4 apps at a red light.

Guardrails — don't get deactivated

The mock watches the numbers each app judges you on.

DoorDash completion 92% — safe
Uber Eats rating 4.91 ★
DoorDash acceptance 38% — watch it

⚠️ Skipping is fine — accepting then cancelling is what hurts. Completion below ~80% triggers deactivation reviews on several platforms, so the judge never tells you to take an offer just to protect acceptance.

⚖️ Compare Mode — three offers, one spoken ranking

Say “compare”, then speak each offer one at a time — it fills slots A, B, C and echoes each back. Max 3: a 4th offer replaces the oldest, and “clear” wipes them. Then ask “which is best?” — you hear the rank first, details only if you ask (“tell me about B”). Saying “take A” logs A as your pick — you still tap Accept in the driver app itself.

Tap to add an offer
Try the worked example: tap Load A / B / C example below. C pays the most in total ($22) but still loses — it eats the most time and miles. A wins on net $/hour.
Demo:

⏱ Honest timer note: three truly live offers rarely stay open at once — DoorDash gives ~45 seconds, Uber Eats ~15 — so a live 3-way compare is realistic mainly when you're parked or between deliveries, or comparing a live offer against recent ones. If an offer you entered has already expired, treat the ranking as next-hour planning, not a live decision. On screen (parked), the same slots show as ranked cards — same math, just visible.

🧮How it ranks: net $/hour = (pay − miles × $0.67 vehicle cost) ÷ hours — ranked by net $/hour first, but only among offers that clear your $/mile floor (Plan tab). That stops a tiny, high $/mile offer that wastes an hour from beating a solid longer one. If none clear the floor, it says so plainly: skip all.
A
Empty slotSpeak an offer, or type it below
NOTHING TO RANK YET
B
Empty slotSpeak an offer, or type it below
NOTHING TO RANK YET
C
Empty slotSpeak an offer, or type it below
NOTHING TO RANK YET

🏆 The ranking

Add at least two offers and the ranking appears here — best first, with $/mile, $/hour and net $/hour side by side. Floors come from the Plan tab and apply live.

No offers yetLoad the A / B / C example above, speak offers into the slots, or type them in.

📸 Import a screenshot

At home, screenshot your earnings or trip screen in the driver app and drop it here. The real product reads the pay, miles, and app off the image — in this mock it pre-fills sample values for you to check and fix before saving. Nothing is timed here, and that's the point: this never happens while an offer is ticking down.

Drop an earnings screenshot, or pick one from your phone:

Your uploaded earnings screenshot preview

Good version of this reads the image on your phone and doesn't keep the screenshot afterwards. The mock keeps nothing either — the preview never leaves this page.

📄 Import a CSV export

The driver apps let you download your own weekly earnings / trip history. Download it there, upload it here, and the ledger reconciles the whole batch at once — including tips that landed higher than the judge estimated.

Columns: app, pay, miles, minutes

⌨️ Or just type the shift in

Odometer and totals off the top of your head beat a perfect system you never open. Start miles, end miles, and what each app paid — done in a minute.

Parked, no timer — voice logging shines here. That demo phrase adds a DoorDash $86.00 / 48 mi entry to the ledger and speaks it back to confirm.

The ledger — estimates in, actuals out

Everything you judged live lands here as an estimate. Imports replace estimates with what the apps actually paid, so the per-app $/hour you plan tomorrow with is true.

Day total (actuals so far)across every app
$86.4048.2 mi logged
Reconciled: DoorDash 6:12 PM — Quick Judge estimated $8.50, the export says the tip landed at $10.25. The ledger now uses $10.25. That's the whole reason this screen exists: live you decide on estimates, at home you learn the truth.

Today's entries

Where each number came from — tap a source tag in the real product to see the original screenshot or file row.

How data gets in — honestly

  • Live: you type 2 fields. The website never sees the offer before you do.
  • After shift: screenshots and CSV exports you downloaded yourself from the driver apps.
  • Never: your DoorDash/Uber password, a live feed, or background scraping. If a tool promises those without an official partnership, it's logging in as you — and that's the deactivation risk this design avoids.
Website vs. phone app

Yes, it works as a website —
and for planning, it's better.

🏠 At home: Plan on laptop→📱 In car: Judge on phone browser→⏸ One-tap pause-all→🏁 Same account, both screens

✅ What a website does great

  • No app-store approval — ship and update instantly
  • Works on any phone — add to home screen like an app (a “PWA”)
  • Bigger planning screen — floors, blocks & timeline are easier on desktop
  • Cheap to build & run — one codebase for phone + desktop, like this mock

📱 What still lives on the phone

  • The offer itself — it appears in DoorDash / Uber with a 15–45 second accept clock, so you read two numbers off it (pay, miles) and type them into the Quick Judge
  • Accept / decline — always tapped inside the official app, never here
  • Navigation — stays in Google / Apple Maps or the delivery app

🚧 The honest limit

  • No public driver APIs — DoorDash & Uber don't offer one to plug into
  • So no auto-accept, no bots, no background scraping — that path gets drivers deactivated
  • V1 data flow: 2 typed fields live, screenshots & CSV exports after the shift. Less magic, but it stays alive.

Try the full loop in 30 seconds

1  In Plan, drag your $/mile floor up to $2.20 and hit Generate my plan — watch the advice get pickier.   2  Switch to Judge Offers and tap the big mic — or a demo phrase if you'd rather not allow the mic — and listen: it echoes “DoorDash, twelve fifty, four miles” before it says take. Try Pause Uber Eats too.   3  Open Compare and hit Load A / B / C example: Spark's $22 offer pays the most and still loses to DoorDash's $12.50 on net $/hour — then tap Speak the ranking or say take A.   4  Open After Shift and hit Load a sample export — watch the ledger swap estimates for actuals.   5  Flip Phone ↔ Website at the top — same mock, two homes.

Clickable concept mock with sample offers and sample earnings — not connected to any delivery platform and not the driver's real data. Built to test the modes from the original pitch: 1 (Plan), 2 (Voice Judge first — echo-before-verdict, tiny app-names-and-numbers vocabulary, typed 2-field fallback — because live offers expire in 15–45 seconds), 3 (Compare — up to 3 offers in voice/typed slots A / B / C, ranked by net $/hour among those clearing the $/mile floor, spoken rank-first with details on request, and a plain “skip all” when none clear the floor), and 4 (After Shift data entry — screenshots, CSV exports and voice logging reconciled into one ledger, with no timer pressure). The narrow bet behind it: Flex-block drivers who fill gaps with food delivery, with the offer judge + pause-all + rating guardrails as the core.