Bugfix·Feature factory · ClientsFlow Pipeline
Run bnf-finish-2026-06-24 · live build f06d5e7+v100 · 2026-06-24 · whole-journey final QA CLEAN · nothing pushed
main is untouched at 57d6beb; the code is live on Modal for QA only and is one snapshot rollback away (cp -r .tmp/snapshots/v100/app/* app/).Built on the freshly-refactored base (the flows/dash god-module split), 4 builders on isolated worktrees, TDD, QA-twin-audited (0 test-theater), merged with 0 conflicts.
| # | Feature | What shipped | Verify |
|---|---|---|---|
| F1 | Categorization AI | Classifier prompt hardened so a clear positive isn't flagged negative; classify_eval.py regression harness (frozen 16-case set + positive-recall/false-neg metric + champion keep/discard; champion proposed for Sablonok, never auto-promoted) | 🔵 + 🟢 |
| F2 | Board UX | Per-column sort toggle (last-edited / closest-deadline, column-local) + “Move to” stage dropdown on every card (drag kept) + new leads pinned to the top | 🟢 + 🔵 |
| F3 | Cancel page | Polished /cancel success page — central ✓ + “Sikeres lemondás” + your phone & email, no form — and the cancel is logged as a history touchpoint | 🟢 + 🔵 |
| F4 | Manual-booking parity | Verify-only (your call): manual booking already moves to Sales-Call Prep + disarms the no-appt FUP — confirmed | 🔵 |
| F5 | Hungarian name parser | Invisible Gemini-Flash step on ingestion fixes first/last order before the deal persists; fail-open on model error | 🟢 + 🔵 |
| F6 | Proposal promo | 5-day mini-CRM / 100 000 Ft bonus line near the price box, editable via copy:proposal_promo_5nap (Sablonok) — not hard-wired | 🟢 + 🔵 |
The Opus FINAL-QA agent ran visual-qa-ultra over the aggregate oracle (every prior round + the new F1–F6), along the funnel spine. Verdict: CLEAN. Only LIVE frames matching the oracle are green; residual-human rows are BLOCKED, never faked.
| Journey stage | Live-verified this run | Status |
|---|---|---|
| Ingestion & classification | positive lead not flagged negative (F1); HU name corrected, invisible (F5) | 🟢 + 🔵 seam |
| New Lead | new-lead pinned to top (F2, B1-fixed); card renders; resurface-on-reply | 🟢 |
| Contacted / sequence | sort toggle column-local (F2) | 🟢 + 🔵 seam |
| Booking / cancel | cancel success page ✓ + copy + contact, no form (F3); booking widget | 🟢 + 🔵 seam |
| Booked / Sales-Call Prep | “Move to” persists, no rubber-band, incl. backward (F2); manual-booking parity (F4) | 🟢 + 🔵 seam |
| Sales call & transcription | call-done + transcript tags; Meet transcription = residual (real ≥2-person Meet) | 🔵 + 🟠 |
| Proposal | 5-day mini-CRM promo line near the price box (F6); instant move to Sign-FUP | 🟢 + 🔵 seam |
| Sign follow-up | validity + reminder tags; live DocuSeal both-signed = residual | 🔵 + 🟠 |
| Payment | payment self-arm seam; AUTOSEND flip + live Stripe = residual | 🔵 + 🟠 |
| Onboarding | post-signing sitemap flow — deferred (your call) | ⚪ |
Full watchable report (10 live frames, each with a Gemini pixel-read + a verifying Claude analysis): final_vqa.html. Machine verdict: final_qa.json.
e0826fe — the new-lead pin is now absolute (outranks the unread jump; freshest new-lead at index 0), non-new-lead columns unchanged. Re-verified by a real-source comparator test (runs the actual boardColSort, asserts index 0 above unread in both sort modes) + suite 556 green + redeploy v100.
Code is in place where possible; live verification needs a real external event or your decision. These are honestly BLOCKED in the QA, not green.
| Item | Why it's blocked |
|---|---|
| AUTOSEND flip (I12) | Your explicit decision — never flipped autonomously; payment email currently drafts |
| gcal live busy / reschedule delete (I5/BUG-06) | Needs domain-wide delegation / free-busy sharing; window+grid correct, bounded 8s fail-open |
| Meet transcription (I7) | Needs a real ≥2-person Meet + Workspace-Events push subscription |
| DocuSeal both-signed (I14) | Needs a real both-signed event |
| Stripe live (I13) | Needs a real/TEST Stripe charge |
| Full fresh-lead enrichment (I9) | Needs a real brand-new lead ingested from zero |
Invoice auto-issue + send on payment (“következő körre”) · F7 onboarding/sitemap flow (“nem lesz blocker”) · CS-prep gem auto-trigger (“majd ráért később”). Documented in the EBO; not built this run.
On your “accept”: I announce branch + files + remote, then push the integration + the 4 feature branches. main / production stay your explicit trigger. I'll also sweep any leftover ZZ fixtures (the QA agent already swept its own).