# Jon Walkthrough Prep — Before Sending the Link

**Last updated:** 2026-05-15
**Status:** Jon hub (`/jon/`) shipped; awaiting Sam to fill SAM-FILL markers and preview end-to-end before sending invite.

## URLs at a glance

| What | URL |
|---|---|
| Jon's hub (Sam previews here as Jon) | https://samesolutions-equipment-service.pages.dev/jon/ |
| Survey | https://samesolutions-equipment-service.pages.dev/jon/survey.html?job=aceves-paint-2026-05-11 |
| Job review (price reveal — gated by survey) | https://samesolutions-equipment-service.pages.dev/jon/job-review.html?job=aceves-paint-2026-05-11 |
| Job config (where Sam fills placeholders) | https://samesolutions-equipment-service.pages.dev/jon/jobs/aceves-paint-2026-05-11.json |
| Send invite | https://samesolutions-equipment-service.pages.dev/invites/ |
| Sam admin view | https://samesolutions-equipment-service.pages.dev/customer/admin.html |

## Steps before sending Jon the link

### 1. Fill original scope (REQUIRED)
- [ ] Open `/jon/jobs/aceves-paint-2026-05-11.json` in editor
- [ ] Replace the SAM-FILL line in `original_scope` with the actual line items from SS-Q004
- [ ] Be specific: rooms, surfaces, types of work. Use Jon's language from the quote.

### 2. Confirm or expand actual scope (REQUIRED)
- [ ] Review `actual_scope` placeholders — doors, trim, windows, ceiling touch-ups, wall touch-ups
- [ ] Add anything else Sam did that's not in the list (with painter's tape blemish prep, color-matching, etc.)
- [ ] Remove the SAM-FILL placeholder line when done

### 3. Set values for each extra (REQUIRED)
- [ ] For each entry in `extras_value_if_charged`, set `would_have_cost` to a reasonable per-line dollar amount
- [ ] Keep `explanation` short (1 line) and concrete — what it actually was
- [ ] Don't inflate; Jon will sense it

### 4. Confirm final price (REQUIRED)
- [ ] Placeholder is `$950`. Confirm or adjust.
- [ ] The reasoning paragraph references "$700-840" → "$1,280" → "$950". Update numbers if the price changes.

### 5. Polish the reasoning text (REQUIRED)
- [ ] Make sure it sounds like Sam — direct, honest, warm
- [ ] No hard sell. No defensiveness.
- [ ] The `learning_phase_note` is already pre-written; tweak if needed.

### 6. Verify the flow end-to-end (REQUIRED — Sam previews as Jon)
- [ ] Open `/jon/` in a private browser window (or use the **👁️ Preview as Jon** button on Sam's hub or `/customer/admin.html`)
- [ ] Survey callout banner shows
- [ ] Take the survey through to submission
- [ ] Job review page renders with: asked vs delivered (side-by-side), extras with explanations, final price reveal, payment note, learning phase note
- [ ] Back button returns to `/jon/`

**If the survey-submitted state is stuck after preview testing:** clear KV with
```
DELETE /our/data?key=survey-response-jon-aceves-aceves-paint-2026-05-11
DELETE /our/data?key=survey-completed-jon-aceves-aceves-paint-2026-05-11
```
…or just submit different test data — overwriting works fine.

### 7. Send the invite (REQUIRED)
- [ ] Open `/invites/` on phone
- [ ] Jon's card → tap **📨 Show prepared messages** to grab email or text body
- [ ] Tap **📱 Send** (Web Share) or **💬 Text** (sms:) or **✉️ Email** (mailto:)
- [ ] Last-sent timestamp records automatically to KV (`invite-sent-jon`)

### 8. After Jon takes the survey
- [ ] Sam's hub Jon card shows ✓ survey done pill
- [ ] `/customer/admin.html` "Pending survey responses" lists Jon's response with full answers
- [ ] Text Jon to confirm price + payment method (or wait for him to message via hub)

### 9. Job touch-ups + payment loop
- [ ] After Pittsburgh, return for the painter's-tape blemish touch-up pass
- [ ] Jon pays via preferred method (Venmo / Zelle / check)
- [ ] Update job config `status: paid` (currently `ready-for-survey` → `survey-completed` after submit → `paid`)

## Friction points to flag if they happen

- **Survey shows "Survey already submitted" on first visit:** stale KV from preview testing. Clear `survey-completed-jon-aceves-aceves-paint-2026-05-11` and `survey-response-jon-aceves-aceves-paint-2026-05-11`.
- **Job review shows "Job data not ready":** the JSON failed to load — verify `/jon/jobs/aceves-paint-2026-05-11.json` parses (run through `JSON.parse` mentally or use a linter).
- **Install banner doesn't show on iOS:** check Safari user agent detection in `/jon/index.html` install banner script — Chrome iOS suppresses it (intentional).
- **PWA install scope:** manifest scope is `/jon/`. If Jon installs from a deeper page, it still scopes to `/jon/`.

## Related

- Jon hub README: `/jon/README.md`
- Customer portal flow: `/handoff-blocks/customer-portal-flow.md`
- Multi-user setup: `/handoff-blocks/multi-user-setup-guide.md`
- Architecture: `/handoff-blocks/architecture/system-overview.md`
- Issues: `/personal/status-tracker/issues.html` (issue-057 tracks Phase 1 ship, issue-060 tracks Mark Haggerty follow-up)
