# KB Audit Findings (Fable deep review, 2026-07-06)

A strong model read all 469 servable answers and the tagging logic. Findings below, grouped by who
should fix them. **Code fixes** (tagging, exclusions) are on us. **Content fixes** need Barkha/Ram
(which answer is correct, new answers, current prices).

---

## A. CODE FIXES (tagging + exclusions, we do these)

### A1. Program mis-tags the regex missed (highest impact)
**Relaxed content tagged `all`, wrongly reaching Original (6-day) users:**
- id 34 "How much time each day?" says "10-12 minutes" (Relaxed pacing; Original is 60-90 min) -> P9
- id 43 "Do I reduce smoking?" says "after 2-3 weeks..." (no 2-3 weeks in 6 days) -> P9
- id 46 "Alcohol / social events?" says "around Days 29-30" (don't exist in P3) -> P9
- id 55 "Chain smoker, how many mindful cigarettes?" says "1-2 per day" (Original says 10+) -> P9

**Original content tagged `all` / `P3/P9`, wrongly reaching Relaxed (42-day) users** (regex missed
"Day 6", "6 days", "6 to 12 days", "days 3 through 6"): ids 0, 2, 10, 18, 298, 156, 163, 171, 175,
212, 213, 214, 306, 334, plus the Original day-map entries 152, 155, 198, 199, 200, 201, 224, 225,
423, 456, and pregnancy id 282.

**`relaxed` false-positives locking generic entries to P9 (Original users escalate for nothing):**
- id 431 breathing exercise, id 227 breath awareness ("posture is relaxed"), id 121 "Is it a free
  program?" (answer covers BOTH programs; most common pre-sale question) -> `all`

**Switch/comparison entries tagged by program MENTIONED, not the ASKER, so unreachable by their
audience:** ids 67, 64, 66, 73, 74, 42, 45 (e.g. "I'm on Original but can't find 1 hour" is asked by
a P3 user but tagged P9) -> `all`.

Fix: extend ORIGINAL_MARK (`day 6|6 days|only 6 days|6 to 12 days|days 3 through 6|6-day quit`),
tighten RELAXED_MARK to `QuitSure \(?Relaxed\)?|42[- ]day` (drop bare "relaxed"), and whitelist the
switch/comparison ids to `all`.

### A2. Exclude coach-instruction entries (not user Q&A, unsafe to serve verbatim)
Hard-exclude ids: 140, 141, 142, 221, 222, 226, 227(coach-SOP part), 228, 249, 302, 128, 130, 132,
133, 136, 137, 468. (Coach probing templates, reply templates, workflow SOPs.)

### A3. Answers that leak internal/coach content or make false claims
- id 225 answer opens "He is only getting cravings" (leaked coach note, third person)
- id 112 answer opens "Hello User," (template artifact)
- id 35 question contains coach deliberation "(do we tell them about both programs?)"
- id 79 "I have forwarded your issue to the technical team" (false, the AI forwards nothing)
- id 111 "This happened to me once" (AI impersonating a human)
- ids 64/65/67 "I'll get the switch started for you" (the AI cannot perform switches)
Fix: exclude or reword these to not claim human actions / leak notes.

---

## B. CONTENT FIXES (need Barkha / Ram, cannot decide from tagging)

### B1. Contradictions, two approved answers conflict; which is correct?
1. Mindful dosage: id 55 "1-2 cigarettes/day" vs id 289/334 "at least 10/day". 5-10x difference.
2. Gap handling: id 163 "restart if break > 3 days" vs id 69 "revisit earlier days, don't redo".
3. Name edit: id 237 "you can edit your name" vs id 238 "not editable within our system".
4. Change email steps: id 109 (edit icon + verify) vs id 466 (Settings, no verification).
5. Refund policy: id 125 "100% money-back, no risk, no conditions" vs id 72 "only if completed in
   full AND within 60 days". id 125 will cause refund disputes.
6. Affiliate reward: id 460 "20% (Indian)" vs id 461 "$10 voucher (Non-Indian)"; no country routing.

### B2. Coverage gaps (common intents with no answer)
Change phone number; forgot password / OTP / sign-in help; invoice or receipt request; refund status
after submitting the form ("it's been 10 days"); switching phone/platform keeping the subscription;
failed renewal / update payment method; free-trial mechanics (when charged, trial end date);
**auto-refund "get the program for free" offer (live V9.6 test, time-sensitive, zero coverage)**;
unsubscribe from marketing; export my data; web/desktop access.

### B3. Stale content to re-verify
id 57 Relaxed price "$25/month" (current is ~$40->$30 per the live test); id 455 UAE discontinuation;
id 309 language list.

---

## C. FULL-KB TAG AUDIT (Fable fleet, 4 slices, 2026-07-06) — code fixes DONE

The whole KB (all 5 tabs, every servable answer) was re-parsed and re-tagged by four models, one per
slice. All tag/exclusion decisions below are now applied in `build_kb.py` via **id-based overrides**
(`TAG_OVERRIDE` + `EXCLUDE_IDS`) so they survive rebuilds. Distribution now: P3 41, P9 20, P3/P9 20,
all 356 (437 servable, 46 coach-only excluded).

- **-> P9** (Relaxed-specific, was reaching Original users): 34, 43, 46, 55, 45.
- **-> P3** (Original 6-day / Day-3-6 module structure / 10-mindful): 289, 320, 309-note, 423, 456,
  152, 155, 160, 163, 184, 195, 198, 199, 200, 201, 224, 81, 15.
- **-> all** (generic/switch/comparison entries the tag was hiding): 32, 64, 66, 67, 73, 74, 42, 121,
  431, 56, 30, 71, 65, 75, 406, 435.
- **Excluded** (coach SOP / internal leak / false-capability / paywall-bypass): 301, 303, 124, 125,
  138, 167, 168, 211, 452, 97, 178, 448 (plus the A2 list already excluded).

### C1. Additional content items for Barkha/Ram (cannot fix in code — need the correct wording)
- **Contradictions:** name editable 237 vs 238; change-email 109 vs 466; break/gap 163 vs 69;
  alcohol-trigger 410 vs 411; vaping 365 vs 415; free-access offer 448 vs 475; "I'll start the
  switch" 64/65 vs reality (bot can't act); cancel-via-Stripe 95 vs 116.
- **Risky claims to verify/soften:** id 149 "damage fully reversed"; id 172 ">95% success" stat;
  id 143/111 AI implying it is a human; id 430 theobromine advice; id 445 mucolytics advice.
- **Original-structure wording inside general answers (reword, don't retag):** ids 406 & 435 say
  "in Day 6 you'll receive tools" — change to "later in the program" so it reads correctly for both
  Original and Relaxed users.
- **Stale:** pricing "$25" in 57/62; language list in 309.
