{"@id":"https://artemisgtm.ai/resources/pipeline-debugging-scenarios/#the-unanswered-demo-request","id":"the-unanswered-demo-request","level":1,"title":"The unanswered demo request","leak":"slow-lead-response","symptom":"Demo requests reach the CRM within seconds of the form submit, but the first human reply often lands the next business day. Reps say they never saw the lead, and every tool in the chain shows green.","nodes":[{"broken":false,"id":"form","kind":"form","label":"Demo request form"},{"broken":false,"id":"enrich","kind":"enrichment","label":"Company enrichment"},{"broken":true,"id":"router","kind":"routing","label":"Round-robin router","note":"Assigns the lead to a shared queue, not a named rep, and starts no clock."},{"broken":false,"id":"crm","kind":"crm","label":"CRM lead record"},{"broken":true,"id":"alert","kind":"alert","label":"Hourly email digest","note":"Batches new leads into a digest sent to a shared inbox nobody owns."},{"broken":false,"id":"seq","kind":"sequence","label":"Follow-up sequence"}],"edges":[{"from":"form","to":"enrich"},{"from":"enrich","to":"router"},{"from":"router","to":"crm"},{"from":"crm","to":"alert"},{"from":"crm","to":"seq"}],"rootCause":{"text":"The router parks the lead in a shared queue with no named owner and no clock, and the only alert is a batched digest, so nobody is accountable for the first touch.","why":"A lead without an owner and a timer is everyone's and therefore no one's, which is exactly the gap between a fast CRM write and a slow human reply."},"fix":{"text":"Assign a named owner of record when the lead is created and start an SLA timer that escalates to a backup rep, then a manager, if no first touch is logged.","why":"Ownership makes one person accountable and the escalating timer catches the moment that person is busy, asleep or out.","fixPatterns":["https://artemisgtm.ai/resources/gtm-systems-patterns/#sla-timer-with-escalation","https://artemisgtm.ai/resources/gtm-systems-patterns/#owner-of-record-routing"]},"leakFormula":"leads per month x months per year x change in lead-to-opportunity rate from a faster first human response x win rate x ACV","scenarioInputs":{"acvUsd":25000,"leadsPerMonth":400,"mqlsPerMonth":20,"sdrs":2,"visitorsPerMonth":20000,"winRatePct":20,"note":"fictional scenario inputs, not measurements"},"guideUrl":"https://artemisgtm.ai/resources/speed-to-lead/","contributor":null,"publisher":"Artemis GTM","author":"Tom Regan","license":"https://creativecommons.org/licenses/by/4.0/","version":"2026.10","since":"2026.10","lastReviewed":"2026-10-18"}
{"@id":"https://artemisgtm.ai/resources/pipeline-debugging-scenarios/#the-invisible-visitor","id":"the-invisible-visitor","level":2,"title":"The invisible visitor","leak":"anonymous-website-traffic","symptom":"The pricing page is among the most visited pages on the site, yet almost none of those visits become a known account in the CRM. A visitor identification script was installed months ago, its dashboard shows company matches, and sales has stopped opening the alerts.","nodes":[{"broken":false,"id":"pricing","kind":"content","label":"Pricing page"},{"broken":true,"id":"script","kind":"visitor-id","label":"Visitor ID script","note":"Loads outside the consent manager, so it is blocked on many sessions and not permitted on others."},{"broken":false,"id":"match","kind":"enrichment","label":"Company match"},{"broken":true,"id":"trigger","kind":"scoring","label":"Single page-view trigger","note":"Any one matched page view fires an alert, with no fit, intent or repeat-visit check."},{"broken":false,"id":"alert","kind":"alert","label":"Sales alert"},{"broken":false,"id":"crm","kind":"crm","label":"CRM account"}],"edges":[{"from":"pricing","to":"script"},{"from":"script","to":"match"},{"from":"match","to":"trigger"},{"from":"trigger","to":"alert"},{"from":"alert","to":"crm"}],"rootCause":{"text":"The script runs outside the consent layer, so identification is blocked or not allowed on many sessions, and the matches it does make fire on a single page view, so sales learned the alerts are noise.","why":"Both halves are needed to explain the symptom: too few lawful matches going in, and too little signal on each match coming out."},"fix":{"text":"Load identification behind the consent manager with region rules, and alert only when a matched account stacks fit, a high-intent page and a repeat visit.","why":"Consent gating makes each match usable, and stacking signals means the alert a rep receives is worth acting on.","fixPatterns":["https://artemisgtm.ai/resources/gtm-systems-patterns/#consent-gated-identification","https://artemisgtm.ai/resources/gtm-systems-patterns/#signal-stacking"]},"leakFormula":"visitors per month x change in identification rate x share of identified accounts that fit the ICP x account-to-opportunity rate x win rate x ACV","scenarioInputs":{"acvUsd":25000,"leadsPerMonth":400,"mqlsPerMonth":20,"sdrs":2,"visitorsPerMonth":20000,"winRatePct":20,"note":"fictional scenario inputs, not measurements"},"guideUrl":"https://artemisgtm.ai/resources/how-visitor-identification-works/","contributor":null,"publisher":"Artemis GTM","author":"Tom Regan","license":"https://creativecommons.org/licenses/by/4.0/","version":"2026.10","since":"2026.10","lastReviewed":"2026-10-18"}
{"@id":"https://artemisgtm.ai/resources/pipeline-debugging-scenarios/#the-wrong-list","id":"the-wrong-list","level":3,"title":"The wrong list","leak":"weak-icp-targeting","symptom":"Outbound books first meetings, but most of them stall after the first call. The account list is every company in a few industries above a headcount line, scored once on fit, and the SDRs work it from the top.","nodes":[{"broken":false,"id":"won","kind":"crm","label":"Closed-won history","note":"Never read when the list was built."},{"broken":false,"id":"filter","kind":"enrichment","label":"Firmographic filter","note":"Industry and headcount only."},{"broken":true,"id":"score","kind":"scoring","label":"Fit-only account score","note":"Scores who an account is, never what is happening there now, so a company with no live problem scores the same as one with an open one."},{"broken":false,"id":"assign","kind":"routing","label":"SDR assignment"},{"broken":false,"id":"seq","kind":"sequence","label":"Outbound sequence"}],"edges":[{"from":"filter","to":"score"},{"from":"score","to":"assign"},{"from":"assign","to":"seq"},{"from":"seq","to":"won"}],"rootCause":{"text":"Accounts enter the list on fit alone, with no evidence of a current problem or a reason to act now, so meetings happen with companies that have nothing to buy for.","why":"Meetings that stall after the first call are the signature of a fit-only list: the account looks right and has no live pain."},"fix":{"text":"Require a stacked signal before an account enters the list: fit, plus at least one pain or timing signal such as a relevant hire, a new revenue leader or a stack change, checked against what closed-won accounts looked like before they bought.","why":"The fault is who enters the list, and stacking a pain signal on top of fit changes who enters; capacity bands were the other candidate and come second, because they only ration a list once its score means something.","fixPatterns":["https://artemisgtm.ai/resources/gtm-systems-patterns/#signal-stacking"]},"leakFormula":"SDR seats x meetings per SDR per month x months per year x change in meeting-to-opportunity rate x win rate x ACV","scenarioInputs":{"acvUsd":25000,"leadsPerMonth":400,"mqlsPerMonth":20,"sdrs":2,"visitorsPerMonth":20000,"winRatePct":20,"note":"fictional scenario inputs, not measurements"},"guideUrl":"https://artemisgtm.ai/resources/pain-first-icp-scoring/","contributor":null,"publisher":"Artemis GTM","author":"Tom Regan","license":"https://creativecommons.org/licenses/by/4.0/","version":"2026.10","since":"2026.10","lastReviewed":"2026-10-18"}
{"@id":"https://artemisgtm.ai/resources/pipeline-debugging-scenarios/#the-silent-sequence","id":"the-silent-sequence","level":4,"title":"The silent sequence","leak":"low-outbound-reply-rates","symptom":"Reply rates on the main outbound sequence have slid quarter over quarter. Many sends open with an empty personalization line or a generic fallback, and a share of them bounce.","nodes":[{"broken":false,"id":"list","kind":"crm","label":"Target account list"},{"broken":true,"id":"enrich","kind":"enrichment","label":"Single-source enrichment","note":"One provider, no fallback and no validity check, so blanks and stale emails pass straight through."},{"broken":false,"id":"template","kind":"content","label":"Opening line template"},{"broken":false,"id":"mailbox","kind":"routing","label":"Mailbox assignment"},{"broken":true,"id":"seq","kind":"sequence","label":"Outbound sequence","note":"Sends when a contact joins the list, with no hold for missing fields and no trigger beyond list membership."}],"edges":[{"from":"template","to":"seq"},{"from":"list","to":"enrich"},{"from":"enrich","to":"mailbox"},{"from":"mailbox","to":"seq"}],"rootCause":{"text":"A single enrichment source returns blanks and stale emails, and the sequence sends anyway on list membership alone, so many messages are generic, mistimed or undeliverable.","why":"Empty personalization lines and bounces trace to the data, and sending with no trigger explains why even the complete messages land at the wrong time."},"fix":{"text":"Run enrichment as an ordered waterfall with a fallback provider and a validity check per field, hold any contact missing a required field, and trigger the send on a stacked signal instead of list membership.","why":"The waterfall fills and verifies the fields the message depends on, and the stacked trigger sends the complete message at a moment it is relevant.","fixPatterns":["https://artemisgtm.ai/resources/gtm-systems-patterns/#enrichment-waterfall-with-fallback","https://artemisgtm.ai/resources/gtm-systems-patterns/#signal-stacking"]},"leakFormula":"SDR seats x emails sent per SDR per month x months per year x change in positive reply rate x meeting-to-opportunity rate x win rate x ACV","scenarioInputs":{"acvUsd":25000,"leadsPerMonth":400,"mqlsPerMonth":20,"sdrs":2,"visitorsPerMonth":20000,"winRatePct":20,"note":"fictional scenario inputs, not measurements"},"guideUrl":"https://artemisgtm.ai/resources/blog/signal-based-selling-intent-driven-pipeline/","contributor":null,"publisher":"Artemis GTM","author":"Tom Regan","license":"https://creativecommons.org/licenses/by/4.0/","version":"2026.10","since":"2026.10","lastReviewed":"2026-10-18"}
{"@id":"https://artemisgtm.ai/resources/pipeline-debugging-scenarios/#the-dropped-handoff","id":"the-dropped-handoff","level":5,"title":"The dropped handoff","leak":"leaky-mql-to-sql-handoff","symptom":"Marketing reports MQLs up; sales reports pipeline flat. In the CRM, a share of each month's MQLs have no activity at all, and many of the ones that were worked were rejected with no reason recorded.","nodes":[{"broken":false,"id":"form","kind":"form","label":"Content download form"},{"broken":true,"id":"score","kind":"scoring","label":"MQL threshold","note":"Set by marketing alone; sales never agreed what it means, so reps do not trust it."},{"broken":true,"id":"assign","kind":"routing","label":"Status change only","note":"The lead status flips to MQL but no owner changes and no task is created."},{"broken":false,"id":"crm","kind":"crm","label":"CRM lead status"},{"broken":false,"id":"seq","kind":"sequence","label":"SDR follow-up"},{"broken":false,"id":"recycle","kind":"nurture","label":"Recycle to nurture"}],"edges":[{"from":"form","to":"score"},{"from":"score","to":"assign"},{"from":"assign","to":"crm"},{"from":"crm","to":"seq"},{"from":"seq","to":"recycle"}],"rootCause":{"text":"There is no shared definition of a sales-ready lead, and crossing the threshold changes a status without assigning anyone, so some MQLs are never seen and others are rejected without a reason.","why":"Unworked MQLs come from the missing owner, and silent rejections come from a threshold sales never agreed to."},"fix":{"text":"Write one MQL definition that sales and marketing both sign, with accept and reject reason codes, and assign a named owner with a dated task whenever a lead crosses it.","why":"The shared definition makes the threshold mean the same thing to both teams, and the owner and task make every MQL someone's job.","fixPatterns":["https://artemisgtm.ai/resources/gtm-systems-patterns/#shared-handoff-definition","https://artemisgtm.ai/resources/gtm-systems-patterns/#owner-of-record-routing"]},"leakFormula":"MQLs never worked per month x months per year x MQL-to-opportunity rate x win rate x ACV","scenarioInputs":{"acvUsd":25000,"leadsPerMonth":400,"mqlsPerMonth":20,"sdrs":2,"visitorsPerMonth":20000,"winRatePct":20,"note":"fictional scenario inputs, not measurements"},"guideUrl":"https://artemisgtm.ai/resources/mql-to-sql-handoff/","contributor":null,"publisher":"Artemis GTM","author":"Tom Regan","license":"https://creativecommons.org/licenses/by/4.0/","version":"2026.10","since":"2026.10","lastReviewed":"2026-10-18"}
{"@id":"https://artemisgtm.ai/resources/pipeline-debugging-scenarios/#the-cold-middle","id":"the-cold-middle","level":6,"title":"The cold middle","leak":"thin-nurture","symptom":"A large group of contacts carry high lead scores but have not engaged in months. Reps get hot-lead alerts on them, call, and find the interest long gone, while recently active accounts with lower lifetime scores sit untouched.","nodes":[{"broken":false,"id":"content","kind":"content","label":"Webinars and downloads"},{"broken":true,"id":"score","kind":"scoring","label":"Lifetime lead score","note":"Points only ever add up; nothing expires, so a burst of activity long ago outranks interest this week."},{"broken":false,"id":"route","kind":"routing","label":"Score-based routing"},{"broken":false,"id":"alert","kind":"alert","label":"Hot lead alert"},{"broken":false,"id":"nurture","kind":"nurture","label":"Nurture track","note":"Contacts never re-enter it, because their scores never fall."}],"edges":[{"from":"content","to":"score"},{"from":"score","to":"route"},{"from":"route","to":"alert"},{"from":"score","to":"nurture"}],"rootCause":{"text":"The score only accumulates and never decays, so it measures how much a contact ever did, not how interested they are now.","why":"Stale contacts outranking active ones is exactly what a score with no decay produces over time."},"fix":{"text":"Decay engagement points on a half-life so the score reflects recent behavior, and move contacts whose score falls below the line back into a nurture track that re-scores them on fresh intent.","why":"Decay lets the score fall when interest does, which both clears stale alerts and gives nurture a clear entry and exit.","fixPatterns":["https://artemisgtm.ai/resources/gtm-systems-patterns/#score-decay"]},"leakFormula":"dormant ICP contacts x re-engagement-to-opportunity rate x win rate x ACV","scenarioInputs":{"acvUsd":25000,"leadsPerMonth":400,"mqlsPerMonth":20,"sdrs":2,"visitorsPerMonth":20000,"winRatePct":20,"note":"fictional scenario inputs, not measurements"},"guideUrl":"https://artemisgtm.ai/resources/lead-score-decay-explained/","contributor":null,"publisher":"Artemis GTM","author":"Tom Regan","license":"https://creativecommons.org/licenses/by/4.0/","version":"2026.10","since":"2026.10","lastReviewed":"2026-10-18"}
{"@id":"https://artemisgtm.ai/resources/pipeline-debugging-scenarios/#the-same-page-for-everyone","id":"the-same-page-for-everyone","level":7,"title":"The same page for everyone","leak":"undifferentiated-conversion-content","symptom":"Identified, in-market accounts from two very different segments land on the same pricing and demo pages, and one segment almost never books. The pages say what every competitor says, and the demo form asks everyone the same questions.","nodes":[{"broken":false,"id":"id","kind":"visitor-id","label":"Account identification"},{"broken":false,"id":"enrich","kind":"enrichment","label":"Segment and stack data","note":"Known, but never used by the page."},{"broken":true,"id":"page","kind":"content","label":"One pricing and proof page","note":"One proof block, one comparison and one next step for every segment."},{"broken":false,"id":"form","kind":"form","label":"Demo form"},{"broken":false,"id":"crm","kind":"crm","label":"CRM opportunity"}],"edges":[{"from":"page","to":"form"},{"from":"id","to":"enrich"},{"from":"form","to":"crm"}],"rootCause":{"text":"The decision-stage page answers one segment's questions and not the other's, and the signals that say which segment a buyer is in never reach the page.","why":"Identified, in-market buyers who still do not book are telling you the page did not answer their decision question."},"fix":{"text":"Stack the signals you already hold (segment, pages read, the alternative being evaluated) to choose which proof block, comparison and next step the page shows, and write a real answer for each segment's decision question.","why":"The stacked signals pick the right answer and the rewritten blocks make sure there is a right answer to pick.","fixPatterns":["https://artemisgtm.ai/resources/gtm-systems-patterns/#signal-stacking"]},"leakFormula":"identified in-market accounts per month x months per year x change in page-to-opportunity rate x win rate x ACV","scenarioInputs":{"acvUsd":25000,"leadsPerMonth":400,"mqlsPerMonth":20,"sdrs":2,"visitorsPerMonth":20000,"winRatePct":20,"note":"fictional scenario inputs, not measurements"},"guideUrl":"https://artemisgtm.ai/resources/the-7-revenue-leaks/","contributor":null,"publisher":"Artemis GTM","author":"Tom Regan","license":"https://creativecommons.org/licenses/by/4.0/","version":"2026.10","since":"2026.10","lastReviewed":"2026-10-18"}
{"@id":"https://artemisgtm.ai/resources/pipeline-debugging-scenarios/#the-forked-record","id":"the-forked-record","level":8,"title":"The forked record","leak":"cross-cutting","symptom":"One buyer submitted the demo form once and now exists as several leads in the CRM, each with a different owner, and two of them were enrolled in the same sequence. Reporting counts the demo request more than once.","nodes":[{"broken":false,"id":"webhook","kind":"form","label":"Demo form webhook","note":"Retries on any slow response."},{"broken":false,"id":"vid","kind":"visitor-id","label":"Visitor ID sync","note":"Writes the same person from a second source."},{"broken":false,"id":"enrich","kind":"enrichment","label":"Enrichment write-back"},{"broken":true,"id":"create","kind":"crm","label":"Lead create step","note":"Inserts a new record on every event, with no idempotency key and no match on an existing record."},{"broken":false,"id":"rr","kind":"routing","label":"Round-robin assignment"},{"broken":false,"id":"seq","kind":"sequence","label":"Inbound sequence"}],"edges":[{"from":"webhook","to":"create"},{"from":"vid","to":"create"},{"from":"enrich","to":"create"},{"from":"create","to":"rr"},{"from":"create","to":"seq"}],"rootCause":{"text":"The create step inserts on every event it receives, so webhook retries and the second source each create a new lead instead of updating the one that exists.","why":"Several records with different owners from one submission is the signature of a non-idempotent write."},"fix":{"text":"Give every inbound event a stable idempotency key, such as source plus event id, upsert on that key and on a normalized match to the existing person, and make retries no-ops.","why":"An idempotent write means the same event can arrive any number of times and still produce one record and one owner.","fixPatterns":["https://artemisgtm.ai/resources/gtm-systems-patterns/#idempotent-event-ingestion"]},"leakFormula":"duplicate records per month x months per year x share that cause a missed or doubled first touch x lead-to-opportunity rate x win rate x ACV","scenarioInputs":{"acvUsd":25000,"leadsPerMonth":400,"mqlsPerMonth":20,"sdrs":2,"visitorsPerMonth":20000,"winRatePct":20,"note":"fictional scenario inputs, not measurements"},"guideUrl":"https://artemisgtm.ai/resources/crm-data-quality/","contributor":null,"publisher":"Artemis GTM","author":"Tom Regan","license":"https://creativecommons.org/licenses/by/4.0/","version":"2026.10","since":"2026.10","lastReviewed":"2026-10-18"}
{"@id":"https://artemisgtm.ai/resources/pipeline-debugging-scenarios/#the-alert-nobody-owns","id":"the-alert-nobody-owns","level":9,"title":"The alert nobody owns","leak":"cross-cutting","symptom":"The hot-lead channel posts dozens of alerts a day, many of them repeats for the same account, and the reps have muted it. When leadership asks how fast hot leads are worked, nobody can answer, because the CRM only stores when each lead was created.","nodes":[{"broken":false,"id":"signal","kind":"visitor-id","label":"Visitor signal"},{"broken":false,"id":"score","kind":"scoring","label":"Hot score"},{"broken":false,"id":"owner","kind":"routing","label":"Owner lookup","note":"Knows the owner but the alert ignores it."},{"broken":true,"id":"alert","kind":"alert","label":"Channel alert","note":"Fires on every qualifying event to a shared channel, with no dedup, no named owner and no clock."},{"broken":true,"id":"crm","kind":"crm","label":"CRM lead record","note":"Stores created time only; no alerted, claimed or first-touch time."}],"edges":[{"from":"signal","to":"score"},{"from":"score","to":"owner"},{"from":"owner","to":"alert"},{"from":"alert","to":"crm"}],"rootCause":{"text":"Repeat events each fire their own alert into a shared channel with no owner and no timer, and nothing writes back when an alert was claimed or worked, so the channel is noise and the response time is unmeasurable.","why":"Muted reps come from noise and no owner, and the unanswerable question comes from timestamps that were never written."},"fix":{"text":"Collapse repeat alerts for the same account inside a dedup window, address each alert to the owner of record with an SLA timer that escalates when unclaimed, and write four timestamps back to the record: created, alerted, claimed and first touch.","why":"Dedup restores trust in the channel, the timer makes each alert someone's job, and the timestamps make speed measurable.","fixPatterns":["https://artemisgtm.ai/resources/gtm-systems-patterns/#alert-dedup-window","https://artemisgtm.ai/resources/gtm-systems-patterns/#sla-timer-with-escalation","https://artemisgtm.ai/resources/gtm-systems-patterns/#four-timestamp-write-back"]},"leakFormula":"hot leads per month x months per year x change in lead-to-opportunity rate from a faster claimed response x win rate x ACV","scenarioInputs":{"acvUsd":25000,"leadsPerMonth":400,"mqlsPerMonth":20,"sdrs":2,"visitorsPerMonth":20000,"winRatePct":20,"note":"fictional scenario inputs, not measurements"},"guideUrl":"https://artemisgtm.ai/resources/slack-sms-lead-alerts/","contributor":null,"publisher":"Artemis GTM","author":"Tom Regan","license":"https://creativecommons.org/licenses/by/4.0/","version":"2026.10","since":"2026.10","lastReviewed":"2026-10-18"}
{"@id":"https://artemisgtm.ai/resources/pipeline-debugging-scenarios/#the-sequence-that-emailed-a-customer","id":"the-sequence-that-emailed-a-customer","level":10,"title":"The sequence that emailed a customer","leak":"cross-cutting","symptom":"A cold outbound sequence emailed the champion at a current customer, and another step went to a contact at an open opportunity owned by a different rep. The list came from a signal tool and went straight into the sequencer.","nodes":[{"broken":false,"id":"export","kind":"enrichment","label":"Signal tool list export"},{"broken":true,"id":"suppress","kind":"suppression","label":"Unsubscribe check","note":"Checks the unsubscribe list only, once, at import."},{"broken":false,"id":"sender","kind":"routing","label":"Sender assignment"},{"broken":false,"id":"crm","kind":"crm","label":"Customers and open deals","note":"Holds the truth about who must not get cold outreach, but is never consulted at send time."},{"broken":false,"id":"seq","kind":"sequence","label":"Cold outbound sequence"}],"edges":[{"from":"export","to":"suppress"},{"from":"suppress","to":"sender"},{"from":"sender","to":"seq"}],"rootCause":{"text":"Suppression checks only unsubscribes, once, at import, and never checks the CRM for customers, open opportunities or other owners at send time.","why":"Both bad sends were to people the CRM knew about, which means the one place that knew was never asked."},"fix":{"text":"Put a suppression ring in front of every send: current customers, open opportunities, contacts owned by another rep, partners, unsubscribes and do-not-contact flags, checked live against the CRM at enrollment and again before each step.","why":"A ring checked at enrollment and before each step catches both the contact who was a customer at import and the one who became an opportunity mid-sequence.","fixPatterns":["https://artemisgtm.ai/resources/gtm-systems-patterns/#suppression-ring"]},"leakFormula":"wrongly enrolled contacts per month x months per year x share that damage an open deal or a renewal x win rate x ACV","scenarioInputs":{"acvUsd":25000,"leadsPerMonth":400,"mqlsPerMonth":20,"sdrs":2,"visitorsPerMonth":20000,"winRatePct":20,"note":"fictional scenario inputs, not measurements"},"guideUrl":"https://artemisgtm.ai/resources/deanonymized-visitor-outreach-automation/","contributor":null,"publisher":"Artemis GTM","author":"Tom Regan","license":"https://creativecommons.org/licenses/by/4.0/","version":"2026.10","since":"2026.10","lastReviewed":"2026-10-18"}
