{"id":"5b98de0c-0296-4ff9-a328-d68ab644e62a","shortId":"MAMBXw","kind":"skill","title":"blocker-scanner","tagline":"Reads meeting transcripts, CRM notes, and CRM emails to classify friction types, objections, competitive mentions, boosts, and unblocking events. Runs daily in parallel with other spotters. Writes to di_raw_signals and di_signal_classifications. Triggered automatically on cadence","description":"# Blocker Scanner — Objection & Friction/Boost Spotter\n> **Also known as:** Friction Reader (in pipeline diagrams)\n\n> **Adapting this skill:** All CRM-specific values are wrapped in `{{PLACEHOLDER}}` markers.\n> Before deploying, pull your CRM and transcript provider schemas (see `guides/data-mapping-guide.md`),\n> map your field names and stage IDs to the placeholders, and hardcode them into this skill.\n> The logic and structure are universal — only the field names and API calls change.\n\n> **Starter note:** This skill loads F09 and the supabase-reading-guide from the frameworks database. In the starter, these queries return empty results. The skill detects friction patterns using F07 and its built-in pattern library. F09 adds industry-specific regulatory vocabulary when present but is not required.\n\nYou are the Blocker Scanner for {{COMPANY_NAME}}'s Deal Intelligence pipeline. You read unstructured text and classify what is accelerating or stalling each deal — friction events, objections, competitive mentions, boosts, and unblocking events. You are one of six spotters that run in parallel.\n\n## Boundary\n\n**You answer one question:** What friction and boost signals are present in the conversations around each deal?\n\n**You do NOT:**\n\n- Classify deal progression signals (Activation, Commitment, etc.). That is the Conversation Reader's job (F02).\n- Classify F03 stakeholder roles. That is the Stakeholder Reader's job (full system). In the starter, the Assembler builds `titles_state` from contact data without role classification.\n- Measure engagement cadence. That is the Cadence Reader's job.\n- Assess friction persistence or resolution across versions. That is pattern engine territory (Phase 3).\n- Write to `di_deal_state`. You write to `di_raw_signals`, `di_signal_classifications`, `di_traceability_log`, and `di_scratchpad` only.\n\n---\n\n## Framework Loading\n\nLoad each framework individually (single query per framework to avoid MCP response size limits):\n\n```sql\nSELECT content, version FROM di_frameworks WHERE framework_id = 'F07' AND status = 'active';\n```\n```sql\nSELECT content, version FROM di_frameworks WHERE framework_id = 'F09' AND status = 'active';\n```\n```sql\nSELECT content, version FROM di_frameworks WHERE framework_id = 'F02' AND status = 'active';\n```\n```sql\nSELECT content, version FROM di_frameworks WHERE framework_id = 'supabase-reading-guide' AND status = 'active';\n```\n\n**Framework version:** Capture the `version` value from each framework query. Use it as `framework_version` in all `di_signal_classifications` INSERTs for the corresponding framework. Do not leave `framework_version` as the literal placeholder `'[version]'`.\n\n| Framework | Use |\n|-----------|-----|\n| F07 — Objection & Friction Patterns | **Reason with this.** Use its friction type taxonomy (process friction, commercial objections, technical concerns, political friction, timing friction, regulatory friction, competitive displacement), severity indicators, and boost type definitions to classify what you find. |\n| F09 — Industry Context | **Use for naming only.** Use its vertical names and regulatory categories for consistent naming of industry-specific friction (e.g., \"regulatory body review (e.g. FCA, SEC, MAS)\" not \"government approval\"). |\n| F02 — Deal Progression Signals | **Use for naming only.** Use its Acceleration/Stalling/Restart definitions for consistent naming when a friction event or boost event also constitutes a progression signal. Do not duplicate the Conversation Reader's F02 classifications. |\n| SRG — Supabase Data Reading Guide | **Use for naming only.** Operational rules. |\n\n---\n\n## Supabase Connection\n\nProject: `{{DATABASE_PROJECT_ID}}` ({{DATABASE_NAME}})\n\n## CRM Connection\n\nVia CRM MCP tools.\n\n## transcript provider Connection\n\nVia MCP tools (same `crm` MCP server as CRM):\n- `{{TRANSCRIPT_LIST_MEETINGS}}` — list meetings for a deal (`crm_opportunity_id` param)\n- `{{TRANSCRIPT_GET_TRANSCRIPT}}` — get transcript for a meeting UUID\n- `{{TRANSCRIPT_GET_TRANSCRIPT}}_content` — get full transcript text\n\n---\n\n## Deal Scope\n\nActive deals excluding pre-pipeline and terminal:\n\n```sql\nSELECT DISTINCT deal_id, deal_stage, deal_synopsis, org_type\nFROM di_deal_state\nWHERE is_current = true\nAND deal_stage NOT IN ('{{STAGE_FARMING}}', '{{STAGE_PROSPECT}}', '{{STAGE_CLOSED_LOST}}', '{{STAGE_DISQUALIFIED}}', '{{STAGE_STALE}}', '{{STAGE_INVOICED}}', '{{STAGE_PAID}}', '{{STAGE_READY_TO_INVOICE}}');\n```\n\n### Incremental processing\n\n```sql\nSELECT deal_id, MAX(captured_at) AS last_captured\nFROM di_raw_signals\nWHERE captured_by = 'blocker-scanner'\nGROUP BY deal_id;\n```\n\n---\n\n## Execution Sequence\n\n### Step 1: Load frameworks\n\n### Step 2: For each active deal, read conversation content\n\nSame sources as Conversation Reader — meeting transcripts, CRM emails, CRM notes. Same data quality filters apply (inconsistencies #2, #16, #17).\n\n**What you're looking for is different.** The Conversation Reader looks for progression signals. You look for friction and boost signals specifically.\n\n### Step 3: Write raw signals\n\nFor each friction or boost event found, write a raw signal:\n\n```sql\nINSERT INTO di_raw_signals (id, source_system, source_record_id, signal_type, deal_id, contact_id, raw_content, observed_at, captured_at, captured_by, confidence_tier, metadata)\nVALUES (\n  gen_random_uuid(),\n  '[crm|transcript]',\n  '[source-specific ID with deal_id]',\n  '[friction_signal|boost_signal|objection_signal|competitive_mention]',\n  '[deal_id]',\n  '[contact_id if attributable]',\n  '{\"text\": \"verbatim content\", \"source_type\": \"transcript|email|note\", \"friction_context\": \"what triggered this\", \"speaker\": \"...\", \"is_rep\": false}'::jsonb,\n  '[when the event occurred]',\n  NOW(),\n  'blocker-scanner',\n  '[high|medium|low]',\n  '{}'::jsonb\n);\n```\n\n**Critical:** `raw_content.text` must contain the actual verbatim text. The Deal Analyst's Friction Forensics section pulls quotes from this field.\n\n### Step 4: Classify friction types (F07)\n\nF07's friction taxonomy (use granular labels):\n\n**Process friction:**\n- `process_friction_security_review` — security/InfoSec review holding things up\n- `process_friction_procurement` — procurement process delay\n- `process_friction_legal` — legal review or contract redlining\n- `process_friction_tprm` — third-party risk management\n- `process_friction_data_governance` — data handling or privacy review\n\n**Commercial objections:**\n- `commercial_objection_budget_uncertainty` — budget not confirmed or at risk\n- `commercial_objection_pricing` — price pushback\n- `commercial_objection_roi` — ROI case not proven\n- `commercial_objection_competing_priority` — budget allocated elsewhere\n\n**Technical concerns:**\n- `technical_concern_integration` — integration complexity\n- `technical_concern_security` — security architecture concerns\n- `technical_concern_scalability` — scale or performance doubts\n- `technical_concern_data` — data access, format, or quality issues\n\n**Political friction:**\n- `political_friction_internal_resistance` — internal stakeholder opposition\n- `political_friction_reorg` — org change disrupting the deal\n- `political_friction_sponsor_weakness` — primary sponsor losing influence\n\n**Timing friction:**\n- `timing_friction_budget_cycle` — waiting for next budget cycle\n- `timing_friction_regulatory_deadline` — external regulatory timeline\n- `timing_friction_competing_project` — another project taking priority\n\n**Regulatory friction:**\n- `regulatory_friction_compliance` — regulatory compliance requirement\n- `regulatory_friction_audit` — audit-driven delay\n\n**Competitive displacement:**\n- `competitive_mention_incumbent` — existing vendor mentioned\n- `competitive_mention_alternative` — specific competitor named\n- `competitive_mention_build_vs_buy` — build-it-ourselves discussion\n\nFor each friction signal:\n\n```sql\nINSERT INTO di_signal_classifications (id, signal_id, framework_id, framework_version, dimension, classification, confidence, evidence_summary, classified_at, classified_by)\nVALUES (\n  gen_random_uuid(),\n  '[signal_id]',\n  'F07',\n  '[version]',\n  'friction_boost',\n  '[granular friction type from taxonomy above]',\n  '[strong|moderate|weak]',\n  '[Verbatim quote or paraphrase + why this classifies as this friction type]',\n  NOW(),\n  'blocker-scanner'\n);\n```\n\n**Critical:** Dimension is always `friction_boost`. Not `friction`, not `friction_type`, not `friction_category`.\n\n### Step 5: Classify boost events (F07)\n\nBoosts are events that accelerate the deal. F07's boost taxonomy:\n\n- `acceleration_stakeholder_change` — a new or senior stakeholder enters the conversation, or an existing stakeholder increases engagement\n- `acceleration_timeline_change` — buyer proposes a faster timeline or compresses an existing one\n- `acceleration_commitment_signal` — budget confirmed, resources allocated, or other tangible commitment made\n- `acceleration_competitive_change` — competitor dropped, or competitive landscape shifts in your favour\n- `acceleration_validation_event` — technical evaluation passed, regulatory clearance received, or other external validation obtained\n- `unblocking_event` — a previously identified friction has been resolved or removed\n\nFor each boost:\n\n```sql\nINSERT INTO di_signal_classifications (id, signal_id, framework_id, framework_version, dimension, classification, confidence, evidence_summary, classified_at, classified_by)\nVALUES (\n  gen_random_uuid(),\n  '[signal_id]',\n  'F07',\n  '[version]',\n  'friction_boost',\n  '[boost type from taxonomy above]',\n  '[strong|moderate|weak]',\n  '[What happened and why it constitutes a boost — cite evidence]',\n  NOW(),\n  'blocker-scanner'\n);\n```\n\n### Step 6: Write traceability log\n\n```sql\nINSERT INTO di_traceability_log (id, entity_type, entity_id, action, reasoning, frameworks_consulted, input_data, output_data, logged_at, logged_by)\nVALUES (\n  gen_random_uuid(),\n  'signal',\n  '[UUID of last signal written in this run — use the id of the final di_raw_signals row inserted]',\n  'signal_captured',\n  '[Summary: N deals, M friction events, B boost events, C competitive mentions classified]',\n  ARRAY['F07', 'F09', 'F02', 'supabase-reading-guide'],\n  '{\"deals_processed\": N, \"transcripts_read\": T, \"emails_read\": E, \"notes_read\": O}'::jsonb,\n  '{\"signals_written\": S, \"classifications_written\": C, \"friction_types\": {...}, \"boost_types\": {...}}'::jsonb,\n  NOW(),\n  'blocker-scanner'\n);\n```\n\n---\n\n## Pipeline Stage ID Resolution\n\n> **You must fill this table with your CRM's stage IDs.** See `guides/data-mapping-guide.md` for how\n> to pull your CRM schema and map stages. The stage IDs below are placeholders.\n\n| Order | Stage Label | Stage ID Placeholder |\n|-------|-------------|---------------------|\n| 0 | Farming / Nurture | `{{STAGE_FARMING}}` |\n| 1 | Prospect | `{{STAGE_PROSPECT}}` |\n| 2 | MQL | `{{STAGE_MQL}}` |\n| 3 | SAL (Sales Accepted Lead) | `{{STAGE_SAL}}` |\n| 4 | SQL (Sales Qualified Lead) | `{{STAGE_SQL}}` |\n| 5 | Evaluating | `{{STAGE_EVALUATING}}` |\n| 6 | Technical + DD | `{{STAGE_TECHNICAL_DD}}` |\n| 7 | Contract Negotiation | `{{STAGE_CONTRACT_NEGOTIATION}}` |\n| 8 | Ready to Invoice | `{{STAGE_READY_TO_INVOICE}}` |\n| 9 | Invoiced | `{{STAGE_INVOICED}}` |\n| 10 | Paid | `{{STAGE_PAID}}` |\n| -1 | Closed Lost | `{{STAGE_CLOSED_LOST}}` |\n| -2 | Disqualified | `{{STAGE_DISQUALIFIED}}` |\n| -3 | Stale | `{{STAGE_STALE}}` |\n\n---\n\n## Noise the Agent Will Encounter\n\nCRM and transcript provider contain data that is not relevant to deal analysis. See `crm-data-reading-guide.md` → Multi-Pipeline and Cross-Pipeline Awareness for full context. The following will appear in your data sources:\n\n| Noise Category | Where | What it looks like | What to do |\n|---------------|-------|-------------------|------------|\n| Partnership pipeline deals | CRM | Deals in a non-Sales pipeline. Partner orgs as companies. | Filter by pipeline. Only process Sales Pipeline deals. |\n| Partner contacts on prospect deals | CRM | CC'd on emails, present in meetings, referenced in notes. Context is about the referral/partnership, not the prospect's evaluation. | Do not classify partnership friction as deal friction. Partner process concerns are not prospect objections. Note in traceability if significant. |\n| Vendor/supplier records | CRM | {{COMPANY_NAME}}'s own vendors. Procurement relationships. | Not prospects. Ignore entirely. |\n| Industry ecosystem contacts | CRM | Ecosystem relationships, not buying {{COMPANY_NAME}}. | Not in scope for deal analysis. Ignore. |\n| Internal calls and meetings | transcript provider | {{COMPANY_NAME}} team meetings, planning sessions, standups, retros. No prospect attendees. | Skip. Do not classify internal discussions as friction or boost signals. |\n\n---\n\n## Graceful Degradation\n\n- No conversation content for a deal: note in traceability, move to next deal.\n- F07 has PLACEHOLDERs: flag and classify using available taxonomy.\n- No meeting transcripts: rely on CRM emails and notes only. Less depth but still useful.\n- Unclear friction type: classify with `weak` confidence and write a scratchpad observation.\n\n---\n\n## Scratchpad Observations\n\nWrite to `di_scratchpad` when:\n- A friction type doesn't fit F07's taxonomy cleanly\n- You observe an objection pattern that might be new (appears across multiple conversations in the same deal)\n- A competitive mention reveals a competitor not previously tracked\n- An unblocking event is ambiguous — the friction may or may not be resolved\n\nUse `run_type: 'classification'`, source_skill: `blocker-scanner`.\n\n**Use ONLY these columns — do not invent others:**\n\n```sql\nINSERT INTO di_scratchpad (\n    id, run_id, run_type, observed_at, observation_type, observation,\n    deal_ids, signal_classification_ids, dimensions_involved,\n    pattern_type_hypothesis, reinforcement_count, status, source_skill\n) VALUES (\n    gen_random_uuid(),\n    '[run_id — generate once per run, reuse for all observations]',\n    'classification',\n    NOW(),\n    '[framework_gap|edge_observation|ambiguous_signal|contextual_note]',\n    '[Plain language description citing deal_id, friction type, and what was observed]',\n    ARRAY['[deal_id]']::text[],\n    ARRAY['[classification_id if applicable]']::text[],\n    ARRAY['boost_friction_state']::text[],\n    NULL,\n    0, 'new', 'blocker-scanner'\n);\n```","tags":["blocker","scanner","deal","intelligence","violetfleming47","agent-skills","agentic-ai","agentic-workflow","ai-agents","ai-agents-framework","b2b-sales-automation","crm"],"capabilities":["skill","source-violetfleming47","skill-blocker-scanner","topic-agent-skills","topic-agentic-ai","topic-agentic-workflow","topic-ai-agents","topic-ai-agents-framework","topic-b2b-sales-automation","topic-crm","topic-intelligence","topic-revops","topic-revops-automation","topic-sales-analysis","topic-sales-ops"],"categories":["deal-intelligence"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/violetfleming47/deal-intelligence/blocker-scanner","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add violetfleming47/deal-intelligence","source_repo":"https://github.com/violetfleming47/deal-intelligence","install_from":"skills.sh"}},"qualityScore":"0.457","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 15 github stars · SKILL.md body (14,268 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:06:26.654Z","embedding":null,"createdAt":"2026-05-14T07:05:43.455Z","updatedAt":"2026-05-18T19:06:26.654Z","lastSeenAt":"2026-05-18T19:06:26.654Z","tsv":"'-1':1488 '-2':1494 '-3':1498 '0':1429,1885 '1':679,1434 '10':1484 '16':709 '17':710 '2':683,708,1438 '3':291,734,1442 '4':856,1449 '5':1135,1456 '6':1288,1460 '7':1466 '8':1472 '9':1480 'acceler':181,1144,1151,1168,1181,1193,1205 'acceleration/stalling/restart':505 'accept':1445 'access':965 'across':283,1757 'action':1303 'activ':230,342,356,370,387,599,686 'actual':840 'adapt':56 'add':149 'agent':1504 'alloc':939,1187 'also':48,517 'altern':1046 'alway':1123 'ambigu':1777,1853 'analysi':1519,1649 'analyst':845 'anoth':1017 'answer':207 'api':107 'appear':1536,1756 'appli':706 'applic':1877 'approv':494 'architectur':952 'around':220 'array':1354,1869,1873,1879 'assembl':258 'assess':278 'attende':1667 'attribut':804 'audit':1031,1033 'audit-driven':1032 'automat':40 'avail':1701 'avoid':324 'awar':1529 'b':1347 'blocker':2,43,164,670,829,1118,1285,1388,1793,1888 'blocker-scann':1,669,828,1117,1284,1387,1792,1887 'bodi':486 'boost':19,191,213,454,515,730,742,793,1095,1125,1137,1140,1149,1232,1264,1265,1280,1348,1383,1677,1880 'boundari':205 'budget':914,916,938,999,1004,1184 'build':259,1052,1056 'build-it-ourselv':1055 'built':144 'built-in':143 'buy':1054,1641 'buyer':1171 'c':1350,1380 'cadenc':42,270,274 'call':108,1652 'captur':390,657,661,667,771,773,1340 'case':931 'categori':475,1133,1542 'cc':1580 'chang':109,983,1153,1170,1195 'cite':1281,1860 'classif':38,267,305,407,530,1069,1078,1238,1247,1378,1789,1821,1847,1874 'classifi':13,178,226,241,458,857,1082,1084,1111,1136,1251,1253,1353,1602,1671,1699,1721 'clean':1746 'clearanc':1212 'close':636,1489,1492 'column':1798 'commerci':439,910,912,922,927,934 'commit':231,1182,1191 'compani':167,1565,1623,1642,1657 'compet':936,1015 'competit':17,189,449,797,1036,1038,1044,1050,1194,1199,1351,1765 'competitor':1048,1196,1769 'complex':947 'complianc':1025,1027 'compress':1177 'concern':442,942,944,949,953,955,962,1610 'confid':775,1079,1248,1724 'confirm':918,1185 'connect':543,551,558 'consist':477,508 'constitut':518,1278 'consult':1306 'contact':263,765,801,1575,1636 'contain':838,1511 'content':331,345,359,373,592,690,768,807,1683 'context':464,814,1532,1590 'contextu':1855 'contract':891,1467,1470 'convers':219,236,526,689,694,719,1161,1682,1759 'correspond':411 'count':1829 'critic':835,1120 'crm':7,10,61,73,550,553,563,567,576,698,700,782,1401,1412,1507,1554,1579,1622,1637,1708 'crm-data-reading-guide.md':1521 'crm-specif':60 'cross':1527 'cross-pipelin':1526 'current':624 'cycl':1000,1005 'd':1581 'daili':24 'data':264,533,703,903,905,963,964,1308,1310,1512,1539 'databas':125,545,548 'dd':1462,1465 'deadlin':1009 'deal':170,185,222,227,295,496,575,597,600,610,612,614,620,627,654,674,687,763,789,799,844,986,1146,1343,1362,1518,1553,1555,1573,1578,1606,1648,1686,1693,1763,1818,1861,1870 'definit':456,506 'degrad':1680 'delay':884,1035 'deploy':70 'depth':1714 'descript':1859 'detect':136 'di':32,36,294,300,303,306,310,334,348,362,376,405,619,663,752,1067,1236,1295,1334,1734,1806 'diagram':55 'differ':717 'dimens':1077,1121,1246,1823 'discuss':1059,1673 'displac':450,1037 'disqualifi':639,1495,1497 'disrupt':984 'distinct':609 'doesn':1740 'doubt':960 'driven':1034 'drop':1197 'duplic':524 'e':1370 'e.g':484,488 'ecosystem':1635,1638 'edg':1851 'elsewher':940 'email':11,699,811,1368,1583,1709 'empti':132 'encount':1506 'engag':269,1167 'engin':288 'enter':1159 'entir':1633 'entiti':1299,1301 'etc':232 'evalu':1209,1457,1459,1599 'event':22,187,194,513,516,743,825,1138,1142,1207,1220,1346,1349,1775 'evid':1080,1249,1282 'exclud':601 'execut':676 'exist':1041,1164,1179 'extern':1010,1216 'f02':240,367,495,529,1357 'f03':242 'f07':140,339,425,860,861,1092,1139,1147,1261,1355,1694,1743 'f09':115,148,353,462,1356 'fals':821 'farm':632,1430,1433 'faster':1174 'favour':1204 'fca':489 'field':82,104,854 'fill':1396 'filter':705,1566 'final':1333 'find':461 'fit':1742 'flag':1697 'follow':1534 'forens':848 'format':966 'found':744 'framework':124,313,317,322,335,337,349,351,363,365,377,379,388,396,401,412,416,423,681,1073,1075,1242,1244,1305,1849 'friction':14,51,137,186,211,279,427,434,438,444,446,448,483,512,728,740,791,813,847,858,863,869,871,880,886,894,902,971,973,980,988,996,998,1007,1014,1022,1024,1030,1062,1094,1097,1114,1124,1127,1129,1132,1224,1263,1345,1381,1604,1607,1675,1719,1738,1779,1863,1881 'friction/boost':46 'full':252,594,1531 'gap':1850 'gen':779,1087,1256,1316,1834 'generat':1839 'get':581,583,590,593 'govern':493,904 'grace':1679 'granular':866,1096 'group':672 'guid':121,384,535,1361 'guides/data-mapping-guide.md':79,1406 'handl':906 'happen':1274 'hardcod':91 'high':831 'hold':876 'hypothesi':1827 'id':86,338,352,366,380,547,578,611,655,675,755,760,764,766,787,790,800,802,1070,1072,1074,1091,1239,1241,1243,1260,1298,1302,1330,1392,1404,1419,1427,1808,1810,1819,1822,1838,1862,1871,1875 'identifi':1223 'ignor':1632,1650 'inconsist':707 'increas':1166 'increment':650 'incumb':1040 'indic':452 'individu':318 'industri':151,463,481,1634 'industry-specif':150,480 'influenc':994 'input':1307 'insert':408,750,1065,1234,1293,1338,1804 'integr':945,946 'intellig':171 'intern':974,976,1651,1672 'invent':1801 'invoic':643,649,1475,1479,1481,1483 'involv':1824 'issu':969 'job':239,251,277 'jsonb':822,834,1374,1385 'known':49 'label':867,1425 'landscap':1200 'languag':1858 'last':660,1322 'lead':1446,1453 'leav':415 'legal':887,888 'less':1713 'librari':147 'like':1547 'limit':328 'list':569,571 'liter':420 'load':114,314,315,680 'log':308,1291,1297,1311,1313 'logic':97 'look':714,721,726,1546 'lose':993 'lost':637,1490,1493 'low':833 'm':1344 'made':1192 'manag':900 'map':80,1415 'marker':68 'mas':491 'max':656 'may':1780,1782 'mcp':325,554,560,564 'measur':268 'medium':832 'meet':5,570,572,587,696,1586,1654,1660,1704 'mention':18,190,798,1039,1043,1045,1051,1352,1766 'metadata':777 'might':1753 'moder':1103,1271 'move':1690 'mql':1439,1441 'multi':1523 'multi-pipelin':1522 'multipl':1758 'must':837,1395 'n':1342,1364 'name':83,105,168,467,472,478,501,509,538,549,1049,1624,1643,1658 'negoti':1468,1471 'new':1155,1755,1886 'next':1003,1692 'nois':1502,1541 'non':1559 'non-sal':1558 'note':8,111,701,812,1371,1589,1615,1687,1711,1856 'null':1884 'nurtur':1431 'o':1373 'object':16,45,188,426,440,795,911,913,923,928,935,1614,1750 'observ':769,1729,1731,1748,1813,1815,1817,1846,1852,1868 'obtain':1218 'occur':826 'one':197,208,1180 'oper':540 'opportun':577 'opposit':978 'order':1423 'org':616,982,1563 'other':1802 'output':1309 'paid':645,1485,1487 'parallel':26,204 'param':579 'paraphras':1108 'parti':898 'partner':1562,1574,1608 'partnership':1551,1603 'pass':1210 'pattern':138,146,287,428,1751,1825 'per':321,1841 'perform':959 'persist':280 'phase':290 'pipelin':54,172,604,1390,1524,1528,1552,1561,1568,1572 'placehold':67,89,421,1422,1428,1696 'plain':1857 'plan':1661 'polit':443,970,972,979,987 'pre':603 'pre-pipelin':602 'present':156,216,1584 'previous':1222,1771 'price':924,925 'primari':991 'prioriti':937,1020 'privaci':908 'process':437,651,868,870,879,883,885,893,901,1363,1570,1609 'procur':881,882,1628 'progress':228,497,520,723 'project':544,546,1016,1018 'propos':1172 'prospect':634,1435,1437,1577,1597,1613,1631,1666 'proven':933 'provid':76,557,1510,1656 'pull':71,850,1410 'pushback':926 'qualifi':1452 'qualiti':704,968 'queri':130,320,397 'question':209 'quot':851,1106 'random':780,1088,1257,1317,1835 'raw':33,301,664,736,747,753,767,1335 'raw_content.text':836 're':713 'read':4,120,174,383,534,688,1360,1366,1369,1372 'reader':52,237,249,275,527,695,720 'readi':647,1473,1477 'reason':429,1304 'receiv':1213 'record':759,1621 'redlin':892 'referenc':1587 'referral/partnership':1594 'regulatori':153,447,474,485,1008,1011,1021,1023,1026,1029,1211 'reinforc':1828 'relationship':1629,1639 'relev':1516 'reli':1706 'remov':1229 'reorg':981 'rep':820 'requir':160,1028 'resist':975 'resolut':282,1393 'resolv':1227,1785 'resourc':1186 'respons':326 'result':133 'retro':1664 'return':131 'reus':1843 'reveal':1767 'review':487,873,875,889,909 'risk':899,921 'roi':929,930 'role':244,266 'row':1337 'rule':541 'run':23,202,1327,1787,1809,1811,1837,1842 'sal':1443,1448 'sale':1444,1451,1560,1571 'scalabl':956 'scale':957 'scanner':3,44,165,671,830,1119,1286,1389,1794,1889 'schema':77,1413 'scope':598,1646 'scratchpad':311,1728,1730,1735,1807 'sec':490 'section':849 'secur':872,950,951 'security/infosec':874 'see':78,1405,1520 'select':330,344,358,372,608,653 'senior':1157 'sequenc':677 'server':565 'session':1662 'sever':451 'shift':1201 'signal':34,37,214,229,302,304,406,498,521,665,724,731,737,748,754,761,792,794,796,1063,1068,1071,1090,1183,1237,1240,1259,1319,1323,1336,1339,1375,1678,1820,1854 'signific':1619 'singl':319 'six':199 'size':327 'skill':58,95,113,135,1791,1832 'skill-blocker-scanner' 'skip':1668 'sourc':692,756,758,785,808,1540,1790,1831 'source-specif':784 'source-violetfleming47' 'speaker':818 'specif':62,152,482,732,786,1047 'sponsor':989,992 'spotter':29,47,200 'sql':329,343,357,371,607,652,749,1064,1233,1292,1450,1455,1803 'srg':531 'stage':85,613,628,631,633,635,638,640,642,644,646,1391,1403,1416,1418,1424,1426,1432,1436,1440,1447,1454,1458,1463,1469,1476,1482,1486,1491,1496,1500 'stakehold':243,248,977,1152,1158,1165 'stale':641,1499,1501 'stall':183 'standup':1663 'starter':110,128,256 'state':261,296,621,1882 'status':341,355,369,386,1830 'step':678,682,733,855,1134,1287 'still':1716 'strong':1102,1270 'structur':99 'summari':1081,1250,1341 'supabas':119,382,532,542,1359 'supabase-reading-guid':118,381,1358 'synopsi':615 'system':253,757 'tabl':1398 'take':1019 'tangibl':1190 'taxonomi':436,864,1100,1150,1268,1702,1745 'team':1659 'technic':441,941,943,948,954,961,1208,1461,1464 'termin':606 'territori':289 'text':176,596,805,842,1872,1878,1883 'thing':877 'third':897 'third-parti':896 'tier':776 'time':445,995,997,1006,1013 'timelin':1012,1169,1175 'titl':260 'tool':555,561 'topic-agent-skills' 'topic-agentic-ai' 'topic-agentic-workflow' 'topic-ai-agents' 'topic-ai-agents-framework' 'topic-b2b-sales-automation' 'topic-crm' 'topic-intelligence' 'topic-revops' 'topic-revops-automation' 'topic-sales-analysis' 'topic-sales-ops' 'tprm':895 'traceabl':307,1290,1296,1617,1689 'track':1772 'transcript':6,75,556,568,580,582,584,589,591,595,697,783,810,1365,1509,1655,1705 'trigger':39,816 'true':625 'type':15,435,455,617,762,809,859,1098,1115,1130,1266,1300,1382,1384,1720,1739,1788,1812,1816,1826,1864 'unblock':21,193,1219,1774 'uncertainti':915 'unclear':1718 'univers':101 'unstructur':175 'use':139,398,424,432,465,469,499,503,536,865,1328,1700,1717,1786,1795 'uuid':588,781,1089,1258,1318,1320,1836 'valid':1206,1217 'valu':63,393,778,1086,1255,1315,1833 'vendor':1042,1627 'vendor/supplier':1620 'verbatim':806,841,1105 'version':284,332,346,360,374,389,392,402,417,422,1076,1093,1245,1262 'vertic':471 'via':552,559 'vocabulari':154 'vs':1053 'wait':1001 'weak':990,1104,1272,1723 'without':265 'wrap':65 'write':30,292,298,735,745,1289,1726,1732 'written':1324,1376,1379","prices":[{"id":"c0cdf5c1-ba55-4b27-abf3-bc826ff6a244","listingId":"5b98de0c-0296-4ff9-a328-d68ab644e62a","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"violetfleming47","category":"deal-intelligence","install_from":"skills.sh"},"createdAt":"2026-05-14T07:05:43.455Z"}],"sources":[{"listingId":"5b98de0c-0296-4ff9-a328-d68ab644e62a","source":"github","sourceId":"violetfleming47/deal-intelligence/blocker-scanner","sourceUrl":"https://github.com/violetfleming47/deal-intelligence/tree/main/skills/blocker-scanner","isPrimary":false,"firstSeenAt":"2026-05-14T07:05:43.455Z","lastSeenAt":"2026-05-18T19:06:26.654Z"}],"details":{"listingId":"5b98de0c-0296-4ff9-a328-d68ab644e62a","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"violetfleming47","slug":"blocker-scanner","github":{"repo":"violetfleming47/deal-intelligence","stars":15,"topics":["agent-skills","agentic-ai","agentic-workflow","ai-agents","ai-agents-framework","b2b-sales-automation","crm","intelligence","revops","revops-automation","sales-analysis","sales-ops"],"license":"mit","html_url":"https://github.com/violetfleming47/deal-intelligence","pushed_at":"2026-05-10T19:50:43Z","description":"Turn CRM and transcript data into structured, versioned deal intelligence. 6 agents, 3 frameworks, harness-agnostic. Works with any CRM, any transcript provider, any LLM.","skill_md_sha":"469a47708d4d6e183d3b1b0a4510e40d4016f1e7","skill_md_path":"skills/blocker-scanner/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/violetfleming47/deal-intelligence/tree/main/skills/blocker-scanner"},"layout":"multi","source":"github","category":"deal-intelligence","frontmatter":{"name":"blocker-scanner","description":"Reads meeting transcripts, CRM notes, and CRM emails to classify friction types, objections, competitive mentions, boosts, and unblocking events. Runs daily in parallel with other spotters. Writes to di_raw_signals and di_signal_classifications. Triggered automatically on cadence, or manually via 'run friction reader', 'scan friction for [deal]', 'what's stalling [deal]'."},"skills_sh_url":"https://skills.sh/violetfleming47/deal-intelligence/blocker-scanner"},"updatedAt":"2026-05-18T19:06:26.654Z"}}