Repair list journey: guided quote flow and simplified actions

Objective

  • Simplify the client portal repair list journey so users always know the next step, with one primary path toward getting repair quotes instead of many competing actions up front.
  • Wire the flow and navigation (routes, step structure, entry points) so final copy and visual polish can land afterward without re-plumbing the journey.
  • Reduce decision fatigue: keep users in the familiar report-order repair list view by default, defer category / pro-picking until later, and de-emphasize PDF in favor of share-list behavior.

Background

  • The repair list sidebar in attik-frontend/src/app/client/reports/components/RepairListSidebar.tsx exposes multiple footer actions today — Export Repair List, optional Create addendum, GET FREE REPAIR QUOTES (or Share Repair List when quote permission is unavailable), plus expanded-view toggles and saved-list management. Users report too many parallel choices before they understand the journey.
  • Quote entry today branches on getRepairQuoteIntegrationMode() in mapRepairDataForQuickFixModal.ts and jumps early into integration-specific UIs — e.g. PropPair navigates straight to CategorizationPageClient.tsx, QuickFix opens QuickFixRepairQuoteModal.tsx, legacy opens RepairQuoteModal.tsx.
  • Thumbtack / ProPair follow-on lives under reports/[slug]/repair-list/[id]/request/ (MultiCategoryRequestClient.tsx, RequestFlowDrawer.tsx) with persistence on attik-backend/src/models/repairListSchema.ts and src/routes/repairList.ts.
  • Share/read-only presentation uses repair-list/[id]/view/ (RepairListViewClient.tsx).
  • v1 focus: wire rails and navigation now; Chris returns for wording, visuals, and final UI polish.

Product decisions (v1)

  1. Single primary CTA on the repair list sidebar — one obvious “next step” toward quotes; secondary actions (share, export) are subordinate. Create addendum stays visible in the footer for roles with addendum permission (repair-addendum / fallback) — not removed, just no longer competing at equal weight with the quote path.
  2. Report-order view is default — users stay in the familiar report-ordered list; category-first layouts are not the default entry.
  3. Outcome choice after primary CTA (no default) — the first quote step asks the user to choose; neither option is pre-selected:
    • Whole report → routes into the QuickFix integration (QuickFixRepairQuoteModal.tsx and related flow).
    • Pick pros → routes into the Thumbtack / ProPair integration (deferred categorization → CategorizationPageClient.tsxMultiCategoryRequestClient.tsx / request routes).
  4. Defer categorization on Pick pros path — category grouping and pro selection happen after the user chooses Pick pros, not on initial quote CTA.
  5. Thumbtack escape hatch — when category grouping looks wrong later in the Pick pros path, users recover by editing categories (existing categorization UI in CategorySection.tsx / CategorizationPageClient.tsx).
  6. One journey shell for all quote-capable brands — PropPair, QuickFix, and legacy/specialty paths share the same simplified step structure in v1; integration-specific internals differ but the entry and outcome-choice framing is unified.
  7. Role-based behavior unchanged inside new shellATT-1367 role differences remain as implemented today, wrapped in the new navigation.
  8. No quote permission — when the contact has repair list create but not repair quote request permission, behavior matches today: Share Repair List is the primary footer action instead of GET FREE REPAIR QUOTES (same jobPortalFeatures + finalUserRolePermissions gates in RepairListSidebar.tsx).
  9. Share over PDF — share-list is preferred over export; PDF/export remains available but less prominent than today (RepairListExportModal.tsx).
  10. Wiring first, polish second — navigable step structure in v1; final copy and visual design explicitly out of v1 unless needed for functional clarity.

Scope

Frontend (attik-frontend — client portal / report skin)

  • Restructure repair list entry and quote journey from RepairListSidebar.tsx:
  • One primary quote CTA when quote permissions allow.
  • De-emphasize Export; keep Share and addendum (permission-gated) visible but subordinate.
  • Add outcome-choice step (whole report vs pick pros, no default) before branching:
  • Whole report → QuickFix path.
  • Pick pros → Thumbtack / PropPair path with categorization deferred until after choice.
  • Align QuickFix (QuickFixRepairQuoteModal.tsx), Thumbtack (CategorizationPageClient.tsx, MultiCategoryRequestClient.tsx), and legacy (RepairQuoteModal.tsx) to the same shell where applicable.
  • Ensure edit categories is the recovery path when Thumbtack grouping is wrong.
  • Preserve role-based routing from ATT-1367 inside the new shell.
  • Keep no-quote-permission share-primary behavior unchanged.
  • Ensure repair-list/[id]/view/ remains compatible with share-first behavior.

Backend (attik-backend)

  • Adjust only as needed for new step order / journey state in src/routes/repairList.ts and repairListSchema.ts if frontend wiring requires different read/write timing.

Out of scope for v1

  • Final marketing copy, visual polish, and brand treatment (Chris follow-up).
  • New Thumbtack API capabilities or categorization algorithm changes.
  • ATT-298, ATT-1518, ATT-291, ATT-306.

Done when

  • [ ] Repair list sidebar has one clear primary CTA toward quotes when quote permission allows; secondary actions do not compete at equal weight.
  • [ ] Addendum remains visible for permitted roles; Share primary when quote permission is absent (same as today).
  • [ ] Default list view stays report-order; categorization is not the first screen.
  • [ ] After primary CTA, user chooses whole report vs pick pros with no pre-selected default.
  • [ ] Whole report routes to QuickFix; Pick pros routes to Thumbtack / PropPair with categorization after the choice.
  • [ ] Wrong Thumbtack grouping is recoverable via edit categories.
  • [ ] Role-based behavior from ATT-1367 still works inside the new shell.
  • [ ] Share is easier to discover than PDF export; export is de-emphasized.
  • [ ] Save/load, permissions, and view/share routes still work.
  • [ ] Flow is navigable with placeholder or functional UI — ready for polish pass.

References

  • ATT-1367 — role-based journey (preserve inside new shell)
  • ATT-1081
  • ATT-291 — separate
  • attik-frontend/src/app/client/reports/components/RepairListSidebar.tsx
  • attik-frontend/src/app/client/reports/components/RepairListExportModal.tsx
  • attik-frontend/src/app/client/reports/components/ShareRepairListModal.tsx
  • attik-frontend/src/app/client/reports/[slug]/repair-list/[id]/components/CategorizationPageClient.tsx
  • attik-frontend/src/app/client/reports/[slug]/repair-list/[id]/components/CategorySection.tsx
  • attik-frontend/src/app/client/reports/[slug]/repair-list/[id]/request/components/MultiCategoryRequestClient.tsx
  • attik-frontend/src/app/client/reports/components/quickfix-repair-quote/QuickFixRepairQuoteModal.tsx
  • attik-frontend/src/app/client/reports/components/RepairQuoteModal.tsx
  • attik-frontend/src/app/client/repair-list/[id]/view/components/RepairListViewClient.tsx
  • attik-backend/src/models/repairListSchema.ts
  • attik-backend/src/routes/repairList.ts

Please authenticate to join the conversation.

Upvoters
Status

Triage

Board
🏠

Main App

Date

About 6 hours ago

Author

Linear

Subscribe to post

Get notified by email when there are changes.