{"asOf":"2026-10-03","doesNotChangeDepotPicks":true,"doesNotChangePriceSort":true,"doesNotRescore":true,"caps":{"needs":6,"freePerNeed":3,"caseStudies":3},"class":{"id":"sales-outreach","name":"Sales and outreach agent","definition":"Drafts outreach from sourced fields about a person or account, and does not send until a person approves.","needs":{"jtbdIds":["people-enrichment","marketing-email","outbound-webhooks"],"freeKinds":["free_docs"],"capabilityTags":["enterprise"],"plain":["Human approval before send","Fields must come from a cited source"]},"failureModeIds":["identity-confusion","confirmation-skip","runaway-spend","stale-retrieval","policy-conflict","ungrounded-answer","prompt-injection"],"exampleTasks":["Draft an email from cited fields and leave it unsent","Stop a sequence when the recipient has already replied"]},"needsConsidered":["people-enrichment","marketing-email","outbound-webhooks"],"needsOmitted":[],"jobs":[{"jtbdId":"people-enrichment","decide":{"available":true,"unavailableReason":null,"providerId":"people-data-labs","scoreAsOf":"2026-09-14","scoreAgeDays":43,"scoreStale":true,"runnerUpId":"apollo","cite":"Depot Pick for people-enrichment: people-data-labs (asOf 2026-09-14). See GET /api/jtbds/people-enrichment + GET /api/methodology.","citePath":"/api/jtbds/people-enrichment"},"quote":{"available":true,"unavailableReason":null,"cheapest":null,"recommendedWorkloadQuote":null,"representativeQuote":null,"estimatedTaskCost":null,"reason":"Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null.","priceWinnerNote":"Nothing was compared. no comparable sourced unit for this job; chat input $/1M and other units were not borrowed pickIsPriceWinner is null."},"pickIsNotPriceWinner":false,"freeResources":[],"freeMatch":"none"},{"jtbdId":"marketing-email","decide":{"available":true,"unavailableReason":null,"providerId":"sendgrid","scoreAsOf":"2026-09-14","scoreAgeDays":43,"scoreStale":true,"runnerUpId":"loops","cite":"Depot Pick for marketing-email: sendgrid (asOf 2026-09-14). See GET /api/jtbds/marketing-email + GET /api/methodology.","citePath":"/api/jtbds/marketing-email"},"quote":{"available":true,"unavailableReason":null,"cheapest":{"providerId":"sendgrid","slug":"sendgrid","name":"SendGrid (Twilio)","skuId":"sendgrid-mkt-basic-100k-extra","sku":"Marketing Campaigns Basic 100K extra email or contact","item":"Marketing Campaigns Basic 100K extra email or contact","plan":"Marketing Campaigns Basic 100K extra email or contact — Marketing Campaigns overage","isFloorPrice":true,"floorWarning":"Provider-wide floor SKU; may not be the flagship model scored for this JTBD.","skuKind":"email_1k","unit":"usd_per_email","amountUsd":0.0023,"comparison":"min sourced marketing usd_per_email among candidates; page unit is per extra email or contact, not per 1k and not per contact-month; not converted from a monthly plan; transactional email SKUs were not ranked; monthly plans were not ranked; not quality-adjusted","usdPerMillionInputTokens":null,"sourceUrl":"https://www.twilio.com/en-us/products/marketing-campaigns/pricing","asOf":"2026-10-03"},"recommendedWorkloadQuote":{"providerId":"sendgrid","providerName":"SendGrid (Twilio)","skuId":"sendgrid-mkt-basic-100k-extra","item":"Marketing Campaigns Basic 100K extra email or contact","plan":"Marketing Campaigns Basic 100K extra email or contact — Marketing Campaigns overage","unit":"usd_per_email","amountUsd":0.0023,"outputSkuId":null,"outputItem":null,"outputAmountUsd":null,"outputUnit":null,"sourceUrl":"https://www.twilio.com/en-us/products/marketing-campaigns/pricing","asOf":"2026-10-03","pricingLastVerifiedAt":"2026-10-03","isFlagshipForJob":false,"differsFromFloorCheapest":false,"representativeQuote":{"skuId":"sendgrid-mkt-basic-100k-extra","item":"Marketing Campaigns Basic 100K extra email or contact","plan":"Marketing Campaigns Basic 100K extra email or contact — Marketing Campaigns overage","amountUsd":0.0023,"inputOrUnitUsd":0.0023,"unit":"usd_per_email","outputUsd":null,"outputUnit":null,"sourceUrl":"https://www.twilio.com/en-us/products/marketing-campaigns/pricing","asOf":"2026-10-03"},"estimatedTaskCost":{"tasks":1000,"retryAndToolOverheadMultiplier":1.15,"retryToolOverheadMultiplier":1.15,"unitsPerTask":1,"baseCostPer1kTasksUsd":0.0023,"totalUsd":0.0026,"estimatedTotalUsd":0.0026,"perTaskUsd":0.000003,"estimatedCostPerTaskUsd":0.000003,"formula":"$0.0023 (usd_per_email) * 1.15 overhead","assumptions":"1,000 tasks in job native unit with 1.15x retry overhead."}},"representativeQuote":{"skuId":"sendgrid-mkt-basic-100k-extra","item":"Marketing Campaigns Basic 100K extra email or contact","plan":"Marketing Campaigns Basic 100K extra email or contact — Marketing Campaigns overage","amountUsd":0.0023,"inputOrUnitUsd":0.0023,"unit":"usd_per_email","outputUsd":null,"outputUnit":null,"sourceUrl":"https://www.twilio.com/en-us/products/marketing-campaigns/pricing","asOf":"2026-10-03"},"estimatedTaskCost":{"tasks":1000,"retryAndToolOverheadMultiplier":1.15,"retryToolOverheadMultiplier":1.15,"unitsPerTask":1,"baseCostPer1kTasksUsd":0.0023,"totalUsd":0.0026,"estimatedTotalUsd":0.0026,"perTaskUsd":0.000003,"estimatedCostPerTaskUsd":0.000003,"formula":"$0.0023 (usd_per_email) * 1.15 overhead","assumptions":"1,000 tasks in job native unit with 1.15x retry overhead."},"reason":null,"priceWinnerNote":"Only 1 candidate has a matching USD per email; nothing was compared, so pickIsPriceWinner is null."},"pickIsNotPriceWinner":false,"freeResources":[],"freeMatch":"none"},{"jtbdId":"outbound-webhooks","decide":{"available":true,"unavailableReason":null,"providerId":"svix","scoreAsOf":"2026-09-14","scoreAgeDays":43,"scoreStale":true,"runnerUpId":"hookdeck","cite":"Depot Pick for outbound-webhooks: svix (asOf 2026-09-14). See GET /api/jtbds/outbound-webhooks + GET /api/methodology.","citePath":"/api/jtbds/outbound-webhooks"},"quote":{"available":true,"unavailableReason":null,"cheapest":{"providerId":"svix","slug":"svix","name":"Svix","skuId":"svix-additional-message","sku":"Additional messages","item":"Additional messages","plan":"Additional messages — Basic and Professional","isFloorPrice":false,"floorWarning":null,"skuKind":"webhook_message","unit":"usd_per_message","amountUsd":0.0001,"comparison":"min sourced usd_per_message among candidates; monthly plans were not ranked; per-100k messages and per-million events were not converted","usdPerMillionInputTokens":null,"sourceUrl":"https://www.svix.com/pricing","asOf":"2026-10-03"},"recommendedWorkloadQuote":{"providerId":"svix","providerName":"Svix","skuId":"svix-additional-message","item":"Additional messages","plan":"Additional messages — Basic and Professional","unit":"usd_per_message","amountUsd":0.0001,"outputSkuId":null,"outputItem":null,"outputAmountUsd":null,"outputUnit":null,"sourceUrl":"https://www.svix.com/pricing","asOf":"2026-10-03","pricingLastVerifiedAt":"2026-10-27","isFlagshipForJob":true,"differsFromFloorCheapest":false,"representativeQuote":{"skuId":"svix-additional-message","item":"Additional messages","plan":"Additional messages — Basic and Professional","amountUsd":0.0001,"inputOrUnitUsd":0.0001,"unit":"usd_per_message","outputUsd":null,"outputUnit":null,"sourceUrl":"https://www.svix.com/pricing","asOf":"2026-10-03"},"estimatedTaskCost":{"tasks":1000,"retryAndToolOverheadMultiplier":1.15,"retryToolOverheadMultiplier":1.15,"unitsPerTask":1,"baseCostPer1kTasksUsd":0.0001,"totalUsd":0.0001,"estimatedTotalUsd":0.0001,"perTaskUsd":0,"estimatedCostPerTaskUsd":0,"formula":"$0.0001 (usd_per_message) * 1.15 overhead","assumptions":"1,000 tasks in job native unit with 1.15x retry overhead."}},"representativeQuote":{"skuId":"svix-additional-message","item":"Additional messages","plan":"Additional messages — Basic and Professional","amountUsd":0.0001,"inputOrUnitUsd":0.0001,"unit":"usd_per_message","outputUsd":null,"outputUnit":null,"sourceUrl":"https://www.svix.com/pricing","asOf":"2026-10-03"},"estimatedTaskCost":{"tasks":1000,"retryAndToolOverheadMultiplier":1.15,"retryToolOverheadMultiplier":1.15,"unitsPerTask":1,"baseCostPer1kTasksUsd":0.0001,"totalUsd":0.0001,"estimatedTotalUsd":0.0001,"perTaskUsd":0,"estimatedCostPerTaskUsd":0,"formula":"$0.0001 (usd_per_message) * 1.15 overhead","assumptions":"1,000 tasks in job native unit with 1.15x retry overhead."},"reason":null,"priceWinnerNote":"Only 1 candidate has a matching USD per message; nothing was compared, so pickIsPriceWinner is null."},"pickIsNotPriceWinner":false,"freeResources":[],"freeMatch":"none"}],"failures":[{"id":"identity-confusion","name":"Identity confusion","detection":"Bind every tool call to a user or tenant id. Refuse the call if that id changed mid-task. For a public bot, the operator owns the words the bot shows."},{"id":"confirmation-skip","name":"Confirmation skip","detection":"Gate those tool names on an approval id recorded before the call. A missing approval is a failure even if the downstream tool returns success."},{"id":"runaway-spend","name":"Runaway spend","detection":"Set a budget and a tool-call cap per task. Alert when spend jumps. Stop the run at the cap instead of summarizing a partial trace as success."},{"id":"stale-retrieval","name":"Stale retrieval","detection":"Store the source URL and the time it was fetched. If a newer canonical page exists, or two stored sources disagree, do not answer from the older one."},{"id":"policy-conflict","name":"Policy conflict","detection":"If cited sources contradict each other, return the conflict and the URLs. Do not pick a winner silently."},{"id":"ungrounded-answer","name":"Ungrounded answer","detection":"Require a source URL or passage id on factual sentences. Drop or mark any sentence whose source does not contain the claim."},{"id":"prompt-injection","name":"Prompt injection","detection":"Compare each tool call to the original user task. If the call only makes sense given text that arrived from a fetched page, file, or message, stop and ask. Record which source the instruction came from. This catalog does not store payloads or attack steps."}],"failuresOmittedBecauseMissing":[],"caseStudies":[{"id":"ftc-verkada-can-spam-2024","title":"FTC press release: Verkada commercial email and the CAN-SPAM Act","sourceUrl":"https://www.ftc.gov/news-events/news/press-releases/2024/08/ftc-takes-action-against-security-camera-firm-verkada-over-charges-it-failed-secure-videos-other","year":2024,"studyKind":"regulatory_writeup"}],"caseStudiesRelated":1,"caseStudiesOmitted":0,"caseStudiesReason":null,"links":{"kit":"/api/kit?class=sales-outreach","page":"/agents/kit/sales-outreach","agentClass":"/api/agent-classes/sales-outreach","failures":"/api/failures","caseStudies":"/api/case-studies?class=sales-outreach"},"recommendation":{"mode":"default"},"stackContext":{"host":null,"framework":null,"repo":null,"lang":null,"existing":[],"volume":null,"sender":null,"detectedFromTask":[]},"contextAdvice":[],"firstActions":["https://getagentdepot.com/api/hub","https://getagentdepot.com/api/decide?jtbd=people-enrichment","https://getagentdepot.com/api/quote?jtbd=people-enrichment","https://getagentdepot.com/api/kit?class=sales-outreach","https://getagentdepot.com/api/failures"],"honesty":["Picks are the current Depot Pick from GET /api/decide. This kit does not rescore.","Cheapest SKU is copied from GET /api/quote for that job. Input and output are not blended. A chat SKU is not borrowed for a non-chat job. If quote.cheapest is null, there is no matching sourced price.","pickIsNotPriceWinner is true only when that job's Depot Pick and cheapest matching SKU both exist and the quote says the pick is not the price winner. If either is missing, the field is false.","freeResources are existing /api/free items whose jtbdIds include that job, up to 3, sorted by id. If none list the job, freeResources is [] and freeMatch is none. Kind, provider, and docs are not fallbacks. Free does not change the pick.","firstActions are endpoint URLs for this class: hub, decide for the first listed need, quote for that need, this kit, and /api/failures. No other step is added.","Failures are the modes already listed on the class. Case studies are the first 3 related studies in catalog order, with the source URL already stored. Omitted studies stay on GET /api/case-studies?class=."]}