← Back to home
← Back to the blog
5 min read· DirtFleet team

What shipped this sprint: an opinionated launch in 20 batches

A founder-facing meta-post: 20 batches over a single sprint shipped the maintenance + tools + work orders + OSHA prep + certified payroll + public API + webhooks + trust hub + the marketing site that wraps it. Here's the operating habit behind the cadence.

Twenty batches in a single sprint shipped the maintenance core, tool tracking, work orders, projects, OSHA prep, certified payroll, the public REST API, signed webhooks, the trust hub, and the marketing site that wraps it. Here's the operating habit behind the cadence — useful if you're building opinionated B2B SaaS in 2026 and wondering how to ship without a 50-person team.

The habit, in one sentence

Every batch ships a Prisma model + a lib function + a REST endpoint + a UI surface, with tests, behind one commit. No feature-flagged branches sitting open for weeks. No “UI's done, API later.” Each batch is small enough to fully land in one or two focused sessions; each batch is complete enough that it could be the last thing we ship and the product wouldn't feel half-built.

What 20 batches looks like

  • Batches 1–6: the original viability punch list. Work orders, project cost-allocation, pre-trip checklists, demo sandbox, trial-email lifecycle, per-asset Stripe metering, S3/R2 photo storage.
  • Batch tools: the Tool Tracking module + universal /scan/[token] deep links. 27 files, including the QR PNG generator.
  • Batches 1–4 of the original 36-item recovery: financials + DTC AI + anomaly detection + service-catalog seeds + DR runbook (B1); yard RBAC + doc vault + hardware preorder + re-engagement automation + SMS + voice-to-quick-log (B3); audit + incidents + certs + consent + public API + webhooks + Samsara shell (B4); SSE + Spanish + prevailing-wage + status + Resend bounce + changelog (B5).
  • Batches 6–10: Sentry shim, customer impersonation, /compare/vs-fleetio + vs-samsara, QBO + WorkOS scaffolds; blog scaffold + 2 posts, /compare/vs-geotab + vs-motive, job queue, /resources, Capacitor docs; impersonation banner, status incident timeline, /compare/vs-whip-around, cost-per- hour blog, /docs; Redis rate-limiter, 3 resource pages, 2 blog posts; logging deep-dive, no-lock-in blog, /support/faq.
  • Batches 11–20: ag + rental + mining + trucking deep-dives, /docs/api, /security, /partners, /customers, /roadmap, /humans.txt, /sla, /press, /careers, /about, /contact, /trust, security.txt, plus 12 founding blog posts.

What made it tractable

  • One repo, one schema, one deploy target. Next.js + Postgres + Prisma + Vercel. No microservices, no GraphQL gateway, no service mesh. The whole product is in one place.
  • Integration-first product design. Every feature ships with a public REST endpoint before the in-app UI is final. The same lib functions back both the dashboard and /api/v1/..., so we never have to build the same read-path twice.
  • Schema-first batches. Each batch starts with a single Prisma migration that adds everything that batch needs. No iterative migration churn, no “we'll add the field later” bugs.
  • Tests after, not before. Unfashionable opinion. Pre-launch, we write tests when the lib stabilizes, not when the lib's being shaped. 574 tests today, including DB-integration tests for everything stateful. Zero TDD ceremony.
  • Documented decisions. The non-obvious calls (why Capacitor not React Native, why Postgres-as-job-queue, why no GraphQL) live in docs/*. Future-us will thank current-us; new contributors get the context, not the code-archaeology homework.

What we deliberately skipped

  • Native iOS / Android. PWA covers the field today. Capacitor docs are written for when a customer demands App Store distribution.
  • Predictive maintenance ML. No data yet to justify the claim.
  • Conversational AI assistant. Knowledge- retrieval over fleet data is on the roadmap; we shipped deterministic anomaly detection + DTC narrative first.
  • Multi-region data residency. Single Postgres + single Vercel region today. EU / APAC residency lands with the first compliance-required customer.

What's next

Paying-customer growth, not more features. The product is opinionated enough to be useful and honest enough to be trustworthy. The next sprint is sales — equipment-dealer partnerships, the beta cohort signing public case studies, and the first paying QBO customer triggering the live OAuth wiring. See /roadmap for specifics.

→ Full changelog · → Start free trial