/ docs / 03-pipeline / free-fix-sequence-strategy.md
free-fix-sequence-strategy.md
  1  ---
  2  title: 'Free-Fix-First Multi-Touch Outreach Sequence'
  3  category: 'pipeline'
  4  last_verified: '2026-04-02'
  5  related_files:
  6    - 'prompts/FOLLOWUP.md'
  7    - 'docs/05-outreach/legal-basis.md'
  8    - 'docs/03-pipeline/outreach-strategy.md'
  9    - 'docs/decisions.md#DR-128'
 10  tags: ['outreach', 'sequence', 'free-fix', 'multi-touch', 'email', 'sms', 'compliance']
 11  status: 'current'
 12  ---
 13  
 14  # Free-Fix-First Multi-Touch Outreach Sequence
 15  
 16  **Decision reference:** DR-128 (2026-04-02)
 17  
 18  ---
 19  
 20  ## The Problem With Current Outreach
 21  
 22  The pipeline has sent ~44,900 initial outreach messages. Conversions are effectively zero.
 23  
 24  The root cause is structural, not copywriting. The sequence leads with a request for money from a stranger who has received one message. The buyer has no evidence we know what we are doing, no trust in the brand, and no reason to act now instead of ignoring the email.
 25  
 26  Industry data is clear: 80% of sales happen between touches 5 and 12. Single-touch cold outreach to local service businesses (who are busy, skeptical of digital services, and not actively looking for website help) will not convert at meaningful rates regardless of how well the copy is written.
 27  
 28  The fix is structural. Lead with value. Deliver it visibly. Build the case over multiple touches before asking for money.
 29  
 30  ---
 31  
 32  ## The Strategy: Free Fix First
 33  
 34  The sequence inverts the normal order. We do something useful for the prospect's website before asking them for anything. We tell them what we did. We use their response (or absence of one) to calibrate the next message. Price comes at touch 4, after we have demonstrated competence three times.
 35  
 36  ### What "Free Fix" Means
 37  
 38  A free fix is a real, verifiable change to their website that improves their SEO or conversion potential. It must:
 39  
 40  - Be executable programmatically or manually before the first message is sent
 41  - Be verifiable by the prospect within 30 seconds (they can check in a browser or Google Search Console)
 42  - Carry zero risk of breaking anything on their site
 43  - Be clearly connected to a business outcome (calls, leads, Google ranking)
 44  
 45  ### Free Fix Priority List (in order of preference)
 46  
 47  **1. Missing or truncated meta description**
 48  
 49  Target: pages where `<meta name="description">` is absent or over 160 characters (truncated in SERPs).
 50  
 51  Why it works: visible in Google within 24-72 hours after re-crawl. The prospect can search their own business name and see the improvement. It is directly linked to click-through rate from Google, which local businesses understand instinctively.
 52  
 53  Execution: write and submit a replacement meta description via the Google Search Console Inspection API (if we have access), or deliver it as a ready-to-paste snippet with instructions. For the purposes of touch 1 copy, we frame it as "we've written a new Google snippet for your listing" — which is accurate and tangible.
 54  
 55  Realistic scope: any site missing a meta description or showing a truncated one in SERP. Our scoring already captures this in the `weaknesses` array. Priority score factor: `context` (site context and SERP representation).
 56  
 57  **2. Broken or redirect-chained internal links**
 58  
 59  Target: sites with 3xx redirect chains on internal links (e.g. linking to http:// when the site is https://).
 60  
 61  Why it works: Google penalises redirect hops on internal links. It is entirely safe to flag without touching their CMS. Deliverable is a list of the specific broken links with the corrected URLs as a copy-paste fix.
 62  
 63  **3. Missing alt text on hero/above-fold images**
 64  
 65  Target: `<img>` tags with no `alt` attribute on the first two images in the `<body>`.
 66  
 67  Why it works: accessibility, Google Image Search rankings, page scoring. We can include the exact HTML change needed. Safe, verifiable, and zero risk.
 68  
 69  **4. Missing canonical tag**
 70  
 71  Target: pages without `<link rel="canonical">` where the URL has query parameters or www/non-www duplication risk.
 72  
 73  Why it works: prevents Google from indexing duplicate content. Directly connected to ranking. Deliverable is a one-line HTML snippet.
 74  
 75  ### What "Delivering" the Fix Means in Touch 1
 76  
 77  We do not claim to have modified their website (we have no CMS access). We frame it correctly:
 78  
 79  "I've prepared a replacement for your Google listing snippet — it took about 10 minutes. I can send it over now. It should update in Google within a few days after your site re-crawls."
 80  
 81  Or, where we have confidence the meta description is missing:
 82  
 83  "Your site is showing no description in Google — visitors see a random sentence cut off mid-word. I've written a replacement. It is literally a one-line paste into your site header. Happy to send it over, no strings attached."
 84  
 85  The fix is real. The copy reflects what we are actually offering. This is not a bait-and-switch.
 86  
 87  ---
 88  
 89  ## 8-Touch Sequence: Full Specification
 90  
 91  ### Channel Rules (per market)
 92  
 93  | Market | Email | SMS |
 94  |--------|-------|-----|
 95  | AU | Yes | Yes (business hours, Spam Act inferred consent) |
 96  | NZ | Yes | Yes (UEMA inferred consent) |
 97  | US | Yes | No (TCPA permanently blocked, DR-121) |
 98  | CA | Yes | No (CASL; permanently blocked, DR-121) |
 99  | UK | Blocked (LIA required) | No (permanently blocked) |
100  | IE | Yes (PECR corporate) | No (permanently blocked) |
101  | ZA | Yes | No (permanently blocked) |
102  | IN | Yes | No (permanently blocked) |
103  
104  AU/NZ: use both email and SMS for touches 1, 3, 4, 6. SMS only for touches 2 and 5 (nudges). Email only for touches 7 and 8 (longer content).
105  
106  ### Touch-Level Specification
107  
108  ---
109  
110  #### Touch 1 — Day 0: The Free Fix
111  
112  **Goal:** Earn attention by doing something useful before asking for anything.
113  
114  **Channel:** Email (primary) + SMS (AU/NZ only)
115  
116  **Email anatomy:**
117  
118  Subject line options (use spintax; pick one per send):
119  - `quick fix for [domain]`
120  - `noticed something on [businessname].com.au`
121  - `[businessname] — Google snippet fix (2 min)`
122  - `your Google listing looks off`
123  
124  Opening (signal-based, not generic):
125  Reference the specific issue found: missing meta description, broken link, missing alt text. State it plainly and factually. Do not say "I noticed you have some issues" — say what the specific issue is.
126  
127  Body:
128  - One sentence on what the issue is and why it matters (calls from Google, click-through rate, ranking)
129  - One sentence that the fix takes 2-10 minutes and we have already written it
130  - One sentence: "I'll send it over at no charge — just reply and I'll paste it across"
131  
132  CTA: reply-based ("just reply here"), not a link. Keeps it in email thread, improves deliverability, and creates a natural conversation starter.
133  
134  Closing: name only, no title, no company link in the first email (reduces spam score on first touch).
135  
136  Length target: 60-80 words for email body.
137  
138  **SMS (AU/NZ, under 160 chars):**
139  ```
140  Hi [firstname], spotted a quick win on [domain] — your Google snippet is missing. I've written a replacement. Want me to send it? Reply YES or STOP. - Marcus
141  ```
142  
143  **Do not mention:** price, paid audit, company website, "I help businesses like yours", "I was browsing your site" (sounds creepy for trades).
144  
145  **Tone by market:**
146  - AU: direct, practical, no fluff. "G'day" is fine but not mandatory.
147  - US: same directness, no slang.
148  - UK: slightly more formal but still concise.
149  
150  ---
151  
152  #### Touch 2 — Day 3: Confirm + Second Issue
153  
154  **Goal:** Show the fix is ready and introduce a second issue from a different angle.
155  
156  **Channel:** Email + SMS nudge (AU/NZ)
157  
158  **Context:** Whether or not they replied to touch 1, this lands 3 days later referencing the first message and adding a new data point. If they replied positively, the autoresponder handles them — this is only for non-responders.
159  
160  **Email:**
161  
162  Subject line options:
163  - `still have that fix ready for [domain]`
164  - `one more thing I found on [businessname].com`
165  - `two things on [domain]`
166  
167  Opening: reference touch 1 briefly without repeating it. "Still have that Google snippet ready for [domain]. I also ran a quick check on your mobile experience while I was there."
168  
169  Body:
170  - Confirm the original fix is still available
171  - Introduce a second, different issue (mobile load time, missing trust signals, no call button visible above the fold — pick from the site's scored weaknesses)
172  - Keep it observational, not salesy: "Your site takes 6.2 seconds to load on a mobile. Most visitors leave after 3. Worth knowing."
173  
174  CTA: same as touch 1 — reply-based. "Happy to send both findings over. Just reply here."
175  
176  Length target: 70-90 words.
177  
178  **SMS nudge (AU/NZ):**
179  ```
180  Hi [firstname], still have that Google fix for [domain] if you want it. Also found something on your mobile speed. Reply YES or STOP. - Marcus
181  ```
182  
183  ---
184  
185  #### Touch 3 — Day 7: Cost of Inaction
186  
187  **Goal:** Make the cost of doing nothing concrete and specific to their situation.
188  
189  **Channel:** Email (primary). No SMS on this touch — let the email breathe.
190  
191  **Framing:** This is not "here is how much our service costs." This is "here is what your site's current state is costing you in missed calls." The numbers come from our scoring data and publicly available industry benchmarks, framed as estimates, not guarantees.
192  
193  **Email:**
194  
195  Subject line options:
196  - `what [domain] is losing each month`
197  - `rough numbers on [businessname]'s site`
198  - `the gap between your site and your competitors`
199  - `honest question about [businessname].com.au`
200  
201  Opening: reference the type of business and their location. "A [plumber/dentist/pest control company] in [suburb] with a site scoring in the bottom 40% typically sees about 30-40% lower enquiry rates compared to the average in their area. Yours is in that range."
202  
203  Body:
204  - Frame the score (if available) or the issues found as a conversion gap: "If your site currently converts 2% of visitors, fixing the issues I've identified could realistically get that to 3.5-4%. For a business getting 500 website visitors a month, that is 7-10 extra enquiries."
205  - Make the math feel real but frame all numbers as estimates: "even if it is half that improvement, it is still worth more per month than a full audit costs."
206  - Do not mention the price of the audit yet — say "more per month than addressing this would cost" to plant the seed without triggering price resistance.
207  
208  CTA: "Want me to send you the specific numbers for your site? I have them ready."
209  
210  Length target: 90-120 words.
211  
212  No SMS on touch 3.
213  
214  ---
215  
216  #### Touch 4 — Day 14: Soft Price Introduction
217  
218  **Goal:** First mention of paid services. Frame as a natural next step after 3 touches of free value.
219  
220  **Channel:** Email (primary) + SMS (AU/NZ)
221  
222  **This is where price enters.** It must be framed as context, not a pitch. The transition:
223  
224  "I have been sending you findings piece by piece. The full picture — every issue ranked by impact, with specific recommendations for each — is what our audit covers. For a [plumber/dentist/etc] in [city], it typically takes 24 hours and the report runs about [AU$337 / US$297 / £159]."
225  
226  Include the `/o/{site_id}` prefill link here (the BRAND_URL proposal link with their details pre-loaded).
227  
228  **Email:**
229  
230  Subject line options:
231  - `the full picture for [domain]`
232  - `[businessname] — what a full audit covers`
233  - `everything I've found on [domain]`
234  
235  Opening: reference the journey — "I have sent a few things I noticed on your site over the past couple of weeks."
236  
237  Body:
238  - Acknowledge you have been sharing free findings; frame the paid audit as the comprehensive version
239  - One sentence on what is included: every factor scored (headline, CTA, trust signals, mobile experience, page speed, imagery, offer clarity)
240  - Price stated plainly, once, without apology
241  - Prefill link: "If you want to see what it looks like for your specific site, I have set up a summary at BRAND_URL/o/[shortcode]"
242  - Soft CTA: "No pressure — just thought you should have the full picture after everything I have sent across."
243  
244  Length target: 100-130 words.
245  
246  **SMS (AU/NZ):**
247  ```
248  Hi [firstname], sent a few findings on [domain] over the past weeks. Full audit is [AU$337] — 24hr turnaround, covers everything. Details: BRAND_URL/o/[code]. Reply STOP to opt out.
249  ```
250  
251  ---
252  
253  #### Touch 5 — Day 21: Case Study + Competitor Gap
254  
255  **Goal:** Social proof and competitive framing. Make inaction feel riskier.
256  
257  **Channel:** Email only.
258  
259  **Email:**
260  
261  Subject line options:
262  - `what [competitor_domain] does differently`
263  - `how a [plumber] in [city] went from F to B`
264  - `[businessname] vs. the competition`
265  
266  If `competitor_benchmark` is available in the site data, use it directly: "We scored [competitor_domain] at 83/100 — a [B grade]. Yours sits at [score]/100. That gap typically means they are converting roughly twice as many visitors into calls."
267  
268  If no competitor benchmark, use aggregate data: "We have scored 43,000+ local business websites. The average for [plumbers/dentists/etc] in [country] is [industry_avg]/100. Yours is [score]/100."
269  
270  Body:
271  - One-paragraph case study: a similar business (same industry, similar city size, same country) that improved their conversion after addressing similar issues. Use real data where available. If no real case study, use the industry aggregate framing.
272  - Return to the prefill link from touch 4.
273  
274  CTA: "The offer from last week still stands. [BRAND_URL/o/shortcode]"
275  
276  Length target: 100-140 words.
277  
278  ---
279  
280  #### Touch 6 — Day 28: Specific Angle (Ad Waste or Reviews Disconnect)
281  
282  **Goal:** Change the frame entirely. Introduce an angle they have not heard yet.
283  
284  **Channel:** Email + SMS (AU/NZ)
285  
286  **Angle selection (automated per site):**
287  
288  If `is_running_ads = true` (ad pixel detected): use the Ad Waste angle.
289  If `is_running_ads = false` and Google review count > 10: use the Reviews Disconnect angle.
290  Default: use the Competitor Gap angle from a fresh angle.
291  
292  **Ad Waste angle:**
293  
294  Subject: `what % of your Google Ads are working`
295  
296  "If you are running Google Ads to a site scoring [grade], roughly 60-70% of that spend is being wasted — visitors arrive, see a site that does not look trustworthy or load quickly, and leave without calling. The ad spend keeps running regardless."
297  
298  "A [plumber] in [city] running $800/month in ads is potentially wasting $500-560/month on a site that loses people before they call. The audit identifies exactly where they leave and why."
299  
300  **Reviews Disconnect angle:**
301  
302  Subject: `your reviews aren't working for you`
303  
304  "You have [X] Google reviews averaging [Y] stars. None of them are on your website. That is your strongest sales tool — social proof from real customers — sitting on Google instead of converting visitors on your homepage."
305  
306  "Getting Google reviews onto your site is one of the highest-ROI changes a local business can make. Our audit shows exactly where they should go and how to present them."
307  
308  **SMS (AU/NZ — ad waste version):**
309  ```
310  Hi [firstname], if you're running Google Ads, a low-scoring site wastes 60-70% of that spend. Worth 5 min? BRAND_URL/o/[code]. Reply STOP to opt out.
311  ```
312  
313  Length target: 80-110 words.
314  
315  ---
316  
317  #### Touch 7 — Day 35: Authority Anchor + Direct CTA
318  
319  **Goal:** Establish scale and credibility; most direct ask of the sequence.
320  
321  **Channel:** Email only.
322  
323  Subject line options:
324  - `43,000+ sites scored — here is where yours ranks`
325  - `[businessname] rank among [industry] websites`
326  - `final look at [domain]`
327  
328  Opening: Lead with the authority data point. "We have scored 43,484 local business websites across AU, US, UK, and NZ. Your site sits in the [bottom/middle] [X]% for [industry] businesses in [country]."
329  
330  Body:
331  - One sentence on what the top 20% do differently (trust signals, fast mobile load, visible CTA above the fold)
332  - Return to the specific issues found in touches 1-2 (referenced by name, not re-explained)
333  - Direct CTA: "The audit is [price]. 24-hour turnaround. If you want to move your site from [grade] to [one grade higher], this is how." Include the prefill link.
334  
335  Length target: 90-120 words.
336  
337  No SMS on touch 7.
338  
339  ---
340  
341  #### Touch 8 — Day 42: Breakup
342  
343  **Goal:** Professional close. Leave the door open. Do not burn the relationship.
344  
345  **Channel:** Email only.
346  
347  Subject line options:
348  - `closing the file on [domain]`
349  - `last one from me`
350  - `[firstname] — wrapping up`
351  
352  Opening: "I have sent a few things about [domain] over the past six weeks. I am going to stop here."
353  
354  Body:
355  - Acknowledge they may not be in a position to act right now, and that is fine
356  - Note that the issues will still be there whenever they are ready
357  - Point to the production site as the self-serve option ("you can request an audit any time")
358  - Do not apologise for the sequence; do not beg for a reply
359  
360  Closing: "Best of luck with the business." Personal, warm, non-salesy.
361  
362  Length target: 50-70 words. This is the shortest email in the sequence.
363  
364  No SMS on touch 8.
365  
366  ---
367  
368  ## Opt-In Mechanics and Compliance
369  
370  ### What Constitutes Engagement
371  
372  Any non-STOP reply to touches 1-7 routes to the human reply funnel (existing autoresponder, `prompts/REPLIES.md`). This is treated as a warm lead and receives personalised follow-through, not a continuation of the automated sequence.
373  
374  The sequence pauses immediately on any reply. The autoresponder handles from that point.
375  
376  ### Legal Basis (do not re-litigate per send)
377  
378  The full legal analysis lives at `docs/05-outreach/legal-basis.md`. Summary for this sequence:
379  
380  - **AU/NZ:** Spam Act 2003 s.7(1)(b) inferred consent covers the full sequence. A business that publicly lists its email or phone on its website has implicitly invited contact about its business. Our messages concern their website. Inferred consent persists unless they opt out. The free fix offer does not create a new consent requirement — it is part of the same commercial communication.
381  
382  - **US (email):** CAN-SPAM. No prior consent required. Physical address in footer, opt-out mechanism, non-deceptive subject lines. The sequence complies. US SMS remains permanently blocked (DR-121).
383  
384  - **CA (email):** CASL s.6(2)(b) implied consent from publication. Treat conservatively — if the contact detail was conspicuously published in a business context (which it is — sourced from SERP/website), implied consent applies provided we identify ourselves and include opt-out. CA SMS permanently blocked (DR-121).
385  
386  - **UK (email):** Currently blocked pending Legitimate Interest Assessment. Do not activate until LIA is documented and approved.
387  
388  - **GDPR (IE, ZA, IN):** Legitimate Interest basis under Art. 6(1)(f) applies to B2B outreach with publicly available contact details. Identify sender, include opt-out, ensure relevance. Retain LIA documentation.
389  
390  ### The Free Fix as a Legal Consideration
391  
392  The free fix (delivering a meta description snippet, a list of broken links, etc.) is a service action delivered in the first email. It is not a separate commercial electronic message — it is the value component of touch 1. This framing is legally clean in all active markets.
393  
394  Do not represent a fix as "done" if it was not actually executed. The copy must reflect what was actually prepared and offered, not a phantom completed action.
395  
396  ### Opt-Out Processing
397  
398  Same as existing pipeline:
399  - SMS: STOP keyword triggers immediate suppression
400  - Email: unsubscribe link in footer; honour within 10 business days (CAN-SPAM); honor immediately in practice
401  - Any opt-out suppresses across all channels for that business domain
402  
403  ---
404  
405  ## When to Introduce Price: Decision Framework
406  
407  | Touch | Price Mentioned? | How |
408  |-------|-----------------|-----|
409  | 1 | No | Never |
410  | 2 | No | Never |
411  | 3 | Implicit only | "worth more per month than addressing this would cost" — no figure |
412  | 4 | Yes (first time) | Stated once, plainly. AU$337 / US$297 / £159. With prefill link. |
413  | 5 | Reference only | "The offer from last week still stands" — no re-statement of price |
414  | 6 | Reference only | Same |
415  | 7 | Yes (second time) | Direct: "The audit is [price]. 24-hour turnaround." |
416  | 8 | No | Self-serve link only |
417  
418  The rationale: introduce price after demonstrating three rounds of free value (touches 1-3). At touch 4, the price lands in the context of "here is the full picture, which is what the paid service covers." By touch 7, the prospect has received 6 prior messages and has demonstrated passivity but not hostility — a direct ask is appropriate at that stage.
419  
420  ---
421  
422  ## Free Fix Execution: Pipeline Integration
423  
424  The free fix must be selected and "prepared" (i.e. the fix deliverable generated) before touch 1 is sent. This is a pre-outreach step that should run as part of the proposal/enrichment phase, not at send time.
425  
426  **Implementation steps (to be built):**
427  
428  1. After enrichment, run a `free-fix-selector.js` module that:
429     - Reads the site's `weaknesses` array from the score JSON
430     - Checks for missing/truncated meta description (priority 1)
431     - Checks for mobile load time issues (priority 2)
432     - Checks for missing alt text on first two images (priority 3)
433     - Writes the prepared fix content to `free_fix_content` column on the site record
434  
435  2. The fix content (e.g. the written meta description, the corrected internal links list) is stored and referenced in the touch 1 template via a `{{free_fix_summary}}` token.
436  
437  3. If no fix can be identified for a site, fall back to the current outreach approach (score-led touch 1) — do not hold the site from outreach.
438  
439  **Scope for initial implementation:**
440  
441  Focus on meta description only for the first iteration. It is the highest coverage (most sites are missing or have truncated meta descriptions), lowest risk (purely additive), and most visually verifiable fix.
442  
443  ---
444  
445  ## Subject Line Quick Reference
446  
447  | Touch | Email Subject Options |
448  |-------|-----------------------|
449  | 1 | `quick fix for [domain]` / `noticed something on [domain]` / `your Google listing looks off` |
450  | 2 | `still have that fix ready` / `one more thing I found on [domain]` |
451  | 3 | `what [domain] is losing each month` / `honest question about [businessname]` |
452  | 4 | `the full picture for [domain]` / `everything I've found on [domain]` |
453  | 5 | `what [competitor] does differently` / `[businessname] vs. the competition` |
454  | 6 | `what % of your Google Ads are working` / `your reviews aren't working for you` |
455  | 7 | `43,000+ sites scored — here is where yours ranks` / `final look at [domain]` |
456  | 8 | `closing the file on [domain]` / `last one from me` |
457  
458  All subject lines: lowercase, 4-7 words, no punctuation marks, no emoji, no ALL CAPS.
459  
460  ---
461  
462  ## Expected Metrics (Targets to Validate)
463  
464  These are informed estimates based on signal-based outreach benchmarks and the specific ICP (local service businesses, AU primary). They must be validated against real data over the first 2,000 sequences completed.
465  
466  | Metric | Target | Basis |
467  |--------|--------|-------|
468  | Touch 1 reply rate | 6-10% | Free fix offer vs. generic cold email (2-3x lift expected) |
469  | Touch 1-3 cumulative positive reply rate | 10-15% | Value-first sequence benchmarks |
470  | Touch 4-8 conversion rate (positive reply → paid) | 20-30% | Warm lead conversion, existing autoresponder funnel |
471  | Overall sequence conversion (sent → paid) | 2-4% | Combined funnel (10-15% reply × 20-30% close) |
472  | Opt-out rate per touch | < 1% | Triggers a review of that touch's copy if exceeded |
473  | Sequence completion rate | > 80% | Reps/pipeline must complete sequences; partial sequences produce no data |
474  
475  Target: overall sequence conversion of 2-4% would represent a 20-40x improvement over the current baseline. Even 1% would be a significant revenue inflection given the pipeline's outreach volume.
476  
477  ---
478  
479  ## A/B Test Plan
480  
481  Run one variable change at a time. Initial priority:
482  
483  1. **Free fix specificity:** "I've written a Google snippet for your site" (specific) vs. "I've found a quick win on your site" (vague). Test on 500 touch 1 sends each. Metric: reply rate.
484  
485  2. **Price introduction timing:** Touch 4 (current) vs. Touch 5 (delayed). Test on 300 sequences reaching that step. Metric: positive reply rate post-price-introduction.
486  
487  3. **SMS at touch 1:** AU/NZ email-only vs. email + SMS at touch 1. Test on 200 per arm. Metric: touch 1 reply rate (combined channel).
488  
489  Do not test multiple variables simultaneously. Document results in a new `docs/03-pipeline/ab-test-results.md` file as data accumulates.
490  
491  ---
492  
493  ## Implementation Checklist
494  
495  - [ ] Update `prompts/FOLLOWUP.md` to reflect the 8-touch angle map and free-fix framing
496  - [ ] Build `free-fix-selector.js` (meta description priority only, v1)
497  - [ ] Add `free_fix_content` column to sites table (migration)
498  - [ ] Update touch 1 templates in `data/templates/[country]/followup-email.json` with free-fix framing
499  - [ ] Update touch 4 templates to introduce price for the first time
500  - [ ] Update touch 6 templates with ad waste / reviews disconnect angle selection logic
501  - [ ] Update touch 8 templates to match the breakup spec above
502  - [ ] Add compliance check: do not send touch 1 if `free_fix_content IS NULL` AND site has no scored weaknesses (edge case: pristine sites that should not be in pipeline)
503  - [ ] A/B test infrastructure: add `ab_arm` column to outreaches table for test tracking
504  
505  ---
506  
507  **Last updated:** 2026-04-02
508  **Status:** Strategy accepted — implementation pending
509  **Next decision:** When to build `free-fix-selector.js` relative to other pipeline priorities