Date: June 11, 2026
Author: Mo / GTW (Meta Consultant)
Status: Strategic spec — supersedes earlier audience_structure docs for the data-rich state we're now in
Anthony Kaylor's 7-month PII export changed the game. We're no longer working with a 10-month-old stale seed — we have 195K customer records with revenue tags, by-vertical mapping, and recent recency. This is enough fuel to build a proper Meta-best-practices audience architecture that maps directly to how the algorithm actually wants to be fed:
This doc tells you (1) which seeds we need, (2) which spreadsheets each one maps to, (3) where they go in Ads Manager, and (4) which campaigns they target. Built under the SAC Financial Services restrictions (no Value LALs, no ZIP-narrowing, no age/gender narrowing) — but the workarounds get us ~80% of the value-LAL effect anyway via pre-filtered seed.
| # | Audience name in Ads Manager | Type | Source file | Est. size | Purpose |
|---|---|---|---|---|---|
| 1 | Custom_Mil_Combined_Fresh_06-11-2026 | Customer List | mil_combined_seed_90d.csv | 112,264 raw → ~70-95K matched | Master seed for combined LAL ladder + warm BAU |
| 2 | Custom_Mil_Auto_Fresh_06-11-2026 | Customer List | mil_auto_seed_90d.csv | 91,871 raw → ~60-80K matched | Auto-specific LAL ladder → Auto ALC |
| 3 | Custom_Mil_Home_Fresh_06-11-2026 | Customer List | mil_home_seed_90d.csv | 21,777 raw → ~14-19K matched | Home-specific LAL ladder → Home ALC |
| 4 | Custom_Mil_HighValue_06-11-2026 | Customer List | mil_high_value_seed_7mo.csv | 62,299 raw → ~40-55K matched | Value-biased LAL — feeds Max Val campaigns |
| 5 | Custom_Mil_Bundle_06-11-2026 | Customer List | mil_bundle_customers_7mo.csv | 2,698 raw → ~1,800-2,400 matched | Cross-sell seed (Auto+Home buyers) — informational, not for LAL |
| 6 | Suppression_Mil_AllCustomers_7mo_06-11-2026 | Customer List | mil_suppression_all_7mo.csv | 195,137 raw → ~125-170K matched | Exclude from every prospecting ad set |
| 7 | Suppression_FormSubmitters_30D | Custom Audience (Website) | Pending Lauren | Unknown | Cooldown for recent submitters |
| 8 | Warm_PageEngagement_Combined_365D | Saved (union of 4 existing) | n/a — combine in Ads Manager | ~1.5M | Warm layer ad set in BAU campaigns |
| 9 | LAL ladders (1% / 3% / 5%) off seeds 1-4 | Lookalike | seeds above | Auto-built by Meta | Targeting layer for ALC + Max Val |
That's 5 customer-list uploads (the spreadsheets), 1 saved-audience union (UI-only, no upload), 1 pending Lauren, and 12 lookalikes (1%/3%/5% × 4 seeds) Meta builds on its own once the seeds process.
All in /Users/mo/Downloads/For FB Audiences/output/ after running prep_audience_csvs.py:
output/
├── mil_combined_seed_90d.csv 112,264 rows Combined Mar-May seed
├── mil_auto_seed_90d.csv 91,871 rows Auto-only Mar-May seed
├── mil_home_seed_90d.csv 21,777 rows Home-only Mar-May seed
├── mil_high_value_seed_7mo.csv 62,299 rows Top quartile by value (Nov-May)
├── mil_high_value_auto_seed_7mo.csv 57,544 rows Top quartile Auto only (informational)
├── mil_high_value_home_seed_7mo.csv 4,755 rows Top quartile Home only (informational)
├── mil_bundle_customers_7mo.csv 2,698 rows Auto AND Home customers
└── mil_suppression_all_7mo.csv 195,137 rows All Mil.com customers, 7 months
Upload 5 of these to Meta (numbered to match audience table above):
mil_combined_seed_90d.csv → audience #1mil_auto_seed_90d.csv → audience #2mil_home_seed_90d.csv → audience #3mil_high_value_seed_7mo.csv → audience #4mil_bundle_customers_7mo.csv → audience #5 (small but track it)mil_suppression_all_7mo.csv → audience #6The two mil_high_value_*_seed_7mo.csv files are informational (split-out shows you that 92% of high-value records are Auto, only 8% Home — that's why we use the combined high-value seed for Max Val and don't bother building a Home-only Max Val variant yet).
mil_combined_seed_90d.csv)Why: Recency-weighted. 90-day window means Meta builds LALs from fresh signal — strongest predictor of who's in-market now. Includes both Auto and Home in one pool because Meta's LAL algorithm doesn't care about vertical purity at this scale — it cares about behavioral pattern density.
Feeds: General-purpose LAL ladder + warm BAU campaigns.
mil_auto_seed_90d.csv)Why: Vertical-pure signal. When Meta builds a LAL off this, every "look-alike" is modeled on Auto-converting behavior specifically — not diluted by Home patterns. Auto ALC needs this because the campaign objective is Auto leads.
Feeds: Auto ALC campaign LAL stack.
mil_home_seed_90d.csv)Why: Same logic, vertical-pure for Home. Smaller seed (22K) but well above the 10K Meta minimum for stable LAL — and the signal purity is worth more than seed size at this volume.
Feeds: Home ALC campaign LAL stack.
mil_high_value_seed_7mo.csv) — THE STRATEGIC WINWhy: Under SAC Financial Services, Meta blocks the "Value-Based Lookalike" feature outright. The workaround that gets us ~80% of the same effect: pre-filter the seed CSV to only top-quartile customers by conversion_value, then build a standard LAL off that filtered seed. Meta doesn't see the value field, but every record in the seed is a $78+ customer — so the LAL it builds is structurally biased toward high-value users. We're using 7 months (not 90 days) here because high-value customers are rarer and we need volume — 62K is the right balance.
This is the single biggest unlock for Max Val campaigns. Auto Max Val has been underperforming partly because (a) the fbc bug is poisoning the value signal feeding back to Meta, and (b) the audience layer treats all customers as equal. This seed fixes (b) directly even if (a) takes weeks. Top quartile only = Meta optimizes toward the customers we'd kill to acquire more of.
Feeds: Auto Max Val + Home Max Val LAL stacks.
mil_bundle_customers_7mo.csv)Why: People who bought BOTH Auto and Home from us. 2,698 of them. Highest LTV in the entire database — proven cross-sellable. Too small (sub-10K) to build a stable LAL off, but worth uploading for two reasons: (1) baseline for cross-sell value benchmarking, (2) if it scales past 10K in 6 months from new data, we get a premium LAL seed nobody else in the category has.
Feeds: Informational for now. Eventually a Bundle Max Val LAL when we hit 10K threshold.
mil_suppression_all_7mo.csv)Why: Don't pay to re-acquire users we already converted. 195K names of existing customers excluded from every prospecting ad set saves a measurable % of CPL that was previously wasted on duplicates.
Feeds: Exclusion layer on all 6 campaigns' prospecting ad sets.
Why: Even tighter cooldown — people who submitted a quote form in the last 30 days but didn't accept/convert yet. Don't spam them — they're in workflow. Lauren has access to FunnelFlux for this; needs a CSV pull.
Feeds: Exclusion layer on all 6 campaigns' prospecting ad sets.
Why: Pre-existing untouched ~1.5M people who engaged with the Military.com FB page, IG account, or related properties in the last 365 days. These are people who already know the brand — softer ad. Highest-engagement, lowest-objection, lowest-CPC audience available.
Feeds: Warm Layer ad sets in Auto BAU + Home BAU (NOT ALC — keep ALC clean for LAL signal).
Build them as ranges (1-3%, 3-5%) not stacks if you want smoother delivery; build as overlapping individual percentages (1%, 3%, 5%) if you want to A/B which size delivers best (recommended for first 30 days).
This is where the architecture lands in production. Six campaigns, each with explicit ad-set targeting:
For each customer-list seed:
mil_high_value_seed_7mo.csv, you could add a per-record value column if you want — but under SAC, Meta won't use it for LAL anyway. Skip it. Our pre-filter does the work.Custom_Mil_*_06-11-2026)For each processed seed, in Audiences:
LAL_Auto_US_1%_Jun26_FreshSeed, etc.Build all 12 LALs at once (4 seeds × 3 percentages) — Meta builds them in parallel, ~30-60 min each.
Warm_PageEngagement_Combined_365DWorking under Special Ad Category — Financial Services restrictions:
| Feature | Allowed? | Workaround |
|---|---|---|
| Customer-list Custom Audiences | ✅ Yes | Use as-is |
| Standard Lookalike Audiences (1/3/5%) | ✅ Yes | Use as-is |
| Value-Based Lookalikes | ❌ Blocked | Pre-filter the seed (what we're doing with high-value seed) |
| Engagement Custom Audiences (page, video) | ✅ Yes | Warm pool union |
| Detailed Targeting (interests) | ⚠️ Restricted list | Don't use insurance interests — they're blocked anyway |
| ZIP-code targeting | ❌ Blocked (15-mile radius minimum) | State-level only |
| Age narrowing | ❌ Blocked (18-65 default) | Locked at 18-65 |
| Gender narrowing | ❌ Blocked | All genders |
| Custom Audience EXCLUSIONS | ✅ Yes | Heavy use of suppression layer |
| Advantage+ Audience suggestions | ✅ Yes | Use in BAU and Max Val for broad ad sets |
Everything in this architecture is SAC-compliant. The high-value LAL workaround is the most sophisticated thing we can do legally under these restrictions.
Day 1 (today, ~90 min in Ads Manager):
mil_suppression_all_7mo.csv FIRST — it's the biggest, takes longest to process, and we need it for every other ad set's exclusion layer.mil_bundle_customers_7mo.csv last (it's small, fast to process).Day 2 (after seeds process, ~60 min):
Day 3 (after LALs build, ~45 min in Ads Manager edit mode):
Day 4+ (the growth deploy):
Under Anthony Paolucci's "deploy maximum capital at positive incremental returns" doctrine:
None of these recommendations cap, pause, or reallocate. Every one is a capacity unlock. The architecture itself is what removes the constraints.
Local files:
Script: /Users/mo/Desktop/military.com/deliverables/audit_2026-06-04/prep_audience_csvs.py
Inputs: /Users/mo/Downloads/For FB Audiences/mar26-may26 PII data.csv
/Users/mo/Downloads/For FB Audiences/nov25-feb26 PII data.csv
Outputs: /Users/mo/Downloads/For FB Audiences/output/*.csv (8 files)
This doc: /Users/mo/Desktop/military.com/deliverables/audit_2026-06-04/meta_audience_architecture_2026-06-11.md
Meta upload (Audiences):
Custom_Mil_Combined_Fresh_06-11-2026 ← mil_combined_seed_90d.csv
Custom_Mil_Auto_Fresh_06-11-2026 ← mil_auto_seed_90d.csv
Custom_Mil_Home_Fresh_06-11-2026 ← mil_home_seed_90d.csv
Custom_Mil_HighValue_06-11-2026 ← mil_high_value_seed_7mo.csv
Custom_Mil_Bundle_06-11-2026 ← mil_bundle_customers_7mo.csv
Suppression_Mil_AllCustomers_7mo_06-11-2026 ← mil_suppression_all_7mo.csv
LAL_Combined_US_{1,3,5}%_Jun26 ← built from Custom_Mil_Combined
LAL_Auto_US_{1,3,5}%_Jun26 ← built from Custom_Mil_Auto
LAL_Home_US_{1,3,5}%_Jun26 ← built from Custom_Mil_Home
LAL_HighValue_US_{1,3,5}%_Jun26 ← built from Custom_Mil_HighValue
Warm_PageEngagement_Combined_365D ← saved-audience union of 4 page-engagement audiences
Campaign assignments (see Part 4 for full matrix):
Auto BAU → Broad (Adv+ ON) + Warm Layer
Auto Max Val → Broad Value (Adv+ ON) + LAL_HighValue stack
Auto ALC → LAL_Auto stack only
Home BAU → Broad (Adv+ ON) + Warm Layer
Home Max Val → Broad Value (Adv+ ON) + LAL_HighValue stack
Home ALC → LAL_Home stack only
Suppressions applied to EVERY prospecting ad set:
Suppression_Mil_AllCustomers_7mo + Suppression_FormSubmitters_30D (when avail)
End of architecture spec. Execute Day 1 sequence when you're ready to upload — script already produced the spreadsheets clean.