# Jobs, follow-ups and operations — v0.13

This checkpoint adds a private owner workflow to the maintained local product. Use invented records only. It does not send messages, generate invoices, record payments, change bookings or contact providers. The existing owner review at `http://127.0.0.1:8788/` remains on its frozen v0.12.1 copy; the separate v0.13 browser test is stopped.

## Keep one clear next action

Open **Jobs**, then the exact job. Customers with identical names or contact details remain separate; the pipeline shows short customer and job IDs. Save its stage, planning date, priority, comma-separated tags, next action, due date and private notes. Contact dates record contact that actually happened. Completion dates describe completed work; an old unknown date is left blank. Moving an open job to completed defaults its completion date to today's UK date.

Search covers the exact IDs, contact details, service, enquiry, private notes, next action and tags. Stage, priority, exact tag, archive visibility and next-action date filters combine. The count describes the displayed matches and also shows the total stored jobs. A filtered empty result does not mean the business has no jobs.

Job stage is separate from document, invoice and payment state. A target date does not reserve people or times; use Calendar for bookings. Private metadata is excluded from customer projections. **Show workflow history** retains the saved values and author. The initial event records the observed creation or migration baseline; it does not invent older history.

Archive only completed or cancelled jobs. Unfinished timers, active/paused repeat contracts, future bookings, reserved document sources and draft invoices must be reviewed first. Archiving retains records. Unarchive before reopening a job. Enquiry reassignment is blocked when operational metadata or reviewed follow-ups exist; broad customer merging remains deferred.

## Review suggestions deliberately

**Follow-ups** explains each suggestion and identifies its exact customer, job and, where applicable, quote. Its rules are saved per business:

| Suggestion | Basis |
| --- | --- |
| Next action | An open, unarchived job has action text with no date or a date today or earlier. |
| Quote follow-up | A current, shared, unexpired quote on an open job has waited the configured number of UK days since sharing or recorded contact. Accepted, declined, superseded and cancelled quotes are excluded. |
| Repeat customer | The customer's latest explicitly dated completed work exceeds the waiting period. Open jobs and active/paused repeat contracts suppress this suggestion. Matching names or emails never combine records. |
| Feedback opportunity | The exact completed job passes feedback eligibility and has no previous request. Revoking, withdrawing or archiving a request does not silently create another suggestion. All ratings are welcome. |
| Postcode group | Optional and off by default. An eligible repeat customer and another customer's scheduled job have the same explicitly saved outward code within the configured horizon. This is a group match, with no coordinates, mileage, geocoder or inferred location. |

Excluded job tags, individual follow-up exclusion and archive state suppress suggestions. Threshold changes do not reopen a dismissed decision. Quote/repeat rules also consider the saved contact date. No source-specific names, historical cutoffs or SHS business settings are embedded.

Choose **Review**, read the source facts, then select an action:

1. **Prepare local draft** saves wording for later review. It does not send, copy, schedule or confirm delivery.
2. **Snooze** needs a future UK date within one year and a reason. The item returns to the ready view on that date when the queue is read; there is no scheduler.
3. **Dismiss** closes that source generation. Refreshing or editing a private job note does not revive it.
4. **Record manually completed action** records what the owner actually did. It is not proof of delivery, payment, quotation acceptance or job completion.
5. **Reopen** is a deliberate review decision for a closed item.

The local draft and all decisions remain in history. A new job, quote revision or changed next action has a new source generation. If a source stops qualifying, the old review is retained under **No longer eligible**. Changes to source facts or concurrent decisions reject a stale save. Its unfinished form stays on screen for review; an identical successful retry does not create another event.

Job action text and dates stay saved until the owner edits them. The Operations tile **Next actions to review** counts ready queue decisions, including undated actions. The Jobs timing filter concerns the saved dates, so a manually completed queue decision can still have its old date visible on the job.

## Read counts and money separately

**Operations** uses inclusive Europe/London dates, with a maximum 366-day period. Apply a period to see activity counts and separate amounts. The current-position section is independent of that period.

| Figure | Meaning |
| --- | --- |
| Created customers/jobs | Creation timestamps falling on the selected UK dates. |
| Completed jobs | Currently completed jobs with an explicitly saved completion date in the period. Unknown old dates are excluded. |
| Quote revisions created | Every created quote revision, not a count of jobs. |
| Issued invoice value | Gross saved values of currently issued, non-void invoices issued in the period. Deposit/stage requests add nothing. This is not recognised revenue or a historical accounting statement. |
| Recorded receipts | Existing receipt ledger by paid-on date, excluding reversed recording errors. Corrected receipts retain their own dates. This is not bank-cleared evidence. |
| Internal costs | Active recorded labour by work date and received materials by receipt date. No profit, overhead, payroll, VAT-recovery or tax calculation. |
| Open quote estimate | Current unexpired draft/shared quotes for open, unarchived jobs. Potential work, separate from invoiced value. |
| Invoice balance | Current issued invoice totals less the existing net receipt ledger. |

Service/customer/team analytics, lifetime value, funnels, exports, historical accounting and financial integrations remain in the full parity register.

## Feedback permission and navigation

Private notes, priorities, tags, next actions, contact-history dates and postcode-group edits preserve the original feedback answers, consent and publication history. A stage, work date, completion date, archive status or customer-contact change still requires permission to be reviewed again. Changing the work back does not automatically revive suspended permission.

At narrow widths, **Workspace section** provides every existing section plus Follow-ups and Operations. Keyboard selection and Keep editing were exercised at 689 CSS pixels. Desktop navigation keeps its active marker and can scroll. Unsaved forms remain protected. This is a bounded browser check, not phone, touch, screen-reader, installed-PWA or whole-app accessibility certification.

## Recovery and evidence

Format 10 adds job metadata/history and opportunity settings/decisions/history. Formats 1–9 remain pinned and strictly validated. Migration observes existing job versions without inventing completion dates or rewriting old consent. Recovery preserves operational decisions and older field, booking, source reservation, document, receipt and feedback histories. Old credentials are revoked and public feedback remains paused until renewed permission. Keep a matching old backup and code archive before migrating a saved dataset; do not downgrade it in place.

The full 521-case backend run, 85 client tests, 53 structural render checks and final build pass. New coverage includes dates/filters, same-contact separation, private projections, owner/staff/portal boundaries, concurrent/stale/idempotent decisions, receipt corrections, archive guards, strict tamper rejection and a four-business disappearance/restore drill. Actual browser evidence covers save/reload/filtering, keyboard navigation, draft retention on a stale save, five decision types, settings persistence, period/current totals, separate businesses and feedback preservation/suspension using a seeded fictional consent fixture. Initial consent and billing fixtures were created through test APIs; this does not claim a new customer-consent or billing browser journey.

See [machine-readable checks](workflow-milestone-checks.json), [source map](workflow-source-map.json), [recovery drill](workflow-recovery-drill.json) and [remaining checks](ui-verification-pending.json). Screenshots and the detailed local verification record are in the sibling `SHS-Workflow-Verification-v0.13` folder, outside the code archive. All 45 capabilities remain tracked and all 14 original SHS findings remain OPEN. No live SHS change or production approval is claimed.
