{"id":"marketing-email","slug":"marketing-email","name":"Marketing / blast email","shortName":"Marketing / blast email","problemStatement":"Newsletters and campaigns (not pure transactional).","whenNotTopPick":"Transactional-only — Postmark/Resend.","categoryIds":["cat-comms"],"depotPickProviderId":"sendgrid","depotPickRationale":"capability marketing features + maturity.","runnersUpIds":["loops","resend","courier","customer-io"],"weights":{"capabilityFit":0.2,"pricePerformance":0.18,"latencyReliability":0.22,"developerDx":0.2,"privacyPosture":0.08,"lockInRisk":0.06,"maturity":0.06},"methodologyNotes":"capability marketing features + maturity.","tags":["marketing"],"depth":{"whenNotToUse":{"text":"Transactional-only — Postmark/Resend.","source":"editorial `whenNotTopPick` (data/jtbds.json)"},"whenNotToUseReason":null,"runnerUp":{"providerId":"loops","name":"Loops","overallForJob":7.97,"pickOverallForJob":8.02,"beatsPickOn":["pricePerformance","developerDx","lockInRisk"],"source":"first resolvable entry of the job's editorially ranked `runnersUpIds`; scores are stored job-weighted scores"},"runnerUpReason":null,"lockIn":{"pickLockInRisk":5,"runnerUpLockInRisk":4.2,"scale":"0–10 stored curated estimate; higher = more lock-in (worse)","pickExitSignals":[],"runnerUpExitSignals":[],"pickNotes":[],"selfHostFallback":[],"migration":"Runner-up Loops has lower stored lock-in risk (4.2 vs 5, 0–10, higher = more lock-in).","migrationReason":null,"derivedFrom":"stored lockInRisk scores, provider tags (oss, self-host, openai-compat, open-models), free rows that list this job, and verbatim provider notes. No migration guide was invented."}},"freshness":{"pick":{"score":{"asOf":"2026-09-14","ageDays":43,"stale":true,"staleAfterDays":30,"reason":null},"lastReviewed":{"asOf":"2026-09-14","ageDays":43,"stale":true,"staleAfterDays":30,"reason":null},"sourceCheck":{"checkedAt":"2026-10-27","sourceUrls":1,"sourcesReachable":1,"pricingRows":10,"pricingRowsReconfirmed":0,"note":"A source re-check confirms the page is reachable and, for pricing rows, that the stored amount and SKU name appear on it. It does not re-derive or change the score.","reason":null}}},"depotPick":{"id":"sendgrid","slug":"sendgrid","name":"SendGrid (Twilio)","tagline":"Enterprise volume email incumbent. New agent apps should try Resend/Postmark first.","overall":8.02},"runnersUp":[{"id":"loops","slug":"loops","name":"Loops","tagline":"Product/lifecycle email for agent SaaS. Depot transactional default stays Resend; Postmark if deliverability…","overall":7.97},{"id":"resend","slug":"resend","name":"Resend","tagline":"Depot default for app/agent transactional email. Migrate to Postmark/SendGrid only for specific…","overall":8.67},{"id":"courier","slug":"courier","name":"Courier","tagline":"Use when your agent/product notifies across many channels with preferences. Skip if you only send email.","overall":8.16},{"id":"customer-io","slug":"customer-io","name":"Customer.io","tagline":"Best when agents need behavioral messaging + txn in one vendor. Prefer Resend for pure transactional DX…","overall":8.18}]}