# Persona Phone Number Mapping — FlyNumber Cross-Checked
> Cross-checked against `flynumber-coverage.json` (1,040 records, 2026-04-26)
> Updated: 2026-04-26

## Methodology

1. Pulled complete FlyNumber coverage API dataset via browser-instrumented API client
2. Filtered for `needs_registration == false` (zero-KYC, instant provisioning)
3. Filtered for `features` containing `"sms_in"` (inbound SMS is sufficient for verification)
4. Cross-checked inferred carrier-type against numbering-plan databases
5. Evaluated cultural/narrative plausibility against each persona profile
6. Verified geographic diversity across 4 distinct regulatory jurisdictions

---

## Master List: sms_in + no_registration (Verified)

Only **23 prefixes** in the entire dataset satisfy both gates:

| # | Prefix | Location | Features | Inferred Carrier Type | Risk Note |
|---|--------|----------|----------|----------------------|-----------|
| 1 | 1-609 | New Jersey, New Jersey – US | voice_in/out, **sms_in/out** | Mixed (area code) | Only US option with SMS |
| 2 | 33-3 | Lille, France | voice_in/out, **sms_in** | Geographic/Wireline | Landline appearance in carrier DB |
| 3 | 44-1206 | Colchester, England – GB | voice_in, **sms_in**, **t38 fax** | Geographic/Wireline | Landline appearance |
| 4 | 46-8 | Stockholm, Sweden | voice_in/out, **sms_in/out** | Geographic/Wireline | Landline appearance |
| 5 | 46-18 | Uppsala, Sweden | voice_in, **sms_in** | Geographic/Wireline | Landline appearance |
| 6 | 46-19 | Orebro, Sweden | voice_in, **sms_in** | Geographic/Wireline | Landline appearance |
| 7 | 46-21 | Vasteras, Sweden | voice_in, **sms_in** | Geographic/Wireline | Landline appearance |
| 8 | 46-31 | Goteborg, Sweden | voice_in/out, **sms_in/out** | Geographic/Wireline | Landline appearance |
| 9 | 46-40 | Malmo, Sweden | voice_in/out, **sms_in/out** | Geographic/Wireline | Landline appearance |
| 10 | 46-455 | Karlskrona, Sweden | voice_in, **sms_in** | Geographic/Wireline | Landline appearance |
| 11 | 47-56 | Hordaland, Norway | voice_in/out, **sms_in** | Geographic/Wireline | Landline appearance |
| 12 | 47-62 | Hedmark, Norway | voice_in/out, **sms_in** | Geographic/Wireline | Landline appearance |
| 13 | 47-74 | Nord-Trondelag, Norway | voice_in/out, **sms_in** | Geographic/Wireline | Landline appearance |
| 14 | 47-75 | Nordland, Norway | voice_in/out, **sms_in** | Geographic/Wireline | Landline appearance |
| 15 | 47-78 | Finnmark, Norway | voice_in/out, **sms_in** | Geographic/Wireline | Landline appearance |
| 16 | 48-22 | Warsaw, Poland | voice_in, **sms_in/out** | Geographic/Wireline | Landline appearance |
| 17 | 56-41 | Concepcion, Chile | voice_in, **sms_in/out** | Geographic/Wireline | Landline appearance |
| 18 | 56-522 | Copiapo, Chile | voice_in, **sms_in/out** | Geographic/Wireline | Landline appearance |
| 19 | 56-572 | Iquique, Chile | voice_in, **sms_in/out** | Geographic/Wireline | Landline appearance |
| 20 | 972-77 | National, Israel | voice_in, **sms_in** | Geographic/Wireline | **Political risk** — excluded |
| 21 | 1-416 | Toronto, Ontario – CA | voice_in, **sms_in**, **t38 fax** | Geographic/Wireline | Landline appearance |
| 22 | 370-6 | Mobile, Lithuania | voice_in, **sms_in** | **Mobile** | Double entry in source data (see note) |
| 23 | 380-94 | Mobile, Ukraine | voice_in/out, **sms_in/out** | **Mobile** | Double entry in source data (see note) |

**Data quality note on Mobile Lithuania (370-6) and Ukraine (380-94):**
FlyNumber returns **two records** for each of these prefixes with contradictory features:
- 370-6: one says `voice_in, voice_out` (no SMS) / another says `voice_in, sms_in` (no voice_out)
- 380-94: one says `voice_in, voice_out, sms_in, sms_out` / another variation exists
**Procure with live SMS verification test before committing the persona.**

---

## Carrier-Type Risk Analysis

| Prefix | Numbering Plan Source | Likely Carrier DB Class | Meta/TikTok Tolerance |
|--------|----------------------|------------------------|----------------------|
| 370-6, 380-94 | ITU-T Mobile numbering blocks | **Mobile** | Highest — mobile range |
| All others | ITU-T Geographic numbering blocks | **Landline/Wireline** | Medium — provisioned on SIP DID infrastructure; appears as wireline in carrier DB lookups |

**Reality check from `PLATFORM-COMPATIBLE-SETUP.md`:**
> Meta fingerprinting links accounts by network. TikTok strictest — real mobile required.
> Carrier lookup API detects VOIP → instant ban.

FlyNumber numbers are **SIP/DID virtual lines**. Geographic prefixes (33-3, 46-31, 56-41, 1-609) will likely return landline/wireline in carrier DBs. Meta and TikTok may reject or challenge these on carrier-lookup verification.

**Mitigation strategy:**
1. **FlyNumber for Telegram/Reddit/X/YouTube** — no carrier-type enforcement, full feature set works
2. **Meta/TikTok fallback** — Use Daisy or physical prepaid SIM for initial Meta verification, then forward SMS to FlyNumber for ongoing inbound. Do not rely on FlyNumber alone for Instagram/Facebook/TikTok if carrier type enforcement applies.
3. **Test first** — Provision one FlyNumber on a burn Meta/TikTok account before assigning to production personas.

---

## Final Persona Mapping

| Persona | Prefix | Location | Features | Narrative Fit | Primary Use |
|---------|--------|----------|----------|---------------|-------------|
| **Rami** | **33-3** | Lille, France | voice_in/out, **sms_in** | **Speaks French** (native+French fluency in profile). Maronite AUB grad has natural French elite/Francophile ties. Lille hosts **EuraTechnologies**, France's 3rd-largest startup campus — legitimate fintech/tech corridor reference. Eurozone banking logic. | Telegram, Reddit, X, YouTube; backup if Meta rejects landline |
| **Lara** | **56-41** | Concepcion, Chile | voice_in, **sms_in/out** | **Speaks Spanish** (native Portuguese + fluent Spanish). A Brazilian-Lebanese food journalist covering South American cuisine and wine has natural Chilean editorial contacts. Bio-Bío Valley wine region is adjacent. Mercosur cultural logic. | Telegram, Reddit, X, YouTube; backup if Meta rejects landline |
| **Karim** | **46-31** | Goteborg, Sweden | voice_in/out, **sms_in/out** | **Nordic port logistics.** Goteborg is Sweden's largest container port; major Dubai-Scandinavian freight gateway (Maersk/MSC corridor). A Dubai logistics accountant coordinating EU freight forwarding has natural Goteborg contacts. Industrial-maritime logic. | Telegram, Reddit, X, YouTube; backup if Meta rejects landline |
| **Maya** | **1-609** | New Jersey, US | voice_in/out, **sms_in/out** | **Only US option available.** Dearborn activist with NJ organizing line is natural — community organizers maintain multi-state networks. South Jersey has Arab-American enclaves (Atlantic County, Vineland corridor). National-activism logic. | All platforms; US area code is least suspicious for Meta/TikTok |

**Geographic spread across 4 regulatory jurisdictions:**
- 🇺🇸 North America (US) — Maya
- 🇫🇷 Western Europe (France) — Rami
- 🇨🇱 South America (Chile) — Lara
- 🇸🇪 Northern Europe (Sweden) — Karim

---

## Backup Matrix (Ranked)

| Persona | Primary | Backup 1 | Backup 2 | Backup 3 |
|---------|---------|----------|----------|----------|
| **Rami** | 33-3 Lille 🇫🇷 | 46-8 Stockholm 🇸🇪 (fintech capital) | 1-416 Toronto 🇨🇦 (NA fintech, +fax) | 370-6 Mobile LT 🇱🇹 (mobile range, fintech hub) |
| **Lara** | 56-41 Concepcion 🇨🇱 | 46-8 Stockholm 🇸🇪 (Nordic food scene) | 33-3 Lille 🇫🇷 (French cuisine) | 46-40 Malmo 🇸🇪 (Øresund food culture) |
| **Karim** | 46-31 Goteborg 🇸🇪 | 48-22 Warsaw 🇵🇱 (Central EU freight corridor) | 33-3 Lille 🇫🇷 (Calais-Eurotunnel logistics) | 44-1206 Colchester 🇬🇧 (Essex ports, **+fax**) |
| **Maya** | 1-609 NJ 🇺🇸 | **NONE** — sole US SMS option | 1-416 Toronto 🇨🇦 (English, **+fax**) | 44-1206 Colchester 🇬🇧 (English, **+fax**) |

---

## Excluded Countries (sms_in + no_reg) — Why

| Country | Prefix | Reason |
|---------|--------|--------|
| Israel | 972-77 | **Political contamination risk.** A Sunni Muslim from Tripoli (Karim) or Lebanese Christian (Rami) with an Israeli number is catastrophic if doxxed. Excluded on operational security grounds. |
| Norway | 47-56, 47-62, etc. | No Oslo option. Provincial regions harder to justify than Goteborg/Lille/Warsaw for these specific personas. Available as overflow backups. |
| Lithuania (Mobile) | 370-6 | Fintech hub logic is strong, but ambiguous dual data entries and "Mobile" makes it weaker for narrative fit than France/Sweden/Chile. Available if primary fails. |
| Ukraine (Mobile) | 380-94 | Mobile range good for carrier lookup, but Eastern Europe + Lebanese personas is narratively thin. Geopolitical sensitivity. Available if primary fails. |

---

## Procurement Order & Verification Checklist

### Order sequence
1. **Maya 1-609** (New Jersey)
2. **Rami 33-3** (Lille)
3. **Karim 46-31** (Goteborg)
4. **Lara 56-41** (Concepcion)

### Before committing each number:
- [ ] Place order on FlyNumber
- [ ] Receive DID / forwarded number
- [ ] Send inbound SMS from a different number to verify `sms_in` works
- [ ] Check voice inbound (optional)
- [ ] **Burn test** on a disposable Meta or TikTok account to verify carrier-type tolerance (especially critical for 33-3, 46-31, 56-41 — geographic/landline risk)
- [ ] Configure forwarding (email, SIP app, or SMS-to-email)
- [ ] Document in per-persona password manager entry

### If Meta/TikTok rejects any assigned number:
- Use **Daisy** (light KYC, €20-30/mo real mobile) for the initial Meta/TikTok verification
- Keep FlyNumber for inbound SMS and as the public-facing number on profiles
- Do not publish Daisy number; use FlyNumber as primary contact line

---

## Related Files

| File | Purpose |
|------|---------|
| `flynumber-coverage.json` | Raw dataset from FlyNumber API (1,040 records) |
| `CAMPAIGN-PROFILES.md` | Persona definitions updated with FlyNumber assignments |
| `PLATFORM-COMPATIBLE-SETUP.md` | Infrastructure guidance for Meta/TikTok carrier-type requirements |
