# LevSMS Pilot Onboarding — what to tell every new tester

**The #1 silent failure for new LevSMS users:** they text the number, the reply gets sent (Twilio confirms delivered), but their phone hides it in a spam/filtered folder. User thinks LevSMS is broken. They never reply. Pilot fails for that user.

**Confirmed working:** Sam's 917 receives replies normally. Working end-to-end.

**Confirmed pattern:** 718, 845, 929 test numbers all show `Status: SENT` in OUTBOUND_LOG and `MessageStatus: delivered` in DELIVERY_LOG. The phone receives but hides.

**Root cause** (in priority order):
1. **iOS "Filter Unknown Senders"** — Settings → Messages → Filter Unknown Senders is ON. Messages from non-contact numbers go to a hidden "Unknown Senders" tab. User has to actively check it.
2. **Android Messages spam filter** — auto-routes new-sender SMS to spam folder.
3. **Kosher phone provider filters** — Fig / Genie / Koshernet / Inspire actively block or hide commercial-pattern SMS.
4. **User tapped "Block" or "Report Junk"** at some point — auto-blocked forever.

---

## The 30-second script to share with every new pilot tester

Before they text the number, tell them this (text it / WhatsApp it / say it in person):

> Hey — try our new community SMS service. Before you text it though:
>
> **Step 1:** Save **(516) 585-2323** in your contacts as **"LevSMS"**.
>
> **Step 2:** Text the word **MENU** to that number.
>
> **Step 3:** If you don't see a response within 30 seconds, **check your spam folder** or "Unknown Senders" tab. iPhone hides texts from new numbers there until you save the contact. After you save (516) 585-2323 in your contacts, future replies arrive in your normal inbox.
>
> Reply STOP anytime to opt out.

That's it. One paragraph. **If they do steps 1-3, the service works.** If they skip Step 1, they'll think LevSMS is broken and quit.

---

## What's working (no Sam action needed)

- Twilio inbound webhook: ✅ confirmed (every incoming text logs to INBOUND_LOG)
- Twilio outbound REST API: ✅ confirmed (every reply gets a `sent` then `delivered` callback in DELIVERY_LOG)
- Dedup against Twilio retries: ✅ shipped 2026-05-14 (commit `5973139`)
- Daily 4 AM auto-refresh of zmanim/parsha/weather/holidays/learning: ✅ trigger installed
- Admin tier (REFRESH / STATUS / DIAG / WHO / VERSION / CC / ADD): ✅ Sam's 917 only

## What needs Sam-side action (per-user, not per-code)

- **Tell every new tester the script above.** Without that one paragraph, ~50% of new users will hit the filter and quit silently.
- For kosher phones specifically: outreach to Fig / Genie / Koshernet / TAG to allowlist (516) 585-2323 — separate work tracked in `PARKED_FOR_LATER.md`.

---

## Diagnostic checklist if a specific tester says "I didn't get a reply"

1. **Did Sam see the inbound in INBOUND_LOG?** If no → their text didn't reach Twilio (carrier-blocked outbound from their phone, OR their phone has no signal, OR they typed the wrong number). Have them confirm they texted (516) 585-2323 not something else.
2. **Did OUTBOUND_LOG show Status=SENT?** If no, the script errored — check INBOUND_LOG Error column.
3. **Did DELIVERY_LOG show MessageStatus=delivered?** If yes, Twilio confirmed delivery to their carrier. Issue is now phone-side: spam folder / filter / blocked.
4. **Did DELIVERY_LOG show MessageStatus=undelivered + ErrorCode?** That's the actual delivery failure. Code tells the story:
   - `30003` — handset unreachable
   - `30004` — blocked / opted out
   - `30005` — unknown destination
   - `30007` — **carrier filtered** (kosher carrier or A2P throttling)

If MessageStatus shows `delivered` but user says they don't see it → run the onboarding script above. 9 out of 10 it's the iOS Filter Unknown Senders folder.

---

**Last updated:** 2026-05-14
**Author:** Claude Code session 35 (post-pilot-test diagnosis)
