Skip to main content

RoundTrip Next Phase Implementation Plan

Status: Living document. Built from a full backlog audit completed 2026-08-02; updated 2026-08-04 to incorporate TRA-370's scoping session (ticket scheduling), its real dependency relationship with TRA-242, and three newly captured ideas not yet placed into a phase. Sequencing reflects real dependencies and current business priorities, not just ticket age or original priority label — several stale priorities were corrected as part of the original audit (see Appendix).

This plan sequences what's left in the backlog into a real order of operations, not just a priority-sorted list. Phases are meant to be worked roughly in order, though items within a phase can move independently of each other.


Guiding principles for this sequencing

  • Trust and liability issues come before feature work. Anything that risks a real prospect being misled or exposed to unbacked promises jumps the queue, regardless of technical size.
  • Friction reduction for new signups outranks net-new features right now. With outreach (postcards, SEO) actively in motion, anything that makes a first-time tenant's onboarding smoother has outsized value today specifically.
  • Real dependencies get sequenced together, not scattered by ticket number. Several items only make sense to build as a unit (see each phase).
  • Tech debt and AI-tooling work wait for their own dedicated sessions. Both are real and worth doing, but neither is blocking anything above it.

Phase 0 — Trust and liability (do first, small in size, large in consequence)

TicketWhatWhy first
TRA-360Subscription plan bullets overstating capabilityAlready Urgent — a real prospect could sign up believing something false. Homepage/plan-card copy fix already drafted; confirm it's fully live.

Phase 1 — Reduce friction for the signups already in motion

Postcards are out, SEO work is starting. These directly affect what a brand-new tenant experiences in their first hour.

TicketWhatWhy now
TRA-263CSV import for Clients and InventoryHighest-leverage onboarding fix in the whole backlog — a real business won't hand-enter 100+ existing clients or parts. Resolve the .xlsx scoping question (see Open Decisions) before starting.
TRA-241PWA photo captureBackend already complete — frontend-only work, fast to ship, real technician-facing value.
TRA-271Edit/remove user & technician profilesBasic account hygiene gap — no way to fix a typo'd name or remove someone who left.

Phase 2 — Twilio cluster (build together, not separately)

These four only make sense as one unit — building any one without the others leaves dead code or an unfinished feature.

TicketWhat
TRA-80Twilio SMS service itself — nothing exists yet
TRA-219A2P 10DLC carrier registration — required before any SMS reaches a real customer
TRA-236On-my-way SMS when a technician starts a ticket
TRA-210Invoice delivery via SMS

Phase 3 — Billing completion (original PRD "Must Have" scope, still unbuilt)

TicketWhat
TRA-144 + TRA-213Quotes — domain partially built, no frontend; 213 is the completion of 144, treat as one item
TRA-212Credit note issuance for finalized invoices
TRA-214Send Invoice modal — email/SMS toggle, recipient override (depends on Phase 2 for the SMS half)
TRA-151 + TRA-152Auto labour line items + tax rate pre-population — share a tenant-settings table, build together

Phase 4 — Dispatch & data quality

Scoped in detail 2026-08-04 — TRA-370 and TRA-242 now have a confirmed real dependency, not just a loose thematic grouping, so order matters here more than in most other phases.

TicketWhatWhy this order
TRA-285Google Maps Places Autocomplete — fixes real geocoding failures on abbreviated addresses todayNo dependency on the rest of this phase, can move anytime
TRA-370Ticket scheduling — ScheduledDate, multi-day List view, two-rule rollover job for unfinished work (in-progress carries forward as-is; not-started rolls to an unscheduled queue)Foundational — establishes the data model everything else in this phase's scheduling work builds on
TRA-165Choose service date on ticket creationThe create-time half of TRA-370's scheduling model — natural to build alongside it, not separately
TRA-242Dispatch board drag-and-drop, collapsible panels, Calendar/Schedule tab views (Gantt-style timeline dropped in favor of a cleaner modern view, decision made 2026-08-04)Depends on TRA-370 — do not start the Calendar/Schedule view work before 370's data model lands
TRA-166Ticket filteringNo dependency, can move anytime
TRA-238PWA push notificationsNo dependency, can move anytime

Phase 5 — Tech debt (own session, not urgent, but real)

TicketWhat
TRA-359Route Stripe writes through the Tenant aggregate instead of raw SQL
TRA-364Unit test coverage for Tenant's subscription-lifecycle methods
TRA-367Consolidate all modals onto a shared, per-file ModalShell
TRA-365Replace UI-driven Entra login in Playwright with ROPC
TRA-148Split useBilling.ts to match the established one-hook-per-file pattern
TRA-170Update vite-plugin-pwa for Vite 8 support
TRA-261Add Role to ITenantContext, remove the IncludeRevenue workaround
TRA-168Migrate the Azure DevOps build agent off the laptop

Phase 6 — Monitoring (solo-founder safety net, currently nonexistent)

TicketWhat
TRA-115Application Insights, error/cost alerting, solo-developer on-call setup
TRA-248Research a database monitoring/evaluation tool — sequence with TRA-115, don't duplicate research

Phase 7 — AI cluster (blocked on its own dedicated planning session)

Nothing here starts until the tooling decision is made — building against the wrong stack is worse than waiting.

TicketWhat
TRA-362Evaluate AI tooling path — n8n vs. MS Foundry Cloud vs. MS Foundry Local — do this first, blocks everything else in this phase
TRA-361 / TRA-120 (AI piece)In-app chatbot/assistant — same idea filed twice, needs one owner before building
TRA-120 (remaining)Contextual help panel + searchable knowledge base — doesn't depend on the AI tooling decision, could move independently of the rest of this phase
TRA-139AI-powered route optimization — Paid Module, no rush

Marketing / non-engineering, tracked here for visibility

TicketWhat
TRA-363Dedicated trade-specific landing pages (/hvac, /plumbing, /electrical)

Captured, not yet placed — product ownership undecided

Surfaced during TRA-370's scoping session (2026-08-04), inspired by a look at ServiceTitan's feature set. None of these are scoped, and none are confirmed to actually belong in RoundTrip rather than Waypoint or Relay — deliberately not slotted into a phase above until both of those are settled.

TicketWhat
TRA-371Proposal/bid builder for commercial work — distinct from Quotes, closer to a branded sales document
TRA-372Service agreements — recurring maintenance contracts, depends on TRA-370 existing first if it does end up in RoundTrip
TRA-373Customer self-service booking/intake — currently no path except manual dispatcher entry

Open decisions needed before work starts

  1. TRA-361 vs. TRA-120 AI assistant ownership — same feature, filed twice. Pick one before Phase 7 starts.

Resolved since the plan was first drafted: TRA-263's file format scope (CSV + client-side .xlsx conversion + paste option, decided 2026-08-02) and Phase 0 (TRA-360 confirmed fully shipped and closed 2026-08-04).


Appendix — audit corrections made 2026-08-02

Several tickets had stale priorities or statuses that didn't reflect reality, corrected as part of building this plan:

  • TRA-79, TRA-116, TRA-117, TRA-119, TRA-175, TRA-356, TRA-358 — marked Done (already complete, previously left open)
  • TRA-137 — closed as duplicate of TRA-263
  • TRA-80, TRA-120 — demoted from stale Urgent (deadline pressure that justified it no longer applies)
  • TRA-225 — go-live checklist marked complete, demoted from Urgent to Medium
  • TRA-152, TRA-263 — missing pricing-sort labels (Free Upgrade) applied; TRA-263 reparented under TRA-136