Limited intake · 5 broker partners · Q3 2026

The console
behind your
rental brand.

FleetDesk is the multi-brand fleet manager that runs the operator side of addFleet. Keep your booking site. Keep your customers. Plug FleetDesk in behind it and stop asking your front-desk to live in spreadsheets, WhatsApp, and three partner portals at once.

Live at manager.addfleet.ee · v0.4 · 26 migrations · 3 brands
Currently powering the operator side at
V Väikebussirent24
A AAA Rent
a addCar · UAT
+ your brand?
01 · Highlights

Six things operators notice on day one.

Not every feature lives on this page — the full list is below. These are the ones the woman behind the counter mentioned first.

Timeline

One timeline, every booking, every brand.

Sticky-left vehicle column, virtualised day grid that scrolls to 2030 without breaking a sweat. Drag empty cells to create a booking. Drag pills to reassign cars. Five sort modes when one operator likes plate order and the other lives by busyness.

Sync

Two-way partner sync.

VikRentCar + ADDCAR (Rentway SOAP). Inbound polling and outbound status push.

Auto-preassign

SIPP → vehicle, instantly.

Inbound rows resolve to your highest-priority free car. Dashed-amber pulse until accepted.

Providers

One console, three brands.

Each provider owns its own logo, terms (ET + EN), and allowed status set. Contracts pick the right header automatically.

Auth

Passkey, Face ID, or PIN.

WebAuthn on every device. PIN gate is brute-force throttled — 3 fails and the IP is blocked for 24 hours.

Mobile

Tablet-first PWA.

Add to home screen. Safe-area inset support. Two giant action tiles for Pick Up / Drop Off.

02 · The console

Four screens we'd want a broker to look at.

No marketing renders. These are the real workspaces operators use every day at Keevise 10 in Tallinn.

/timeline

Plan a week in one glance.

Multi-unit vehicles stack into lanes. Pre-booked holds show as a striped fill. The current hour is a faint indigo line you can't miss. Scroll horizontally for months; nothing janks.

  • Five vehicle sort modes: manual, plate, group, busyness, inspection.
  • Drag-to-create on any empty cell.
  • Drag pills to reassign with a single drop.
  • 30-minute turnover buffer enforced server-side.
fleetdesk · timeline
Mon 25
Tue 26
Wed 27
Thu 28
Fri 29
Sat 30
Sun 31
Mon 01
Tue 02
Wed 03
VW Caravelle · 261LMA · 9p
Müller · 4d Hold Smith · RA Tamm
Toyota Proace · 189KFA · 8p
Henkel · pre Lewis · 5d Reyes · 4d
Renault Trafic · 923MNB · 9p
D'Agostino Pending Schultz · on rent
Mercedes Vito · 442TKO · 9p
Aalto · 5d Reyes Hold
Ford Tourneo · 771ASR · 9p
Sõnajalg · RA Henriksen · 6d Hold
Peugeot Expert · 336LOA · 8p
Baker · 3d Liu · 2d Mägi · 5d
booking · #4218
V Väikebussirent24 · provider locked from VRC sync
Anneli Tamm · ET
Anneli
Tamm
EE 1248471
OV332
Child seat 9–18 kg · drop after-hours OK
VW Caravelle · 261LMA
28 May 14:00 · Peakontor
01 Jun 10:00 · Peakontor
pending confirmed cancelled
/reservations/4218

Every field you actually need for a contract.

Structured customer fields beat a freeform "customer" string every time. Driver licence, flight number, country of origin, DOB, notes — round-tripped to partners that accept them, kept locally for those that don't.

  • Provider is locked when the row came from a partner sync.
  • Status dropdown filters to that provider's allowed set.
  • Photos + damage marks attach with CASCADE delete.
  • Soft-delete with restore / purge (Trash view).
mobile · iOS PWA

The operator's phone, upgraded.

Two giant tiles for Pick Up and Drop Off. A 3-up stats row to know if today is busy before the first coffee. Full-screen trip sheets with smart defaults — current time, previous-booking mileage, 100% fuel.

  • Add to home screen on iOS, full-bleed, safe-area aware.
  • Dark navy header with FleetDesk wordmark, search, bell.
  • Mobile refresh with spinning animation.
  • Bilingual ET / EN / FI / RU at the front desk.
4 Pick Up
2 Drop Off
17
Active
4
Pickup
2
Return
AT
Anneli Tamm
14:00 · 261LMA · 4d
pending
DS
Daniel Schultz
15:30 · 923MNB · 7d
KH
Kjell Henriksen
16:45 · 771ASR · 6d
settings · providers
AAA Rent
aaa.rent.ee · ET + EN terms
pendingconfirmedcancelledclosed
Väikebussirent24
vaikebussirent24.ee · ET
pendingconfirmedcancelled
addCar
uat.booking-api.addcarrental.com
pendingconfirmedrara_closedno_show
Add your brand
your-brand.com
/settings/providers

Your brand, not ours.

Drop a logo (PNG/JPG/SVG, 2 MB max). Paste terms in Estonian and English. Pick which statuses your operators are allowed to set. The PDF contracts pick the right header automatically.

  • Per-provider logo, terms (ET + EN), allowed-status list.
  • Linked to every reservation via provider_id FK.
  • Partner-sync rows resolve to the right brand via source prefix.
  • Contracts fall back to legacy global terms if a provider is missing copy.
03 · The full list

Everything we've shipped, grouped honestly.

No "AI-powered" anything. Just the eight areas FleetDesk currently covers, end-to-end, in production.

Operations

  • Virtualised timeline with sticky-left vehicle column
  • Drag-to-create on empty cells
  • Drag-to-reassign across vehicles
  • 5 vehicle sort modes — manual, plate, group, busyness, inspection
  • Zoom on day/week/month granularity
  • Indefinite vehicle locks ("do not rent" holds)
  • Read-only archive viewer for past partner data
  • Categories with color overrides + drag-sort
  • Per-category vehicle priority lists
  • Configurable live polling, 10–600 s

Reservations

  • Structured customer fields — name, DL, flight, country, DOB, notes
  • Per-provider status sets (pending → confirmed → ra → closed…)
  • New statuses no_show and ra_closed
  • Damage marks drawn on a car diagram (JSON)
  • Reservation photos with CASCADE delete
  • Optional extra_details JSON for contracts (renter ID, billing, insurance)
  • Soft-delete Trash with restore + purge
  • 30-min turnover buffer enforced on save

Vehicles

  • SIPP-coded categories with operator color overrides
  • Owner / sub-rented ownership flag
  • Inspection date reminders
  • Compulsory insurance reminders
  • Comprehensive insurance reminders
  • Generic VEHICLE_EVENTS registry — adding a 4th event type is one line
  • 14 / 7 / 3 / 1 day popup state machine with snooze
  • Multi-event yellow banner on edit dialog
  • Row tint on the vehicles list when any event ≤14 days

Providers

  • Three brands shipped: AAA Rent, Väikebussirent24, addCar
  • Per-provider logo upload (PNG / JPG / SVG, 2 MB)
  • Per-provider terms editor in Estonian and English
  • Per-provider allowed-status set
  • Provider-locked dropdown on partner-sync rows
  • Auto-link via ProviderResolver source-prefix mapping
  • Contract renderer binds the right header automatically
  • Falls back to legacy global terms if a provider's are missing

Sync & partners

  • VikRentCar adapter — full two-way, modified-since cursor
  • ADDCAR Rentway SOAP adapter — no ext-soap dependency
  • 14-day-back / 180-day-forward poll window
  • Push-back of local status to partners
  • Auto-preassign by SIPP category + priority list
  • One-way 24 h gap honored across overlap
  • Append-only sync_log per attempt
  • UPSERT on (source, source_ref) — never clobbers manual overrides

Contracts & PDF

  • 1-page rental contract template
  • Rendering via Playwright / headless Chromium microservice
  • HTML → PDF over Unix-domain socket
  • Token substitution from extra_details JSON
  • Check-in + drop-off PDFs per reservation
  • Files stored at /uploads/contracts/booking-{id}/
  • PDF → text extraction endpoint for inbound docs
  • Idempotent start script — drop in cron

Security

  • PIN gate with brute-force throttle (3 fails → 24 h IP block)
  • WebAuthn passkeys / Face ID
  • Bearer token + X-Fleet-Token auth
  • Query-string ?t= for image / link resources
  • Per-admin accounts with audit log
  • IP allowlist editor (with caller-IP indicator)
  • HMAC-SHA256 signed outbound webhooks
  • HPOS-compatible WooCommerce integration

Mobile & PWA

  • ≤768 px adaptive layout
  • Dark-navy header with FleetDesk wordmark + bell + refresh
  • Two big action tiles — Pick Up / Drop Off
  • 3-up stats row (Active / Pickup today / Return today)
  • iOS PWA capable, status-bar styled
  • Safe-area inset support — env(safe-area-inset-*)
  • Full-screen trip sheet with smart defaults
  • Reservations-to-approve card list

Reliability & ops

  • Daily auto-backup — fires 14:00–18:00, never duplicates
  • Backup includes src/ public/ sql/ uploads/ + env example
  • Backup-now tile on dashboard
  • Off-site backup pull (runs on operator's Mac)
  • One-way mirror sync — db-export + mirror-restore
  • Idempotent migrations via _migrations table
  • Per-endpoint frontend error catches — one bad route doesn't break the app
  • Per-call try/catch on env parsers — malformed env can't kill the cron

Activity & notifications

  • Audit log surfaced as Recent Activity feed
  • Bell dropdown with 200 most-recent events
  • Per-operator clear watermark (no shared "mark all read" surprise)
  • Per-kind notification enable/disable map
  • Configurable duration + sound + mute toggle
  • Signature-based change detection — skips re-render when nothing changed
  • In-app bug-report tracker with multipart attachments

Search

  • Topbar input with grouped dropdown
  • Commands / Documents / Vehicles / Reservations groups
  • Aliases — tehno, tüv, mtpl, liiklus
  • Cmd-K keyboard-first
  • Inspection + insurance covered under Documents

Booking-site plugin

  • fleet-rental WordPress / WooCommerce plugin
  • 5-season + per-vehicle LOS bracket pricing
  • Weekend flat-rate logic (Fri 16:00 → Mon 10:00)
  • After-hours surcharge (Estonian holidays via Gregorian computus)
  • Standby order status — "Pay at pickup", no online charge
  • Per-vehicle availability calendar shortcode
  • Insurance comparison cards on product page
  • Dual-month date-range picker, no JS deps
04 · API

A REST API that doesn't pretend to be a SaaS.

Bearer token in, HMAC-SHA256 signed webhooks out. You can drive every important surface of FleetDesk from your existing booking site, your data warehouse, or a cron on someone's MacBook.

The same REST surface that powers the FleetDesk frontend is the one we hand brokers. No second "partner API" tier. If we can build a console feature with it, you can build whatever you want on top.

Bearer auth HMAC-SHA256 webhooks UPSERT on (source, ref) HPOS-compatible Idempotent migrations
GET /api/reservations?from=2026-05-25&to=2026-06-30
$ curl https://manager.addfleet.ee/api/reservations \
   -H "Authorization: Bearer fd_live_5b7f9c…"

{
  "reservations": [
    {
      "id": 4218,
      "source": "vrc:vaikebussirent24",
      "source_ref": "19874",
      "provider_id": 2,
      "vehicle": { "id": 17, "plate": "261LMA" },
      "customer": {
        "first_name": "Anneli",
        "last_name":  "Tamm",
        "driver_license": "EE 1248471",
        "flight_number": "OV332",
        "country_of_origin": "EE"
      },
      "pickup_at":  "2026-05-28T11:00:00Z",
      "dropoff_at": "2026-06-01T07:00:00Z",
      "status": "pending"
    }
  ],
  "sync_log_id": 8124
}
POST webhook → your endpoint
# Outbound — every reservation lifecycle change
X-Fleet-Event:     reservation.confirmed
X-Fleet-Signature: sha256=9c1f…
Content-Type:     application/json

{
  "event": "reservation.confirmed",
  "reservation_id": 4218,
  "provider": "vaikebussirent24",
  "vehicle_plate": "261LMA",
  "actor": "operator:liisi",
  "at": "2026-05-25T14:02:11Z"
}

# Verify (PHP)
$expected = hash_hmac('sha256', $rawBody, $secret);
$ok = hash_equals('sha256='.$expected, $headers['X-Fleet-Signature']);

Endpoints — a representative subset

GET/api/pinghealth check, returns server time
GET/api/vehiclesall vehicles + categories + locks
PUT/api/vehicles/{id}edit dates / ownership / inspection
PUT/api/categories/{code}/vehicle-orderpriority list for auto-preassign
GET/api/reservations?from&towindow of bookings
POST/api/reservationscreate a booking
PUT/api/reservations/{id}/statusstatus transition (per-provider set)
DEL/api/reservations/{id}soft-delete to Trash
POST/api/reservations/{id}/restorerestore from Trash
POST/api/reservations/{id}/photosmultipart photo upload
GET/api/providersbrands + logos + terms
POST/api/providers/{id}/logoPNG / JPG / SVG, 2 MB
POST/api/sync/run?adapter=vrcmanual sync trigger
GET/api/sync/log?adapter&sinceattempt-by-attempt history
POST/api/backups/runon-demand zip, daily cron-gated
GET/wp-json/fleet/v1/...booking-site plugin REST surface
05 · Roadmap

What's shipped, what's next, what's later.

No hand-wavy quarter graphics. This is the actual handoff doc, copy-pasted, with the dates rounded.

Shipped

This quarter · in production
  • ADDCAR Rentway SOAP adapter
  • Multi-brand providers + logo upload
  • WebAuthn passkeys / Face ID
  • Damage marks on car diagram
  • Structured customer fields
  • Soft-delete Trash + restore + purge
  • Login throttle + IP block
  • Append-only sync_log table
  • Rebuilt 1-page contract PDF (Playwright)
  • In-app bug tracker w/ attachments

Now

In progress · weeks away
  • Live price preview on product page
  • Customer-facing booking emails (standby transition)
  • ADDCAR ListReservations — awaiting partner SOAPAction
  • Standby auto-expiry cron
  • Location-aware search filtering
  • Multi-unit availability — precise per-unit window

Later

Vision · 2027 candidates
  • Native iPad operator app (UIKit)
  • Damage diagram auto-detection from photos
  • Suggested-vehicle scheduling assistant
  • Cross-broker fleet pooling (opt-in)
  • Dynamic pricing recommendations
  • Embedded payments (vs. current Pay-at-pickup)
06 · Why FleetDesk

Five honest reasons over five years of SaaS pitches.

We've been the broker on the other side of these pitches. So we'll keep it short.

01

Keep your booking site.

FleetDesk slots in behind whatever you already sell on — WordPress + VikRentCar, addCar, your own custom thing, or three of them at once. We don't want to be your storefront. We want to be the brain that the storefront talks to.

02

One console, every brand.

Operators don't switch tabs between three partner portals. Owners get a unified P&L across brands. New providers are added in a settings screen, not a deployment.

03

No SaaS lock-in.

Self-host on €5 shared hosting and own every byte. Or use ours — your data exports as a single zip whenever you want. Daily auto-backups are yours by default, not a paid add-on.

04

Five-minute onboarding.

The front-desk operator is productive on a tablet the same day. The PWA installs to home screen on iOS, the layout adapts at 768 px, and the two giant tiles for Pick Up / Drop Off mean nobody asks "which menu is it under?"

05

Built with operators, not investors.

Every feature shipped this quarter came from a question the woman behind the counter asked us. Damage marks. Flight number. After-hours surcharge. None of that is on a board deck. All of it ends a real recurring argument in a real rental office in Tallinn.

Q3 2026 intake

We're onboarding five broker partners this quarter.

FleetDesk is run by a two-person team that already operates one fleet. We can do hands-on onboarding for five brokers a quarter without breaking the thing that makes us useful. After that, you go on the list for next quarter.

hello@addfleet.ee See the live console
3 brands
In production
99
Vehicles synced
26
DB migrations
0
Setup fee

Apply for broker access

No commitments. We'll reply within 48 h with a 30-minute intro call slot or a polite "next quarter".

By submitting you agree to a single follow-up email. We don't run drip campaigns. hello@addfleet.ee