Apply PAS to highlight the pain point, intensify it, then present the SaaS solution; layer AIDA by moving the prospect from attention to desire and finally a clear call‑to‑action.
Step‑by‑step workflow
1. Research trigger metrics – pull company_size, ARR, and tech_stack via Clearbit Enrichment API (/v2/companies/find?domain=). Flag accounts where ARR > 5M and tech_stack includes AWS or Snowflake.
2. Attention (AIDA) / Problem (PAS) – craft a 6‑word headline using the trigger metric, e.g., “Data pipelines choking your $10M growth”. Use titlecase in Python: title = headline.title().
3. Agitate – insert a quantifiable cost: cost = avg_latency $0.12 per ms. Show “Every 100 ms adds $12k/month”.
4. Interest – embed a social proof snippet pulled from G2 API (/v1/reviews?product_id=) limited to 2 sentences, with a 4.5+ rating filter.
5. Desire – map the SaaS feature to the cost reduction: savings = cost 0.35 and display “Save $4.2k/mo instantly”.
6. Solve / Action – generate a CTA button URL with UTM parameters: https://app.example.com/signup?utm_source=linkedin&utm_medium=ad&utm_campaign=pas_aida.
7. Validate – A/B test two variants (PAS‑first vs AIDA‑first) on LinkedIn Sponsored Content, target CTR ≥ 0.45% and CPL ≤ $45 for 7‑day run.
PAS vs AIDA (text table)
| Element | PAS | AIDA |
|---------|-----|------|
| Hook | Problem | Attention |
| Tension | Agitate | Interest |
| Resolution | Solve | Desire + Action |
Python helper
def build_ad(company):
headline = f"Data pipelines choking your ${company['ARR']/1e6:.1f}M growth"
cost = company['avg_latency_ms'] * 0.12
savings = cost * 0.35
return f"{headline}\nEvery 100 ms adds ${cost*100/1000:.0f}k/month.\nSave ${savings*1000:.0f}k/mo instantly.\n[Start free trial]({company['cta_url']})"Gotcha: LinkedIn caps carousel ad copy at 125 characters per card; exceeding it truncates the CTA and can drop the UTM parameters, so always pre‑shorten URLs with a service like Bitly and keep the core message within the limit.