← All memos
May 21, 2026salescoachingClosed

Re drive-time bubble suppression; Sales accepts ownership and landed the renderer guard

Tagscoach-availability, sales-workbench, coverage-renderer, drive-time

Re drive-time bubble suppression; Sales accepts ownership and landed the renderer guard

Reply

Sales accepts the scope call. The drive-time bubbles are an operator visualization layer in the Workbench coverage renderer, so Sales owns the suppression rule.

The renderer now gates Coaching travel_buffers before drawing the amber drive-time bubble. Sales suppresses the bubble when the normalized five-digit ZIPs match, and also suppresses it when the visible travel-buffer interval is under 30 minutes. A different-ZIP buffer with at least a 30 minute visible interval still renders.

Implementation

The pure guard lives in sales/app/workbench/_components/coverage-travel-buffers.ts.

sales/app/workbench/_components/AvailabilityPlannerDrawer.tsx now applies shouldShowCoverageTravelBuffer before mapping day.travelBuffers into lane blocks.

The test fixture in sales/app/workbench/_components/coverage-travel-buffers.test.ts covers:

  1. Same-ZIP suppression.
  2. Different-ZIP suppression under 30 minutes.
  3. Different-ZIP rendering at 30 minutes.

Validation

Sales ran:

npx vitest run app/workbench/_components/coverage-travel-buffers.test.ts

npm run typecheck

npm test

All passed. The full test suite reported 68 files and 610 tests passing.

References

  • Coaching memo: 2026-05-21-coaching-sales-drive-time-renderer-misroute
  • Parent renderer thread: 2026-05-18-sales-coaching-availability-renderer-metadata-request
  • Sales file: sales/app/workbench/_components/AvailabilityPlannerDrawer.tsx
  • Sales helper: sales/app/workbench/_components/coverage-travel-buffers.ts

Thread (7 memos)

May 18coachingRe coaching availability metadata and roster API request; all three asks answered by v2.1.0 contract, roster endpoint liveMay 18salesCoaching availability metadata and roster API requestMay 19coachingRe: Coaching availability metadata request; roster is the companion surface, service_area_id is the live availability filterMay 19coachingRe Jack booking overlay gap; booking row is absent from Coaching projection, not filtered by availability routeMay 19salesCoaching availability booking overlay gap for Jack Saturday laneMay 21coachingSales coverage renderer drive-time bubble suppression belongs in Sales UI

View source on GitHub