Skip to content

FleetPilot — Current Status

Updated: 2026-06-17 Update this file at the end of every session.


Where we are

Deep into Phase 2. The core product is built and functional. The PCN AI pipeline is complete and hardened, and violations urgency now accounts for discount deadlines throughout the UI. Incidents has just been fully revamped to match the design system and the Violations triage/expandable-row pattern, including a real link to the matched booking. Inspection photos are now organised into named sections (front/rear/sides/interior/other) per booking.


Recently completed (last 2 weeks)

Ticket What Date
SAA-118 Incidents page revamp — triage hero (3 lanes), filter pills, expandable rows, inline edit (single save), renter/booking cards with real link to /bookings/[id], detail page consolidated to one form, full design token migration (no hardcoded grays/hex) 2026-06-17
SAA-95 Inspection photo sections — front/rear/driver/passenger/interior/other per phase (12 slots total), new section column on inspection_photos, section-scoped lightbox, X to dismiss failed uploads, stuck-at-0% timeout fix 2026-06-13
SAA-117 Violations triage — "Expiring discount" amber lane, click to filter, hidden at zero 2026-06-13
SAA-116 Violations urgency now reflects effective deadline (discount when sooner and active, full due date otherwise) — effectiveDeadline() helper in violations-types.ts 2026-06-13
SAA-115 Surface discounted due date in violations UI — stat strip primary/secondary, table sub-label, detail metadata row; lib/violations/discount-due.ts helper extracted 2026-06-12
SAA-114 PCN review form fixes — same-day discount deadline now valid (> not >=); discount fields clearable (min removed); empty string → null confirmed in all actions 2026-06-12
SAA-113 Cross-field validation on PCN review form + Claude calculates discounted_due_date from "within N days" phrasing 2026-06-12
SAA-112 Bug: PGRST204 on violation insert — resolved by running supabase db push after SAA-86 migration 2026-06-12
SAA-86 PCN discount tiers — discounted_amount_gbp + discounted_due_date on violations; Claude extraction, scan flow, review form, expanded panel, detail page, all write actions 2026-06-12
SAA-81 Duplicate PCN detection — processing-time + confirm-time dedup, amber badge, warning banner, operator override 2026-06-09

Active / In Progress

Nothing currently in progress.


Next up (prioritised)

  1. SAA-119 — Incidents auto-match to booking/customer based on incident date + vehicle, with non-blocking warning on manual override that conflicts with booking dates. Builds directly on SAA-118.
  2. SAA-80 — Toast notifications. Foundational UX primitive.
  3. SAA-79 — Navbar revamp + wire badge counts to real data.
  4. SAA-46 — UK GDPR compliance. MUST be done before first real operator onboards.
  5. SAA-31 — Social DM pipeline (Instagram → bookings). Big Phase 2 differentiator.
  6. SAA-65 — Driver identity + licence verification (Pro feature).
  7. SAA-56 — DVLA reg plate auto-fill on vehicle add.
  8. SAA-44 — Inline vehicle availability calendar on booking form.
  9. SAA-32 — Live GPS hub (real tracker API integration). Phase 3.

Backlog (all open tickets)

Improvements (labelled)

Ticket Title Notes
SAA-79 Navbar revamp Fix hardcoded badge numbers first
SAA-80 Toast notifications Foundational UX primitive needed everywhere
SAA-119 Incidents auto-match + date-conflict warning Builds on SAA-118 (done)

Phase 2

Ticket Title Notes
SAA-31 Social DM pipeline (Instagram) Major differentiator, needs Instagram API research
SAA-44 Inline vehicle availability calendar Blocked by SAA-91 (done)
SAA-46 UK GDPR / legal compliance Do before first real operator
SAA-48 Violations + incidents on booking detail Partially covered by SAA-49/63/118
SAA-56 DVLA reg plate lookup Improve vehicle add UX
SAA-58 PCN queue reminder letters Improve PCN flow
SAA-65 Driver identity + licence verification Pro feature, DVLA KADOE + Credas
SAA-67 Admin vs employee permissions Fine-grained RBAC
SAA-68 Tracker brand display in UI Show tracker logo in fleet/bookings/live
SAA-69 Vehicle tracker/immobiliser config Add tracker to vehicle profile

Phase 3

Ticket Title
SAA-32 Live GPS hub (real tracker API)
SAA-33 Smart location intelligence
SAA-66 Speed/time graph

Phase 4

Ticket Title
SAA-70 Customer-facing booking layer (white-labelled)

Evergreen / Standards

Ticket Title
SAA-20 Ideas backlog
SAA-29 Feature ideas backlog
SAA-35 Pricing strategy
SAA-37 Mobile standard (living reference)

Known issues / tech debt

  • SAA-48 — violations + incidents on booking detail page partially done but not fully wired
  • Email notifications stubbed (Resend not configured) — violations recovery notices log only
  • Real GPS not wired — live tracking uses mock data from lib/mock/fleet-positions.ts
  • Mapbox tiles not integrated — live tracking uses placeholder SVG map
  • Navbar badge counts are hardcoded — SAA-79 will wire to real data
  • Incidents booking-match select (manual flow, SAA-118) shows the vehicle's 20 most recent bookings rather than date-filtering to ones covering incident_date — flagged with a TODO in code, to be tightened as part of SAA-119

What's been validated

  • Multi-tenant auth with Supabase + FastAPI JWT middleware — working in production
  • PCN scan pipeline — tested with real PCN documents (Croydon Council, TfL)
  • Cloud Tasks job queue — working with retry, hardening, and dedup (SAA-81)
  • Document upload to GCS — working with signed URLs
  • Bookings create + detail page — fully wired (SAA-89, SAA-91)
  • Violations end-to-end — triage, smart-match, dedup, archive, queue dismiss, discount tiers, inline editing, due date extraction, cross-field validation, discounted due date UI, effective-deadline urgency, expiring-discount triage lane (SAA-74 through SAA-117)
  • Incidents end-to-end — triage hero, filter pills, expandable rows, inline edit, auto-no-reload renter/booking updates, linked booking card to /bookings/[id] (SAA-118)
  • Inspection photos — sectioned upload (front/rear/sides/interior/other), real GCS storage, signed URL reads, section-scoped lightbox (SAA-61, SAA-94, SAA-95)
  • Photo upload error-state UX — dismiss without retry, auto-timeout on stalled 0% progress (SAA-95 follow-up)
  • Login security — httpOnly cookie, no URL params (SAA-108)

Pricing (not built yet)

Tier Price Fleet
Starter £49/month ≤10 cars
Growth £99/month ≤25 cars
Pro £179/month ≤50 cars

14-day free trial on Growth, no card required. Validate with first 3-5 real operators before hardcoding.