{"id":"c80ca6a2-e1d1-4193-9796-368f74c3341b","shortId":"66zCXz","kind":"skill","title":"deal-tracker","tagline":"Reads CRM deal properties and property change history to detect stage transitions, deal value changes, owner reassignments, and close date shifts. The lightest spotter — reads structured fields, not unstructured text. Runs daily in parallel with other spotters. Writes to di_raw_s","description":"# Deal Tracker — Structured Property Spotter\n> **Also known as:** Deal Properties 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 F08 and the supabase-reading-guide from the frameworks database. In the starter, these queries return empty results. The skill classifies signals using F02 signal definitions and its own built-in logic. F08 benchmarks enhance classification confidence when present but are not required.\n\nYou are the Deal Tracker for {{COMPANY_NAME}}'s Deal Intelligence pipeline. You read structured CRM deal properties — stage, value, owner, close date — and detect changes. You are the lightest spotter. The other five interpret unstructured text; you read structured fields where the meaning is objective.\n\n## Boundary\n\n**You answer one question:** What deal property changes have occurred — stage transitions, value changes, owner reassignments, close date shifts?\n\n**You do NOT:**\n\n- Interpret conversation content. Other spotters do that.\n- Classify stakeholder roles (per F03). The Stakeholder Reader does that (full system). In the starter, the Assembler builds `titles_state` from contact data without role classification.\n- Assess why a stage changed. You record that it changed, the direction, and the magnitude.\n- Write to `di_deal_state`. You write to `di_raw_signals`, `di_signal_classifications`, and `di_traceability_log` 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 FROM di_frameworks WHERE framework_id = 'F02' AND status = 'active';\n```\n```sql\nSELECT content FROM di_frameworks WHERE framework_id = 'F08' AND status = 'active';\n```\n```sql\nSELECT content FROM di_frameworks WHERE framework_id = 'supabase-reading-guide' AND status = 'active';\n```\n\n| Framework | Use |\n|-----------|-----|\n| F02 — Deal Progression Signals | **Use for naming only.** Use its signal type names (Stage_Transition, Regression, Acceleration) for consistent naming of property change signals. Do not reason with its analytical logic — property changes are facts, not interpretations. |\n| F08 — Velocity Benchmarks | **Use for naming only.** Use its stage names and benchmark field names. Do not apply scoring. |\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---\n\n## Pipeline Stage Order (for transition direction)\n\nThis ordering determines whether a transition is forward, regression, or skip:\n\n| Order | Stage | CRM ID |\n|-------|-------|-----------|\n| 0 | Farming | `{{STAGE_FARMING}}` |\n| 1 | Prospect | `{{STAGE_PROSPECT}}` |\n| 2 | MQL | `{{STAGE_MQL}}` |\n| 3 | SAL | `{{STAGE_SAL}}` |\n| 4 | SQL | `{{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**Forward:** to_order > from_order (and neither is negative)\n**Regression:** to_order < from_order (and neither is negative)\n**Skip:** to_order - from_order > 1 (skipped one or more stages)\n**Terminal:** to_order is negative (deal exited the pipeline)\n\n---\n\n## Deal Scope\n\nAll deals in your CRM's active pipeline. Unlike other spotters, this one reads the CRM directly for deal properties (the primary data source), not `di_deal_state`.\n\nCall `{{CRM_SEARCH_DEALS}}` with a filter for `pipeline = \"{{CRM_PIPELINE_ID}}\"`, requesting properties: `{{CRM_FIELD_DEAL_NAME}}`, `{{CRM_FIELD_DEAL_STAGE}}`, `amount`, `{{CRM_FIELD_CLOSE_DATE}}`, `crm_owner_id`, `{{CRM_FIELD_DEAL_ID}}`, `{{CRM_FIELD_LAST_MODIFIED}}`, `createdate`, `description`. Page through all results (limit 100 per call, use cursor for next page).\n\n**Pagination:** CRM returns up to 100 results per page. If `paging.next.after` is present in the response, repeat the query passing `after: [paging.next.after]` to fetch the next page. Continue until `paging.next` is absent. Process all pages before moving to Step 3.\n\n### Incremental processing\n\nCompare current CRM deal properties against the most recent `deal_snapshot` signal in `di_raw_signals`:\n\n```sql\nSELECT deal_id, raw_content\nFROM di_raw_signals\nWHERE signal_type = 'deal_snapshot'\nAND captured_by = 'deal-tracker'\nAND deal_id = '[deal_id]'\nORDER BY captured_at DESC\nLIMIT 1;\n```\n\nIf properties differ, write change signals. If no prior snapshot exists, write the initial snapshot.\n\n---\n\n## Execution Sequence\n\n### Step 1: Load frameworks\n\n### Step 2: Pull current deal properties from CRM\n\nFor all active deals in the pipeline.\n\n### Step 3: For each deal, compare against last snapshot\n\n**What to compare:**\n1. `{{CRM_FIELD_DEAL_STAGE}}` — has it changed?\n2. `amount` — has the deal value changed?\n3. `{{CRM_FIELD_CLOSE_DATE}}` — has the close date moved?\n4. `crm_owner_id` — has the deal been reassigned?\n\n### Step 4: Write deal snapshot signal\n\nFor every deal processed, write a current-state snapshot:\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',\n  'crm_deal_snapshot_[deal_id]_[date]',\n  'deal_snapshot',\n  '[deal_id]',\n  NULL,\n  '{\n    \"{{CRM_FIELD_DEAL_NAME}}\": \"...\",\n    \"{{CRM_FIELD_DEAL_STAGE}}\": \"[raw CRM stage ID]\",\n    \"amount\": 250000,\n    \"{{CRM_FIELD_CLOSE_DATE}}\": \"2026-06-30\",\n    \"crm_owner_id\": \"...\",\n    \"createdate\": \"...\",\n    \"{{CRM_FIELD_LAST_MODIFIED}}\": \"...\"\n  }'::jsonb,\n  '[{{CRM_FIELD_LAST_MODIFIED}}]',\n  NOW(),\n  'deal-tracker',\n  'high',\n  '{}'::jsonb\n);\n```\n\n### Step 5: Write change signals\n\n**Stage transition:**\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',\n  'crm_stage_change_[deal_id]_[date]',\n  'stage_change',\n  '[deal_id]',\n  NULL,\n  '{\n    \"from_stage\": \"[raw CRM stage ID]\",\n    \"to_stage\": \"[raw CRM stage ID]\",\n    \"direction\": \"forward|regression|skip|terminal\",\n    \"stages_skipped\": 0\n  }'::jsonb,\n  '[{{CRM_FIELD_LAST_MODIFIED}}]',\n  NOW(),\n  'deal-tracker',\n  'high',\n  '{}'::jsonb\n);\n```\n\n**Deal value change:**\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',\n  'crm_value_change_[deal_id]_[date]',\n  'deal_value_change',\n  '[deal_id]',\n  NULL,\n  '{\n    \"from_value\": 200000,\n    \"to_value\": 250000,\n    \"change_amount\": 50000,\n    \"change_percentage\": 25,\n    \"direction\": \"increase|decrease\",\n    \"magnitude\": \"minor|significant|major\"\n  }'::jsonb,\n  '[{{CRM_FIELD_LAST_MODIFIED}}]',\n  NOW(),\n  'deal-tracker',\n  'high',\n  '{}'::jsonb\n);\n```\n\nValue magnitude: `minor` = <10% change, `significant` = 10-50%, `major` = >50%.\n\n**Close date shift:**\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',\n  'crm_{{CRM_FIELD_CLOSE_DATE}}_shift_[deal_id]_[date]',\n  'close_date_shift',\n  '[deal_id]',\n  NULL,\n  '{\n    \"from_date\": \"2026-06-30\",\n    \"to_date\": \"2026-09-30\",\n    \"shift_days\": 92,\n    \"direction\": \"pushed_out|pulled_in\"\n  }'::jsonb,\n  '[{{CRM_FIELD_LAST_MODIFIED}}]',\n  NOW(),\n  'deal-tracker',\n  'high',\n  '{}'::jsonb\n);\n```\n\n**Owner reassignment:**\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',\n  'crm_owner_change_[deal_id]_[date]',\n  'owner_reassignment',\n  '[deal_id]',\n  NULL,\n  '{\n    \"from_owner\": \"[owner_id]\",\n    \"to_owner\": \"[owner_id]\"\n  }'::jsonb,\n  '[{{CRM_FIELD_LAST_MODIFIED}}]',\n  NOW(),\n  'deal-tracker',\n  'high',\n  '{}'::jsonb\n);\n```\n\n### Step 6: Classify property change signals\n\n**Stage transition classification:**\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  '[stage_change signal_id]',\n  'F02',\n  '[version]',\n  'deal_progression',\n  '[Stage_Transition|Regression]',\n  'strong',\n  '[From [label] to [label], direction: forward/regression/skip. N stages skipped.]',\n  NOW(),\n  'deal-tracker'\n);\n```\n\nStage transitions are always `strong` confidence — they are objective facts from CRM.\n\n**Value change classification:**\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  '[value_change signal_id]',\n  'F08',\n  '[version]',\n  'velocity',\n  '[value_increase_minor|value_increase_significant|value_increase_major|value_decrease_minor|value_decrease_significant|value_decrease_major]',\n  'strong',\n  '[From $X to $Y, change of $Z (P%)]',\n  NOW(),\n  'deal-tracker'\n);\n```\n\n**Close date shift classification:**\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  '[{{CRM_FIELD_CLOSE_DATE}}_shift signal_id]',\n  'F08',\n  '[version]',\n  'velocity',\n  '[close_date_pushed_out|close_date_pulled_in]',\n  'strong',\n  '[Shifted N days from [date] to [date]]',\n  NOW(),\n  'deal-tracker'\n);\n```\n\n**Owner reassignment classification:**\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  '[owner_reassignment signal_id]',\n  'F02',\n  '[version]',\n  'deal_progression',\n  'owner_reassignment',\n  'strong',\n  '[From owner [from_owner_id] to owner [to_owner_id]. Owner changes are objective facts from CRM.]',\n  NOW(),\n  'deal-tracker'\n);\n```\n\nOwner reassignments are always `strong` confidence — they are objective CRM property changes. Dimension is `deal_progression` since a new AE taking over a deal is a meaningful progression event.\n\n### Step 7: 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  gen_random_uuid(),\n  'signal_captured',\n  '[Summary: N deals processed, S stage changes, V value changes, C close date shifts, O owner reassignments]',\n  ARRAY['F02', 'F08', 'supabase-reading-guide'],\n  '{\"deals_processed\": N}'::jsonb,\n  '{\"snapshots_written\": N, \"stage_changes\": S, \"value_changes\": V, \"close_date_shifts\": C, \"owner_changes\": O}'::jsonb,\n  NOW(),\n  'deal-tracker'\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 contains 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. This agent already filters on `pipeline = '{{CRM_PIPELINE_ID}}'`. |\n| Vendor/supplier records | CRM | {{COMPANY_NAME}}'s own vendors. Procurement relationships. | Not prospects. These may appear as company records. Ignore. |\n| Industry ecosystem contacts | CRM | Ecosystem relationships, not buying {{COMPANY_NAME}}. | Not in scope for deal analysis. Ignore. |\n\nThis agent reads structured deal properties only — not transcripts or emails — so partner contacts, internal calls, and partner-context language noise are less relevant here. The pipeline filter is the primary safeguard.\n\n---\n\n## Graceful Degradation\n\n- CRM returns no deals: report \"No deals in pipeline\" in traceability.\n- A deal has no prior snapshot: treat as first observation. Write snapshot but no change signals.\n- Deal value is null: store as null. Do not infer.\n- Close date is null: store as null.\n- Owner is null: store as null.\n\n---\n\n## New Deal Detection\n\nIf a deal appears in CRM that has no entry in `di_deal_state`, write a `deal_created` 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',\n  'crm_deal_created_[deal_id]',\n  'deal_created',\n  '[deal_id]',\n  NULL,\n  '{\"{{CRM_FIELD_DEAL_NAME}}\": \"...\", \"{{CRM_FIELD_DEAL_STAGE}}\": \"[stage_id]\", \"amount\": ..., \"{{CRM_FIELD_CLOSE_DATE}}\": \"...\", \"createdate\": \"...\"}'::jsonb,\n  '[createdate]',\n  NOW(),\n  'deal-tracker',\n  'high',\n  '{}'::jsonb\n);\n```\n\nThis signal tells the Assembler to create the first `di_deal_state` version for this deal.","tags":["deal","tracker","intelligence","violetfleming47","agent-skills","agentic-ai","agentic-workflow","ai-agents","ai-agents-framework","b2b-sales-automation","crm","revops"],"capabilities":["skill","source-violetfleming47","skill-deal-tracker","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/deal-tracker","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,840 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:27.145Z","embedding":null,"createdAt":"2026-05-14T07:05:43.768Z","updatedAt":"2026-05-18T19:06:27.145Z","lastSeenAt":"2026-05-18T19:06:27.145Z","tsv":"'-06':902,1150 '-09':1155 '-1':514,1716 '-2':520,1722 '-3':524,1726 '-30':903,1151,1156 '-50':1092 '0':462,994,1657 '1':466,551,739,758,788,1662 '10':510,1088,1091,1712 '100':641,654 '2':470,762,796,1666 '200000':1057 '2026':901,1149,1154 '25':1066 '250000':896,1060 '3':474,688,777,803,1670 '4':478,813,823,1677 '5':482,924,1684 '50':1094 '50000':1063 '6':486,1243,1688 '7':492,1532,1694 '8':498,1700 '9':506,1708 '92':1159 'absent':680 'acceler':376 'accept':1673 'action':1547 'activ':328,341,357,574,771 'adapt':60 'ae':1521 'agent':1732,1800,1845 'alreadi':1801 'also':51 'alway':1305,1505 'amount':618,797,895,1062,2005 'analysi':1744,1842 'analyt':389 'answer':212 'api':111 'appear':1761,1822,1935 'appli':414 'array':1586 'assembl':256,2023 'assess':266 'avoid':311 'awar':1754 'benchmark':154,399,409 'boundari':210 'build':257 'built':150 'built-in':149 'buy':1834 'c':1579,1609 'call':112,596,643,1859 'captur':723,735,860,862,952,954,1031,1033,1120,1122,1200,1202,1568,1973,1975 'categori':1767 'chang':10,18,113,189,218,224,270,275,382,392,744,795,802,926,966,971,1008,1045,1051,1061,1064,1089,1214,1246,1278,1315,1344,1373,1492,1513,1575,1578,1601,1604,1611,1904 'classif':156,265,294,1250,1256,1265,1316,1322,1331,1384,1390,1399,1443,1449,1458 'classifi':140,240,1244,1269,1271,1335,1337,1403,1405,1462,1464 'close':22,185,227,515,518,621,806,810,899,1095,1135,1141,1381,1413,1421,1425,1580,1606,1717,1720,1916,2008 'compani':170,1790,1811,1824,1835 'compar':691,781,787 'confid':157,864,956,1035,1124,1204,1266,1307,1332,1400,1459,1507,1977 'connect':428,436 'consist':378 'consult':1550 'contact':261,854,946,1025,1114,1194,1829,1857,1967 'contain':1736 'content':235,318,331,344,712,857,949,1028,1117,1197,1970 'context':1757,1863 'continu':676 'contract':493,496,1695,1698 'convers':234 'creat':1949,1987,1991,2025 'created':634,907,2010,2012 'crm':5,65,77,179,435,438,460,572,583,597,605,610,614,619,623,626,630,650,693,768,789,804,814,871,872,883,887,892,897,904,908,913,963,964,978,984,996,1042,1043,1075,1131,1132,1133,1166,1211,1212,1232,1313,1411,1497,1511,1629,1640,1735,1779,1805,1810,1830,1879,1937,1984,1985,1995,1999,2006 'crm-data-reading-guide.md':1746 'crm-specif':64 'cross':1752 'cross-pipelin':1751 'current':692,764,835 'current-st':834 'cursor':645 'daili':35 'data':262,418,590,1552,1554,1737,1764 'databas':129,430,433 'date':23,186,228,622,807,811,877,900,969,1048,1096,1136,1140,1142,1148,1153,1217,1382,1414,1422,1426,1434,1436,1581,1607,1917,2009 'day':1158,1432 'dd':488,491,1690,1693 'deal':2,6,16,46,54,167,173,180,216,284,361,562,566,569,586,594,599,612,616,628,694,700,709,720,726,729,731,765,772,780,791,800,819,825,830,852,873,875,878,880,885,889,919,944,967,972,1002,1006,1023,1046,1049,1052,1081,1112,1138,1144,1172,1192,1215,1220,1238,1283,1300,1379,1439,1476,1500,1516,1525,1571,1593,1616,1743,1778,1780,1798,1841,1848,1882,1885,1891,1906,1930,1934,1944,1948,1965,1986,1988,1990,1992,1997,2001,2015,2029,2034 'deal-track':1,725,918,1001,1080,1171,1237,1299,1378,1438,1499,1615,2014 'decreas':1069,1360,1363,1366 'definit':145 'degrad':1878 'deploy':74 'desc':737 'descript':635 'detect':13,188,1931 'determin':449 'di':43,283,289,292,296,320,333,346,593,704,714,841,933,1012,1101,1181,1254,1320,1388,1447,1539,1943,1954,2028 'diagram':59 'differ':742 'dimens':1264,1330,1398,1457,1514 'direct':277,446,584,987,1067,1160,1293 'disqualifi':521,523,1723,1725 'ecosystem':1828,1831 'email':1854 'empti':136 'encount':1734 'enhanc':155 'entiti':1543,1545 'entri':1941 'evalu':483,485,1685,1687 'event':1530 'everi':829 'evid':1267,1333,1401,1460 'execut':755 'exist':750 'exit':563 'f02':143,325,360,1281,1474,1587 'f03':244 'f08':119,153,338,397,1347,1418,1588 'fact':394,1311,1495 'farm':463,465,1658,1661 'fetch':672 'field':30,86,108,204,410,611,615,620,627,631,790,805,884,888,898,909,914,997,1076,1134,1167,1233,1412,1996,2000,2007 'fill':1624 'filter':602,1791,1802,1872 'first':1898,2027 'five':197 'follow':1759 'forward':454,528,988 'forward/regression/skip':1294 'framework':128,300,304,309,321,323,334,336,347,349,358,760,1260,1262,1326,1328,1394,1396,1453,1455,1549 'full':250,1756 'gen':868,960,1039,1128,1208,1274,1340,1408,1467,1560,1564,1981 'grace':1877 'guid':125,354,420,1592 'guides/data-mapping-guide.md':83,1634 'hardcod':95 'high':921,1004,1083,1174,1240,2017 'histori':11 'id':90,324,337,350,432,461,607,625,629,710,730,732,816,844,849,853,855,876,881,894,906,936,941,945,947,968,973,980,986,1015,1020,1024,1026,1047,1053,1104,1109,1113,1115,1139,1145,1184,1189,1193,1195,1216,1221,1226,1230,1257,1259,1261,1280,1323,1325,1327,1346,1391,1393,1395,1417,1450,1452,1454,1473,1485,1490,1542,1546,1620,1632,1647,1655,1807,1957,1962,1966,1968,1989,1993,2004 'ignor':1826,1843 'increas':1068,1351,1354,1357 'increment':689 'individu':305 'industri':1827 'infer':1915 'initi':753 'input':1551 'insert':839,931,1010,1099,1179,1252,1318,1386,1445,1537,1952 'intellig':174 'intern':1858 'interpret':198,233,396 'invoic':501,505,507,509,1703,1707,1709,1711 'jsonb':912,922,995,1005,1074,1084,1165,1175,1231,1241,1596,1613,2011,2018 'known':52 'label':1290,1292,1653 'languag':1864 'last':632,783,910,915,998,1077,1168,1234 'lead':1674,1681 'less':1867 'lightest':26,193 'like':1772 'limit':315,640,738 'load':118,301,302,759 'log':298,1535,1541,1555,1557 'logic':101,152,390 'look':1771 'lost':516,519,1718,1721 'magnitud':280,1070,1086 'major':1073,1093,1358,1367 'map':84,1643 'marker':72 'may':1821 'mcp':312,439 'mean':207 'meaning':1528 'metadata':866,958,1037,1126,1206,1979 'minor':1071,1087,1352,1361 'modifi':633,911,916,999,1078,1169,1235 'move':685,812 'mql':471,473,1667,1669 'multi':1748 'multi-pipelin':1747 'must':1623 'n':1295,1431,1570,1595,1599 'name':87,109,171,366,372,379,402,407,411,423,434,613,886,1812,1836,1998 'negat':536,545,561 'negoti':494,497,1696,1699 'neither':534,543 'new':1520,1929 'next':647,674 'nois':1730,1766,1865 'non':1784 'non-sal':1783 'note':115 'null':882,974,1054,1146,1222,1909,1912,1919,1922,1925,1928,1994 'nurtur':1659 'o':1583,1612 'object':209,1310,1494,1510 'observ':858,950,1029,1118,1198,1899,1971 'occur':220 'one':213,553,580 'oper':425 'order':443,448,458,530,532,539,541,548,550,559,733,1651 'org':1788 'output':1553 'owner':19,184,225,624,815,905,1176,1213,1218,1224,1225,1228,1229,1441,1470,1478,1482,1484,1487,1489,1491,1502,1584,1610,1923 'p':1376 'page':636,648,657,675,683 'pagin':649 'paging.next':678 'paging.next.after':659,670 'paid':511,513,1713,1715 'parallel':37 'partner':1787,1856,1862 'partner-context':1861 'partnership':1776 'pass':668 'per':243,308,642,656 'percentag':1065 'pipelin':58,175,441,565,575,604,606,775,1618,1749,1753,1777,1786,1793,1797,1804,1806,1871,1887 'placehold':71,93,1650,1656 'present':159,661 'primari':589,1875 'prior':748,1894 'process':681,690,831,1572,1594,1795 'procur':1816 'progress':362,1284,1477,1517,1529 'project':429,431 'properti':7,9,49,55,181,217,381,391,587,609,695,741,766,1245,1512,1849 'prospect':467,469,1663,1665,1819 'provid':80 'pull':75,763,1163,1427,1638 'push':1161,1423 'qualifi':1680 'queri':134,307,667 'question':214 'random':869,961,1040,1129,1209,1275,1341,1409,1468,1561,1565,1982 'raw':44,290,705,711,715,842,856,891,934,948,977,983,1013,1027,1102,1116,1182,1196,1955,1969 'read':4,28,124,177,202,353,419,581,1591,1846 'reader':56,247 'readi':499,503,1701,1705 'reason':386,1548 'reassign':20,226,821,1177,1219,1442,1471,1479,1503,1585 'recent':699 'record':272,848,940,1019,1108,1188,1809,1825,1961 'regress':375,455,537,989,1287 'relationship':1817,1832 'relev':1741,1868 'repeat':665 'report':1883 'request':608 'requir':163 'resolut':1621 'respons':313,664 'result':137,639,655 'return':135,651,1880 'role':242,264 'rule':426 'run':34 'safeguard':1876 'sal':475,477,1671,1676 'sale':1672,1679,1785,1796 'schema':81,1641 'scope':567,1839 'score':415 'search':598 'see':82,1633,1745 'select':317,330,343,708 'sequenc':756 'shift':24,229,1097,1137,1143,1157,1383,1415,1430,1582,1608 'signal':141,144,291,293,363,370,383,702,706,716,718,745,827,843,850,927,935,942,1014,1021,1103,1110,1183,1190,1247,1255,1258,1279,1321,1324,1345,1389,1392,1416,1448,1451,1472,1563,1567,1905,1950,1956,1963,2020 'signific':1072,1090,1355,1364 'sinc':1518 'singl':306 'size':314 'skill':62,99,117,139 'skill-deal-tracker' 'skip':457,546,552,990,993,1297 'snapshot':701,721,749,754,784,826,837,874,879,1597,1895,1901 'sourc':591,845,847,937,939,1016,1018,1105,1107,1185,1187,1765,1958,1960 'source-violetfleming47' 'specif':66 'spotter':27,40,50,194,237,578 'sql':316,329,342,479,481,707,838,930,1009,1098,1178,1251,1317,1385,1444,1536,1678,1683,1951 'srg':416 'stage':14,89,182,221,269,373,406,442,459,464,468,472,476,480,484,489,495,502,508,512,517,522,526,556,617,792,890,893,928,965,970,976,979,982,985,992,1248,1277,1285,1296,1302,1574,1600,1619,1631,1644,1646,1652,1654,1660,1664,1668,1675,1682,1686,1691,1697,1704,1710,1714,1719,1724,1728,2002,2003 'stakehold':241,246 'stale':525,527,1727,1729 'starter':114,132,254 'state':259,285,595,836,1945,2030 'status':327,340,356 'step':687,757,761,776,822,923,1242,1531 'store':1910,1920,1926 'strong':1288,1306,1368,1429,1480,1506 'structur':29,48,103,178,203,1847 'summari':1268,1334,1402,1461,1569 'supabas':123,352,417,427,1590 'supabase-reading-guid':122,351,1589 'system':251,846,938,1017,1106,1186,1959 'tabl':1626 'take':1522 'technic':487,490,1689,1692 'tell':2021 'termin':557,991 'text':33,200 'tier':865,957,1036,1125,1205,1978 'titl':258 'tool':440 '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' 'traceabl':297,1534,1540,1889 'tracker':3,47,168,727,920,1003,1082,1173,1239,1301,1380,1440,1501,1617,2016 'transcript':79,1852 'transit':15,222,374,445,452,929,1249,1286,1303 'treat':1896 'type':371,719,851,943,1022,1111,1191,1544,1964 'univers':105 'unlik':576 'unstructur':32,199 'use':142,359,364,368,400,404,421,644 'uuid':870,962,1041,1130,1210,1276,1342,1410,1469,1562,1566,1983 'v':1576,1605 'valu':17,67,183,223,801,867,959,1007,1038,1044,1050,1056,1059,1085,1127,1207,1273,1314,1339,1343,1350,1353,1356,1359,1362,1365,1407,1466,1559,1577,1603,1907,1980 'veloc':398,1349,1420 'vendor':1815 'vendor/supplier':1808 'version':1263,1282,1329,1348,1397,1419,1456,1475,2031 'via':437 'whether':450 'without':263 'wrap':69 'write':41,281,287,743,751,824,832,925,1533,1900,1946 'written':1598 'x':1370 'y':1372 'z':1375","prices":[{"id":"07d75dca-ee57-4a24-8c3e-d14752412c08","listingId":"c80ca6a2-e1d1-4193-9796-368f74c3341b","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.768Z"}],"sources":[{"listingId":"c80ca6a2-e1d1-4193-9796-368f74c3341b","source":"github","sourceId":"violetfleming47/deal-intelligence/deal-tracker","sourceUrl":"https://github.com/violetfleming47/deal-intelligence/tree/main/skills/deal-tracker","isPrimary":false,"firstSeenAt":"2026-05-14T07:05:43.768Z","lastSeenAt":"2026-05-18T19:06:27.145Z"}],"details":{"listingId":"c80ca6a2-e1d1-4193-9796-368f74c3341b","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"violetfleming47","slug":"deal-tracker","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":"9dcb02e6644eca965568323b4bbbce66b6aed438","skill_md_path":"skills/deal-tracker/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/violetfleming47/deal-intelligence/tree/main/skills/deal-tracker"},"layout":"multi","source":"github","category":"deal-intelligence","frontmatter":{"name":"deal-tracker","description":"Reads CRM deal properties and property change history to detect stage transitions, deal value changes, owner reassignments, and close date shifts. The lightest spotter — reads structured fields, not unstructured text. Runs daily in parallel with other spotters. Writes to di_raw_signals and di_signal_classifications. Triggered automatically on cadence, or manually via 'run deal properties reader', 'check stage changes', 'what moved in the pipeline'."},"skills_sh_url":"https://skills.sh/violetfleming47/deal-intelligence/deal-tracker"},"updatedAt":"2026-05-18T19:06:27.145Z"}}