Lessons — bài học Zettelkasten

Lessons — Bài học Zettelkasten của đội Research

Format mỗi lesson: cue (khi nào áp dụng) / lesson (bài học) / evidence (bằng chứng) / confidence (mức tin cậy: cao / trung bình / thấp).

Thủ Kho cập nhật file này sau mỗi vòng optimize. Lessons mới append vào cuối, không sửa lessons cũ (nếu lesson cũ sai, ghi lesson mới đính chính).

L001 — Deterministic evaluator luôn thắng LLM judge

Cue: Khi Thợ Đo thiết kế evaluator cho vòng optimize mới.

Lesson: Ưu tiên evaluator deterministic (script, checklist, Lighthouse, accuracy) trước khi nghĩ tới LLM-as-judge. Deterministic: $0/eval, không variance, chạy instant, kết quả tái lập được.

Evidence: 4 pilots đêm 2026-10-22: - BSV tune (deterministic accuracy): score 0.80 → 1.00, $0, chạy instant - Lighthouse (deterministic): a11y 87 → 100, composite +4~6, $0 - Hero copy (LLM judge): thắng 39 vs 25 (+56%), nhưng judge có variance ±3 - Sales copy (LLM judge v1): đo sai baseline (35-52), phải sửa thành v2 mới đúng (68-86)

Confidence: Cao.

L002 — Baseline luôn là 1 variant, không thắng thì không đổi

Cue: Khi Thợ Thử thiết kế experiment.

Lesson: Mọi experiment phải include baseline như 1 variant bình thường. Nếu không variant nào thắng baseline → DỪNG, không đổi gì. Đây là gate quan trọng nhất của cả loop.

Evidence: Pilot sales copy 4 trang (2026-10-22): evaluator v2 cho thấy baseline thắng hết (86/74/70/68 vs variants 53-68). Nếu không có gate này, đã deploy bản tệ hơn lên production.

Confidence: Cao.

L003 — LLM rewrite có thể tệ hơn baseline

Cue: Khi peer đề xuất "viết lại toàn bộ" thay vì vá từng điểm.

Lesson: LLM rewrite có trade-off hệ thống: cải thiện được pain/social proof nhưng thường mất disclaimer pháp lý, CTA, SEO keywords, và có thể bịa số liệu. Mặc định: vá blocks tốt nhất vào baseline, chỉ viết lại toàn bộ khi variant thắng áp đảo (>20%).

Evidence: Pilot sales copy (2026-10-22): 16 variants, baseline thắng hết. Fact-preservation gate bắt được 3 trường hợp LLM bịa số liệu. 5/16 variants gen-1 là output "thinking" rỗng (16-30 từ).

Confidence: Cao.

L004 — Fact-preservation gate là bắt buộc với LLM judge

Cue: Khi Thợ Đo dùng LLM judge hoặc LLM rewrite.

Lesson: Mọi số liệu ($, %, số lượng, tên, dates) trong output của LLM phải tồn tại trong input. Check bằng script (substring match), không tin LLM tự kiểm.

Evidence: Pilot sales copy: gate bắt được 3 cases LLM bịa số liệu để "ăn điểm" rubric. Không có gate này, số liệu bịa đã lên production.

Confidence: Cao.

L005 — LLM judge có variance, chấm 2 lần đảo thứ tự

Cue: Khi Thợ Thử chạy evaluator LLM-as-judge.

Lesson: Cùng 1 variant, LLM judge cho điểm chênh ±3 giữa các lần chấm. Chấm mỗi variant 2 lần (đảo thứ tự baseline/variant để chống bias), lấy trung bình.

Evidence: Pilot hero copy (2026-10-22): quan sát variance ±3 giữa các lần judge. Final winner (39/50) thắng ổn định ở top qua nhiều lần chấm.

Confidence: Trung bình (mới quan sát 1 pilot, cần thêm data).

L006 — Praxist full machinery không cần thiết cho hầu hết bài toán

Cue: Khi cân nhắc dùng praxist CLI cho vòng optimize.

Lesson: Pattern Propose-Probe-Compose (lõi của praxist) chạy trực tiếp hiệu quả hơn full machinery (task.yaml + plugin manifest) cho hầu hết bài toán copy/tune. Full machinery chỉ đáng khi bài toán phức tạp, nhiều vòng lặp.

Evidence: - Hero copy pilot: chạy trực tiếp PPC, không cần praxist CLI → thành công - BSV tune: evaluator deterministic $0 → grid search trực tiếp hiệu quả hơn multi-agent - Agent báo cáo: "praxist CLI không cần thiết cho bài toán này"

Confidence: Trung bình.

L007 — Personas review bắt bug credibility mà metric không thấy

Cue: Khi chuẩn bị deploy thay đổi public-facing.

Lesson: Metric đo "tốt hơn" nhưng không đo "đáng tin". 3 personas (Burned Importer / First-time Buyer / Growing Trader) đọc với tâm lý người mua thật sẽ bắt được bug credibility: copy-paste sai trang, số liệu mâu thuẫn, fulfillment mâu thuẫn, testimonials ẩn danh.

Evidence: Expert review 2026-10-22 (3 personas × 11 sản phẩm MTI): - Bắt bug nghiêm trọng: EU page FAQ copy "rate maps/POR20" từ AD guide - Bắt "133 pages" sai số học (đúng là 135) - Bắt EU page 2 luồng fulfillment mâu thuẫn - Phát hiện trust deficit: brand ẩn danh + crypto-first = Burned Importer chùn tay

Confidence: Cao.

L008 — Deploy incremental, không copy nguyên file

Cue: Khi deploy kết quả optimize lên production.

Lesson: Nếu production đã thay đổi sau khi experiment chạy (VD: expert fixes đã áp), không copy nguyên file variant lên. Viết script áp đúng delta lên production hiện tại. Luôn backup trước, verify sau.

Evidence: Deploy Lighthouse 2026-10-22: agent phát hiện production đã có expert fixes (áp lúc 04:36) mà peer files không có. Copy trực tiếp sẽ revert các fix. Đã viết script apply_fixes.py áp đúng A11Y+PERF deltas.

Confidence: Cao.

L009 — Research trước, optimize sau

Cue: Khi user giao mục tiêu optimize mới.

Lesson: Không nhảy thẳng vào "viết lại cho hay hơn". Thám Tử + Đào Sâu tìm pain points, buyer feedback, đối thủ trước. Metric thiết kế từ insights, không từ cảm tính.

Evidence: Hero copy pilot thành công vì research trước đã xác định persona "Burned Importer" + pain point "sợ bị lừa lần nữa" → variant thắng nói đúng pain này (pain_point 3/10 → 9/10).

Confidence: Trung bình.

L010 — Tham số bảo thủ tốt hơn cho hệ chẩn đoán

Cue: Khi tune hệ thống classification/diagnosis (như Bác Sĩ Vườn).

Lesson: Với hệ chẩn đoán, false positive (đoán sai bệnh) tệ hơn "chưa đủ cơ sở". Tham số tối ưu thường bảo thủ hơn tham số tune tay: ngưỡng cao hơn, từ chối đúng case yếu thay vì đoán bừa.

Evidence: BSV tune 2026-10-22: CONF_THRESHOLD 0.35 → 0.52, t_min 0.50 → 0.68. 2 case fail ở baseline (điểm 0.51-0.53) đều được từ chối đúng ở tham số mới. Score 0.80 → 1.00.

Confidence: Trung bình (đúng cho diagnosis, chưa chắc đúng cho domain khác).

Template cho lesson mới

## L0XX — [Tiêu đề ngắn]

**Cue:** [Khi nào áp dụng lesson này]

**Lesson:** [Bài học, 1-3 câu]

**Evidence:** [Bằng chứng cụ thể: pilot nào, số liệu gì, ngày nào]

**Confidence:** [Cao / Trung bình / Thấp]