Spurwert

Auto shop software built for the German market, in the language shop owners actually use. An online booking wizard for independent garages, first tested in Munich-Giesing, then scaled to roughly 21,800 independent garages across Germany. Public site at spurwert.de.

What

Booking wizard + shop backend

Customer books an appointment online (glass, tires, MOT, service). The shop runs everything from a lean backend. No phone call needed.

Why

The existing tools don't fit

The big DMS systems (Werbas, CarLo, repdoc) are too heavy and too expensive. The cheap ones are too thin. Most shops fall back to Excel and Outlook.

For whom

Pilot first, then roll out

Pilot tenant: an independent master shop in Munich-Giesing. Hardens the software against real shop-floor reality. After that, roll-out to more paying shops.

Live status · As of today

Where we stand, step by step.

16 of 28 steps done. Phase 1 skeleton fully live, re-audit verdict GO. Current: step 17, prepayment via Stripe next. Goal: phases 1–10 by Q3/2026.
57% roadmap done
Done — Pre-MVP groundwork
1
Step 01
Idea — own shop as live lab
2
Step 02
Market analysis — surveyed existing DMS systems
3
Step 03
Research passes — roles, flows, pains, competitors
4
Step 04
Whiteboard — ~110 items categorized
5
Step 05
Phased plan signed off by pilot shop
6
Step 06 · Click for detail
PRD #1 — Phase 1 final spec

First module spec, written down to issue-ready detail. What's in it:

  • 57 user stories — from the customer who books to the shop that blocks slots.
  • Data model — tables, relations, required fields, deletion logic.
  • Edge functions — which server endpoints need to exist and what they return.
  • Acceptance criteria per story, so later it's clear when something is actually done.
7
Step 07
Grill — PRD stress-tested against the domain
8
Step 08 · Click for detail
Reviews — 4 independent experts in parallel

Four separate reviewers took the PRD apart in parallel, each with their own lens:

  • SaaS architecture — how do frontend, backend, and database hang together cleanly?
  • Postgres schema — are the tables built so they still hold up at 50 shops?
  • GDPR compliance — duties around data protection, deletion, access requests, processor agreements.
  • Multi-tenant operations — how do you run this so one shop login never sees another shop's data?

From the four reviews, 12 hard blockers were consolidated (see next step).

9
Step 09
Decisions — 12 hard blockers consolidated, 7 decisions locked in
10
Step 10 · Click for detail
ADRs — 8 architecture decision records

Every load-bearing architecture decision filed as its own document, with context, alternatives considered, and consequences. The eight ADRs:

  • Edge function as the single insert gate
  • Multi-tenancy by design from day 1
  • Multi-tenant ops foundation
  • Customer identity normalized (no pseudo-duplicate swamp)
  • Tenant resolution as its own module
  • Per-service detail tables instead of one giant table
  • Security-definer RPCs instead of a raw service-role key
  • Tenant branding white-label by default ("Powered by Spurwert" only quietly in the footer)
11
Step 11
Directive 8 — no AI in the running backend
12
Step 12
Scaling triggers — 11 topics filed under "later, when X happens"
13
Step 13 · Click for detail
Issues written — 20 vertical-slice issues for Phase 1

The PRD was cut into 20 vertical tracer-bullet slices. Each issue runs from data model to frontend through every layer. The order is fixed:

  • Foundation (#01–#03) — repo setup, database schema, tenant resolution.
  • Core booking (#04–#09) — booking server endpoint, mail dispatch, availability module, vehicle ID, wizard frontend.
  • Backend (#10–#13) — login, booking overview, manual appointment entry, blocked days.
  • GDPR (#14–#15) — data export, anonymization.
  • Polish (#16–#19) — master data, calendar sync, holidays, localStorage auto-expire.
  • E2E + drill (#20) — smoke test and backup-restore drill.
14
Step 14
Issue triage and build kick-off
Done — Phase 1 + 1b launch-ready
15
Step 15 · Click for detail
Phase 1 — skeleton Phase 1 GO

Phase 1 skeleton fully live, all 20 vertical-slice issues shipped. Re-audit verdict on 2026-05-18: Phase 1 GO. In a wave session on 2026-05-18, 11 PRs were merged together:

Wave-session merges · 11 PRs

  • #24 SMTP fix — denomailer → nodemailer (Edge-Streams crash fixed).
  • #26 Polish wave — progress bar plus Mon–Fri mini calendar.
  • #28 Glass-light state machine — MVP reactivated, decision table expanded.
  • #30 Tenant-branding rendering — logo, colors, mail-from per tenant live.
  • #32 Mobile touch targets — walkthrough findings M26.
  • #33 Audit-v2 methodology + tooling — re-audit run 2026-05-18.
  • #34 Backend UI polish — walkthrough findings B26.
  • #42 Production hardening — 4 blockers plus 3 majors from the re-audit.
  • #43 Polish walkthrough findings — P26.
  • #44 Re-audit iter-2 — sub-task fixes plus skip-test reactivation.
  • #45 Recovery markers and password-login toggle removed from Phase 1.

Also live

  • Cloudflare Workers DDoS protection in front of the create-booking gate (IP bucket).
  • Pre-launch audit methodology v2 — 6 mandatory steps (code, schema, GDPR, Playwright click test, performance, security).
  • Design system with Spurwert override (indianred hue) prepared for token consolidation.

Only two small production tasks left (sync-calendar edge deploy, 2 migrations to commit as files). After that, test run with persona scripts A/B/C. Phase 1b: see step 16.

16
Step 16 · Click for detail
Phase 1b — glass flow (light) Phase 1b live

Issue #21 Wizard Glass-Light merged (PR #15 + #28). 9-step wizard live: damage description → damage-location sketch → insurance path with comprehensive type and coverage → slot selection. MVP state machine reactivated, decision table expanded, insurance step switched to comprehensive type. UX source: the archived 9-step variant from automuc.de.

Now
17
Step 17 · Current
Phase 2 — prepayment via Stripe
Open — Wizard phases, fixed order
18
Step 18
Phase 3 — customer comms (SMS, status link)
19
Step 19
Phase 4 — tire flow
20
Step 20
Phase 5 — MOT flow
21
Step 21
Phase 6 — service (3 packages)
22
Step 22
Phase 7 — "Other" flow
23
Step 23
Phase 8 — full glass flow with insurer logic
24
Step 24
Phase 9 — accident flow
25
Step 25
Phase 10 — WhatsApp + more slots per day
Open — Scaling
26
Step 26 · Click for detail
Pilot launch at automuc.de (Munich-Giesing)

Groundwork partly done. Full pilot launch hinges on the wizard switch:

  • Public site live at automuc.de — final pre-MVP variant, multi-brand shop presence for the workshop.
  • GDPR Phase 1 live — privacy page deployed, Cloudflare listed as sub-processor, DPA signed by Max (owner countersignature pending).
  • Wizard CTAs currently as mailto — appointment requests go to mail@automuc.de with a pre-filled subject. Wizard JS stays in the HTML, no trigger.
  • Mailbox at the shop since 2026-05-08 on its own All-Inkl account — own login, own domain, own replies.
  • Pending: reactivate wizard CTAs on the tenant domain, switch privacy page back to full version, write the branding JSON into workshops.branding.

Once the Phase 1 platform passes the test run, the wizard pilot goes live, and the first real tenant data starts to flow.

27
Step 27
Beta with 5–10 Munich customers
28
Step 28
First paying external tenant