/ TODO.md
TODO.md
1 # 333Method — TODO 2 3 ## Brand Website 4 5 ### Score-change notifications (scan.php email capture) 6 7 - **Status:** Not built — keeping copy as-is ("We'll also notify you if your score changes") 8 - User decision: keep copy, build the feature later 9 - Options: (a) build scheduled re-scan + email system using optin_timestamp stored with email captures 10 11 ### Email nurture sequence for scan.php leads 12 13 - **Status:** Opt-in checkbox built ✓ — outreach pipeline not yet built 14 - Opt-in checkbox added to scan.php email gate (unticked by default) 15 - Label: "Yes, email me tips and occasional offers from the brand" 16 - JS sends `marketing_optin: true/false` and `optin_timestamp` with save-email API call 17 - **Remaining:** Backend needs to store `marketing_optin` and `optin_timestamp` in scan_emails table, then build outreach pipeline + unsubscribe mechanism 18 19 ### Referral system 20 21 - **Status:** Not built 22 - Concept: customer who purchased shares a referral link; if a new customer purchases via that link, referrer gets 15% off their next order 23 - **Components needed:** 24 - Referral code generation (post-purchase, on thank-you.php) 25 - Referral tracking (affiliate-style, cookie or URL param) 26 - Discount application at checkout (inject into PayPal order via API) 27 - Referral attribution in DB 28 - Thank-you page copy + CTA (placeholder copy already on thank-you.php) 29 - **Priority:** Medium — implement after core pipeline is stable 30 31 ### /a/ dedicated landing page 32 33 - **Status:** Built ✓ — see `a.php` in the website repo 34 - URL: `/a/{site_id}` — personalised cold outreach landing page 35 - Shows domain + score gauge + grade from prefill data (loaded from `data/orders/{site_id}.json`) 36 - Falls back gracefully if no prefill data exists 37 - reply-processor.js now sends score+grade to store-prefill, builds /a/ short URLs 38 - o.php kept for backwards compatibility; new outreach uses /a/ 39 - **Remaining:** Add `/a/(\d+)` rewrite to production .htaccess on Hostinger 40 41 ### CRO Agent vs Scoring Research — Resolve Timer Disagreement 42 43 - **Status:** ✅ Researched (2026-03-18) — CRO agent was right 44 - **Verdict:** Remove or replace the countdown timer on the production site 45 - **Scoring rubric updated:** Countdown timer elements now score 4/10 (not 9/10) for professional services sites — fake/evergreen timers damage trust on B2B cold-traffic pages 46 - **Full research:** `docs/03-pipeline/cro-timer-research.md` 47 - **Action needed (user):** Remove evergreen timer from `assets/js/main.js` in the website repo or replace with a real operational constraint ("Delivering reports within 48 hours") 48 49 ### SEO — hreflang tags 50 51 - **Status:** Done ✓ — added to index.php and scan.php 52 - All 14 supported languages + x-default, ?lang= param format 53 54 ### Schema markup 55 56 - **Status:** Done ✓ 57 - index.php: Organization + Service + FAQPage (8 questions) 58 - scan.php: WebApplication + FAQPage (4 questions) 59 60 ### og:image 61 62 - **Status:** Done ✓ — deployed by user (17 March 2026) 63 64 ### Autoresponder: expand to form, X, and LinkedIn channels 65 66 - **Status:** Not built 67 - Currently autoresponder only handles `sms` and `email` inbound (hardcoded in `src/inbound/autoresponder.js` line 635: `AND m.contact_method IN ('sms', 'email')`) 68 - **Goal:** When form, X (Twitter), and LinkedIn outreach channels are production-ready, extend the autoresponder to: 69 1. Detect inbound replies via those channels 70 2. Generate appropriate responses (form = email-length, X = 280 chars, LinkedIn = professional tone) 71 3. Send via the correct channel sender 72 - **Prerequisites:** 73 - Form: inbound detection mechanism (no webhook — would need polling or manual import) 74 - X: DM webhook or polling via Twitter API v2 75 - LinkedIn: messaging API access (restricted — may need LinkedIn partnership) 76 - **Trigger:** Enable per-channel as each channel's inbound pipeline is built 77 - **Ref:** Stone Depot (site #461983) was the first case where SMS hit a dead-end and form follow-up was needed manually 78 79 ### .htaccess production deployment 80 81 - **Status:** Partially done — production .htaccess rules need updating 82 - .htaccess.example has all current rules (clean URLs + /a/ landing page + data/ block) 83 - **Remaining actions for host terminal:** 84 1. Add clean URL rewrites: scan, thank-you, privacy, terms, cookies, impressum 85 2. Add `/a/(\d+)` rewrite for new landing page 86 3. Add `RewriteRule ^data/ - [F,L]` to block prefill JSON access 87 4. Add `SetEnv BUSINESS_PHONE` and `SetEnv BUSINESS_ABN`