[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-microsoft-duplicate-detective":3,"mdc-gqux6j-key":36,"related-repo-microsoft-duplicate-detective":2189,"related-org-microsoft-duplicate-detective":2296},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":32,"sourceUrl":34,"mdContent":35},"duplicate-detective","detect duplicate records in Dataverse","Identifies potential duplicate Accounts, Contacts, or Leads in Dataverse using intelligent fuzzy matching that catches nicknames, abbreviations, phone format variations, and address similarities. Use when user says \"find duplicates\", \"check for duplicate accounts\", \"are there any duplicate contacts\", \"duplicate detection\", \"clean up duplicates\", \"merge duplicates\", or \"data quality check\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"microsoft","Microsoft","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fmicrosoft.png",[12,16,17,20,23],{"name":13,"slug":14,"type":15},"Data Quality","data-quality","tag",{"name":9,"slug":8,"type":15},{"name":18,"slug":19,"type":15},"Database","database",{"name":21,"slug":22,"type":15},"CRM","crm",{"name":24,"slug":25,"type":15},"Dataverse","dataverse",41,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdataverse-business-skills","2026-04-06T18:36:33.582708",null,9,[],{"repoUrl":27,"stars":26,"forks":30,"topics":33,"description":29},[],"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fdataverse-business-skills\u002Ftree\u002FHEAD\u002Fskills\u002Fduplicate-detective","---\nname: duplicate-detective\ndescription: Identifies potential duplicate Accounts, Contacts, or Leads in Dataverse using intelligent fuzzy matching that catches nicknames, abbreviations, phone format variations, and address similarities. Use when user says \"find duplicates\", \"check for duplicate accounts\", \"are there any duplicate contacts\", \"duplicate detection\", \"clean up duplicates\", \"merge duplicates\", or \"data quality check\".\nmetadata:\n  author: Dataverse\n  version: 1.0.0\n  category: data-quality\n---\n\n# Duplicate Detective\n\nSales and marketing teams often accumulate duplicate records due to data entry variations, imports from multiple sources, and inconsistent naming conventions. Standard Dataverse duplicate detection rules are limited (max 5 rules per table) and miss subtle duplicates. This skill provides intelligent duplicate detection to maintain data quality and prevent wasted effort on duplicate outreach.\n\n## Instructions\n\n### Step 1: Determine Scope of Duplicate Check\nAsk the user or infer from context:\n1. **Target Table:** Account, Contact, or Lead (or all three)\n2. **Scope:** \n   - Full scan of all records\n   - Specific subset (e.g., records created in last 30 days)\n   - Check against a specific record (e.g., \"Find duplicates of Contoso\")\n3. **Matching Threshold:** Strict (high confidence only) or Relaxed (include possible matches)\n\n#### Step 2: Query Source Records\nBased on scope, retrieve records to analyze:\n\n**For Accounts:**\n```\nSELECT accountid, name, telephone1, telephone2, emailaddress1, \n       address1_line1, address1_city, address1_stateorprovince, address1_postalcode,\n       websiteurl, numberofemployees, industrycode\nFROM account \nWHERE statecode = 0\n```\n\n**For Contacts:**\n```\nSELECT contactid, firstname, lastname, fullname, emailaddress1, emailaddress2,\n       telephone1, mobilephone, jobtitle, accountid,\n       address1_line1, address1_city, address1_stateorprovince, address1_postalcode\nFROM contact\nWHERE statecode = 0\n```\n\n**For Leads:**\n```\nSELECT leadid, firstname, lastname, fullname, companyname, emailaddress1,\n       telephone1, mobilephone, jobtitle, address1_line1, address1_city,\n       address1_stateorprovince, address1_postalcode, websiteurl\nFROM lead\nWHERE statecode = 0\n```\n\n#### Step 3: Apply Fuzzy Matching Algorithms\n\n**3.1 Company\u002FAccount Name Matching**\nDetect duplicates even with variations:\n- **Abbreviation Handling:** \"International Business Machines\" ↔ \"IBM\"\n- **Legal Suffix Normalization:** \"Contoso Inc.\" ↔ \"Contoso Corporation\" ↔ \"Contoso LLC\"\n- **Common Abbreviations:** \"Mfg\" = \"Manufacturing\", \"Intl\" = \"International\"\n- **Word Order Variations:** \"Microsoft Corporation\" ↔ \"Corporation Microsoft\"\n- **Punctuation & Spacing:** \"A.B.C. Company\" ↔ \"ABC Company\"\n- **The\u002FA Prefix Handling:** \"The Contoso Group\" ↔ \"Contoso Group\"\n\n**Matching Logic:**\n1. Normalize both names (lowercase, remove punctuation, expand abbreviations)\n2. Calculate string similarity using:\n   - Levenshtein distance (edit distance)\n   - Jaro-Winkler similarity (handles transpositions)\n   - Token-based matching (matching words regardless of order)\n3. Score: 90%+ = High confidence match, 75-89% = Possible match\n\n**3.2 Person Name Matching**\nDetect duplicate contacts\u002Fleads:\n- **Nickname Resolution:** \"Robert\" ↔ \"Bob\" ↔ \"Rob\" ↔ \"Bobby\"\n- **Name Variations:** \"William\" ↔ \"Will\" ↔ \"Bill\" ↔ \"Billy\"\n- **Initial Matching:** \"J. Smith\" ↔ \"John Smith\"\n- **Name Order:** \"John Smith\" ↔ \"Smith, John\"\n- **Hyphenated Names:** \"Mary Smith-Jones\" ↔ \"Mary Jones\"\n- **Middle Name Handling:** \"John Michael Smith\" ↔ \"John Smith\"\n\n**Common Nickname Mappings:**\n| Formal Name | Nicknames |\n|-------------|-----------|\n| Robert | Bob, Rob, Bobby, Robbie |\n| William | Will, Bill, Billy, Willy |\n| Richard | Rick, Rich, Dick |\n| Michael | Mike, Mikey |\n| James | Jim, Jimmy, Jamie |\n| Elizabeth | Liz, Beth, Betty, Lizzy |\n| Jennifer | Jen, Jenny |\n| Katherine | Kate, Katie, Kathy, Cathy |\n\n**3.3 Phone Number Matching**\nNormalize and compare phone numbers:\n- Strip all formatting: \"(555) 123-4567\" → \"5551234567\"\n- Handle country code variations: \"+1-555-123-4567\" ↔ \"555-123-4567\"\n- Match across fields: telephone1 vs mobilephone vs telephone2\n- Consider area code changes for same base number\n\n**Phone Normalization Steps:**\n1. Remove all non-numeric characters\n2. Remove leading country code if present (1 for US)\n3. Compare last 10 digits for US numbers\n4. Flag as match if any phone field matches\n\n**3.4 Email Address Matching**\nDetect email-based duplicates:\n- **Domain Variations:** Gmail.com aliases (+ addressing)\n- **Dot Variations:** \"john.smith@gmail.com\" ↔ \"johnsmith@gmail.com\"\n- **Case Normalization:** Always compare lowercase\n- **Typo Detection:** \"john@gmial.com\" likely = \"john@gmail.com\"\n- **Corporate Email Patterns:** Match same domain = same company\n\n**3.5 Address Matching**\nDetect address duplicates with variations:\n- **Street Abbreviations:** \"Street\" ↔ \"St\" ↔ \"St.\"\n- **Direction Abbreviations:** \"North\" ↔ \"N\" ↔ \"N.\"\n- **Building\u002FSuite Handling:** \"123 Main St Suite 100\" ↔ \"123 Main St\"\n- **Postal Code Normalization:** \"12345-6789\" ↔ \"12345\"\n- **State Variations:** \"California\" ↔ \"CA\"\n\n**Address Normalization:**\n1. Standardize street type abbreviations\n2. Standardize direction prefixes\u002Fsuffixes\n3. Remove suite\u002Fapt\u002Funit information for base comparison\n4. Normalize postal code to 5 digits\n5. Standardize state to 2-letter code\n\n#### Step 4: Score and Rank Potential Duplicates\n\n**Composite Scoring Model:**\nCalculate overall duplicate probability using weighted scores:\n\n| Field Type | Weight (Accounts) | Weight (Contacts) | Weight (Leads) |\n|------------|------------------|-------------------|----------------|\n| Name | 35% | 30% | 30% |\n| Email | 25% | 30% | 30% |\n| Phone | 20% | 20% | 20% |\n| Address | 15% | 15% | 15% |\n| Website | 5% | - | 5% |\n| Company (for contacts) | - | 5% | - |\n\n**Score Thresholds:**\n- **High Confidence (90-100%):** Almost certainly duplicates\n- **Medium Confidence (75-89%):** Likely duplicates, review recommended\n- **Low Confidence (60-74%):** Possible duplicates, investigate\n\n#### Step 5: Group and Present Duplicate Sets\n\n**Organize Results:**\n```\nDuplicate Set 1 (High Confidence - 95% match):\n├── Record A: Contoso Inc. (accountid: xxx)\n│   ├── Phone: (555) 123-4567\n│   ├── Email: info@contoso.com\n│   └── Address: 123 Main Street, Seattle, WA\n└── Record B: Contoso Corporation (accountid: yyy)\n    ├── Phone: 555.123.4567\n    ├── Email: sales@contoso.com\n    └── Address: 123 Main St, Seattle, WA 98101\n\nMatching Signals:\n- Company name: 92% similar (legal suffix variation)\n- Phone: 100% match (format difference only)\n- Address: 95% match (abbreviation variation)\n```\n\n#### Step 6: Provide Actionable Recommendations\n\n**For Each Duplicate Set, Recommend:**\n\n1. **Merge Recommendation:**\n   - Identify the \"surviving\" record (more complete, older, or more activity)\n   - List fields to preserve from each record\n   - Identify child records that would need reassignment\n\n2. **Activity Analysis:**\n   - Count activities on each record\n   - Identify which record has more recent engagement\n   - Flag if merging would consolidate significant history\n\n3. **Relationship Impact:**\n   - List opportunities linked to each account\n   - Count contacts under each account\n   - Identify potential data loss risks\n\n**Output Format:**\n```\nDUPLICATE DETECTION SUMMARY\n===========================\n\nScan Parameters:\n- Table: Account\n- Records Scanned: 5,432\n- Date Range: All active records\n\nResults:\n- High Confidence Duplicates: 23 sets (46 records)\n- Medium Confidence Duplicates: 45 sets (98 records)\n- Low Confidence Duplicates: 12 sets (26 records)\n\nTOP PRIORITY DUPLICATES (High Confidence):\n\n1. [Account] Contoso Inc. ↔ Contoso Corporation\n   Match Score: 95%\n   Recommendation: Merge into \"Contoso Inc.\" (more activity)\n   Impact: 3 opportunities, 12 contacts would be consolidated\n   \n2. [Contact] Bob Smith ↔ Robert Smith (both at Contoso)\n   Match Score: 92%\n   Recommendation: Merge into \"Robert Smith\" (more complete record)\n   Impact: 8 activities would be consolidated\n\n3. [Lead] ABC Manufacturing ↔ A.B.C. Mfg Company\n   Match Score: 91%\n   Recommendation: Review - may be parent\u002Fsubsidiary\n   Impact: Different addresses - verify relationship first\n```\n\n#### Step 7: Execute Merge (If Requested)\n\nIf user wants to proceed with merge:\n\n1. **Document Current State:**\n   - Export both records' data\n   - List all child records\n\n2. **Update Child Records:**\n   - Reassign contacts to surviving account\n   - Update opportunity regardingobjectid\n   - Move activities to surviving record\n\n3. **Merge Field Values:**\n   - Keep most complete values\n   - Concatenate notes\u002Fdescriptions if both have content\n   - Preserve all email addresses and phone numbers\n\n4. **Deactivate Duplicate:**\n   - Set statecode = 1 (Inactive) on duplicate record\n   - Add note explaining it was merged\n\n### Dataverse Tables Used\n| Table | Purpose |\n|-------|---------|\n| `account` | Primary entity for company duplicates |\n| `contact` | Primary entity for person duplicates |\n| `lead` | Primary entity for lead duplicates |\n| `opportunity` | Check for linked opportunities |\n| `activitypointer` | Count activities on each record |\n| `annotation` | Document merge decisions |\n\n### Key Fields Reference\n**account:**\n- `name` (NVARCHAR 160) - Company name for matching\n- `accountnumber` (NVARCHAR 20) - Account number for exact matching\n- `telephone1`, `telephone2` (PHONE) - Phone matching\n- `emailaddress1` (EMAIL) - Email matching\n- `address1_line1`, `address1_city`, `address1_stateorprovince`, `address1_postalcode` - Address matching\n- `websiteurl` (URL) - Website matching\n- `parentaccountid` (LOOKUP → account) - Parent company relationship\n- `statecode` (STATE) - Active(0), Inactive(1) - Filter active only\n\n**contact:**\n- `firstname`, `lastname` (NVARCHAR) - Name components\n- `fullname` (NVARCHAR) - Calculated full name\n- `emailaddress1`, `emailaddress2` (EMAIL) - Email matching\n- `telephone1`, `mobilephone` (PHONE) - Phone matching\n- `accountid` (LOOKUP → account) - Parent account\n- `jobtitle` (NVARCHAR) - Additional matching signal\n- `department` (NVARCHAR) - Department for disambiguation\n- `statecode` (STATE) - Active(0), Inactive(1)\n\n**lead:**\n- `companyname` (NVARCHAR 100) - Company matching\n- `firstname`, `lastname`, `fullname` (NVARCHAR) - Name matching\n- `emailaddress1` (EMAIL) - Email matching\n- `telephone1`, `mobilephone` (PHONE) - Phone matching\n- `address1_line1`, `address1_city`, `address1_stateorprovince` - Address matching\n- `websiteurl` (URL) - Website matching\n- `statecode` (STATE) - Open(0), Qualified(1), Disqualified(2)\n- `statuscode` (STATUS) - New(1), Contacted(2) [Open]; Qualified(3) [Qualified]; Lost(4), Cannot Contact(5), No Longer Interested(6), Canceled(7) [Disqualified]\n\n### Fuzzy Matching Best Practices\n\n1. **Always normalize before comparing:**\n   - Lowercase all text\n   - Remove punctuation\n   - Standardize abbreviations\n\n2. **Use multiple matching signals:**\n   - Never flag as duplicate based on single field match\n   - Require 2+ strong signals for high confidence\n\n3. **Consider business context:**\n   - Same company name in different cities may be branches\n   - Same person name at different companies = different people\n   - Parent\u002Fsubsidiary relationships are not duplicates\n\n4. **Handle false positives:**\n   - \"John Smith\" is common - require additional signals\n   - Generic company names need more verification\n   - Allow user to mark \"Not a Duplicate\"\n## Examples\n\n### Example 1: Find Account Duplicates\n\n**User says:** \"Check for duplicate accounts in my CRM\"\n\n**Actions:**\n1. Query all active accounts from Dataverse\n2. Apply fuzzy matching on name, phone, email, address\n3. Group potential duplicates by confidence score\n4. Present high-confidence matches first\n\n**Result:**\n```\nDUPLICATE DETECTION SUMMARY\n- Records Scanned: 5,432 accounts\n- High Confidence Duplicates: 23 sets\n- Recommendation: Start with \"Contoso Inc.\" ↔ \"Contoso Corporation\" (95% match)\n```\n\n### Example 2: Check Specific Record for Duplicates\n\n**User says:** \"Find duplicates of Fabrikam Inc.\"\n\n**Actions:**\n1. Retrieve Fabrikam Inc. record details\n2. Compare against all other active accounts\n3. Apply weighted scoring across all matching fields\n4. Return ranked list of potential matches\n\n**Result:**\n```\nPotential duplicates of \"Fabrikam Inc.\":\n1. Fabrikam Incorporated (87% match) - Same phone, similar address\n2. The Fabrikam Group (72% match) - Same website domain\n```\n\n### Example 3: Contact Duplicate with Nickname\n\n**User says:** \"Are there duplicate contacts named Bob at Contoso?\"\n\n**Actions:**\n1. Search contacts at Contoso account\n2. Expand \"Bob\" to include Robert, Rob, Bobby\n3. Compare phone and email across matches\n4. Present findings with merge recommendation\n\n**Result:**\n```\nFound potential duplicate:\n- \"Bob Smith\" (created 2024-01-15) - 3 activities\n- \"Robert Smith\" (created 2023-06-01) - 12 activities\nRecommendation: Merge into \"Robert Smith\" (more complete record)\n```\n\n## Troubleshooting\n\n### Error: Too many potential duplicates returned\n**Cause:** Matching threshold too relaxed or common names in dataset\n**Solution:**\n- Increase confidence threshold to 85%+\n- Require 2+ matching signals for flagging\n- Filter by specific criteria (industry, geography)\n\n### Error: Known duplicates not detected\n**Cause:** Significant spelling variations or missing data in fields\n**Solution:**\n- Check if key fields (email, phone) are populated\n- Review nickname mappings for person names\n- Consider adding custom abbreviation rules\n\n### Error: False positives flagged as duplicates\n**Cause:** Common names or parent\u002Fsubsidiary relationships\n**Solution:**\n- Review address and account hierarchy\n- Check if records are intentionally separate (branches, divisions)\n- Mark as \"Not a Duplicate\" to exclude from future scans\n\n### Fuzzy Matching Best Practices",{"data":37,"body":40},{"name":4,"description":6,"metadata":38},{"author":24,"version":39,"category":14},"1.0.0",{"type":41,"children":42},"root",[43,51,57,64,71,76,129,136,141,149,162,170,179,187,196,202,212,275,283,319,329,392,400,532,542,565,573,596,606,690,700,753,761,789,795,805,964,972,1005,1011,1019,1028,1034,1042,1123,1131,1140,1146,1151,1248,1254,1377,1383,1391,1511,1519,1626,1634,1765,1771,1873,1879,1885,1895,1903,1926,1934,1943,1949,1958,1965,1988,1995,2004,2010,2019,2026,2049,2056,2065,2071,2077,2092,2110,2116,2129,2147,2153,2166,2184],{"type":44,"tag":45,"props":46,"children":47},"element","h1",{"id":4},[48],{"type":49,"value":50},"text","Duplicate Detective",{"type":44,"tag":52,"props":53,"children":54},"p",{},[55],{"type":49,"value":56},"Sales and marketing teams often accumulate duplicate records due to data entry variations, imports from multiple sources, and inconsistent naming conventions. Standard Dataverse duplicate detection rules are limited (max 5 rules per table) and miss subtle duplicates. This skill provides intelligent duplicate detection to maintain data quality and prevent wasted effort on duplicate outreach.",{"type":44,"tag":58,"props":59,"children":61},"h2",{"id":60},"instructions",[62],{"type":49,"value":63},"Instructions",{"type":44,"tag":65,"props":66,"children":68},"h3",{"id":67},"step-1-determine-scope-of-duplicate-check",[69],{"type":49,"value":70},"Step 1: Determine Scope of Duplicate Check",{"type":44,"tag":52,"props":72,"children":73},{},[74],{"type":49,"value":75},"Ask the user or infer from context:",{"type":44,"tag":77,"props":78,"children":79},"ol",{},[80,92,119],{"type":44,"tag":81,"props":82,"children":83},"li",{},[84,90],{"type":44,"tag":85,"props":86,"children":87},"strong",{},[88],{"type":49,"value":89},"Target Table:",{"type":49,"value":91}," Account, Contact, or Lead (or all three)",{"type":44,"tag":81,"props":93,"children":94},{},[95,100],{"type":44,"tag":85,"props":96,"children":97},{},[98],{"type":49,"value":99},"Scope:",{"type":44,"tag":101,"props":102,"children":103},"ul",{},[104,109,114],{"type":44,"tag":81,"props":105,"children":106},{},[107],{"type":49,"value":108},"Full scan of all records",{"type":44,"tag":81,"props":110,"children":111},{},[112],{"type":49,"value":113},"Specific subset (e.g., records created in last 30 days)",{"type":44,"tag":81,"props":115,"children":116},{},[117],{"type":49,"value":118},"Check against a specific record (e.g., \"Find duplicates of Contoso\")",{"type":44,"tag":81,"props":120,"children":121},{},[122,127],{"type":44,"tag":85,"props":123,"children":124},{},[125],{"type":49,"value":126},"Matching Threshold:",{"type":49,"value":128}," Strict (high confidence only) or Relaxed (include possible matches)",{"type":44,"tag":130,"props":131,"children":133},"h4",{"id":132},"step-2-query-source-records",[134],{"type":49,"value":135},"Step 2: Query Source Records",{"type":44,"tag":52,"props":137,"children":138},{},[139],{"type":49,"value":140},"Based on scope, retrieve records to analyze:",{"type":44,"tag":52,"props":142,"children":143},{},[144],{"type":44,"tag":85,"props":145,"children":146},{},[147],{"type":49,"value":148},"For Accounts:",{"type":44,"tag":150,"props":151,"children":155},"pre",{"className":152,"code":154,"language":49},[153],"language-text","SELECT accountid, name, telephone1, telephone2, emailaddress1, \n       address1_line1, address1_city, address1_stateorprovince, address1_postalcode,\n       websiteurl, numberofemployees, industrycode\nFROM account \nWHERE statecode = 0\n",[156],{"type":44,"tag":157,"props":158,"children":160},"code",{"__ignoreMap":159},"",[161],{"type":49,"value":154},{"type":44,"tag":52,"props":163,"children":164},{},[165],{"type":44,"tag":85,"props":166,"children":167},{},[168],{"type":49,"value":169},"For Contacts:",{"type":44,"tag":150,"props":171,"children":174},{"className":172,"code":173,"language":49},[153],"SELECT contactid, firstname, lastname, fullname, emailaddress1, emailaddress2,\n       telephone1, mobilephone, jobtitle, accountid,\n       address1_line1, address1_city, address1_stateorprovince, address1_postalcode\nFROM contact\nWHERE statecode = 0\n",[175],{"type":44,"tag":157,"props":176,"children":177},{"__ignoreMap":159},[178],{"type":49,"value":173},{"type":44,"tag":52,"props":180,"children":181},{},[182],{"type":44,"tag":85,"props":183,"children":184},{},[185],{"type":49,"value":186},"For Leads:",{"type":44,"tag":150,"props":188,"children":191},{"className":189,"code":190,"language":49},[153],"SELECT leadid, firstname, lastname, fullname, companyname, emailaddress1,\n       telephone1, mobilephone, jobtitle, address1_line1, address1_city,\n       address1_stateorprovince, address1_postalcode, websiteurl\nFROM lead\nWHERE statecode = 0\n",[192],{"type":44,"tag":157,"props":193,"children":194},{"__ignoreMap":159},[195],{"type":49,"value":190},{"type":44,"tag":130,"props":197,"children":199},{"id":198},"step-3-apply-fuzzy-matching-algorithms",[200],{"type":49,"value":201},"Step 3: Apply Fuzzy Matching Algorithms",{"type":44,"tag":52,"props":203,"children":204},{},[205,210],{"type":44,"tag":85,"props":206,"children":207},{},[208],{"type":49,"value":209},"3.1 Company\u002FAccount Name Matching",{"type":49,"value":211},"\nDetect duplicates even with variations:",{"type":44,"tag":101,"props":213,"children":214},{},[215,225,235,245,255,265],{"type":44,"tag":81,"props":216,"children":217},{},[218,223],{"type":44,"tag":85,"props":219,"children":220},{},[221],{"type":49,"value":222},"Abbreviation Handling:",{"type":49,"value":224}," \"International Business Machines\" ↔ \"IBM\"",{"type":44,"tag":81,"props":226,"children":227},{},[228,233],{"type":44,"tag":85,"props":229,"children":230},{},[231],{"type":49,"value":232},"Legal Suffix Normalization:",{"type":49,"value":234}," \"Contoso Inc.\" ↔ \"Contoso Corporation\" ↔ \"Contoso LLC\"",{"type":44,"tag":81,"props":236,"children":237},{},[238,243],{"type":44,"tag":85,"props":239,"children":240},{},[241],{"type":49,"value":242},"Common Abbreviations:",{"type":49,"value":244}," \"Mfg\" = \"Manufacturing\", \"Intl\" = \"International\"",{"type":44,"tag":81,"props":246,"children":247},{},[248,253],{"type":44,"tag":85,"props":249,"children":250},{},[251],{"type":49,"value":252},"Word Order Variations:",{"type":49,"value":254}," \"Microsoft Corporation\" ↔ \"Corporation Microsoft\"",{"type":44,"tag":81,"props":256,"children":257},{},[258,263],{"type":44,"tag":85,"props":259,"children":260},{},[261],{"type":49,"value":262},"Punctuation & Spacing:",{"type":49,"value":264}," \"A.B.C. Company\" ↔ \"ABC Company\"",{"type":44,"tag":81,"props":266,"children":267},{},[268,273],{"type":44,"tag":85,"props":269,"children":270},{},[271],{"type":49,"value":272},"The\u002FA Prefix Handling:",{"type":49,"value":274}," \"The Contoso Group\" ↔ \"Contoso Group\"",{"type":44,"tag":52,"props":276,"children":277},{},[278],{"type":44,"tag":85,"props":279,"children":280},{},[281],{"type":49,"value":282},"Matching Logic:",{"type":44,"tag":77,"props":284,"children":285},{},[286,291,314],{"type":44,"tag":81,"props":287,"children":288},{},[289],{"type":49,"value":290},"Normalize both names (lowercase, remove punctuation, expand abbreviations)",{"type":44,"tag":81,"props":292,"children":293},{},[294,296],{"type":49,"value":295},"Calculate string similarity using:\n",{"type":44,"tag":101,"props":297,"children":298},{},[299,304,309],{"type":44,"tag":81,"props":300,"children":301},{},[302],{"type":49,"value":303},"Levenshtein distance (edit distance)",{"type":44,"tag":81,"props":305,"children":306},{},[307],{"type":49,"value":308},"Jaro-Winkler similarity (handles transpositions)",{"type":44,"tag":81,"props":310,"children":311},{},[312],{"type":49,"value":313},"Token-based matching (matching words regardless of order)",{"type":44,"tag":81,"props":315,"children":316},{},[317],{"type":49,"value":318},"Score: 90%+ = High confidence match, 75-89% = Possible match",{"type":44,"tag":52,"props":320,"children":321},{},[322,327],{"type":44,"tag":85,"props":323,"children":324},{},[325],{"type":49,"value":326},"3.2 Person Name Matching",{"type":49,"value":328},"\nDetect duplicate contacts\u002Fleads:",{"type":44,"tag":101,"props":330,"children":331},{},[332,342,352,362,372,382],{"type":44,"tag":81,"props":333,"children":334},{},[335,340],{"type":44,"tag":85,"props":336,"children":337},{},[338],{"type":49,"value":339},"Nickname Resolution:",{"type":49,"value":341}," \"Robert\" ↔ \"Bob\" ↔ \"Rob\" ↔ \"Bobby\"",{"type":44,"tag":81,"props":343,"children":344},{},[345,350],{"type":44,"tag":85,"props":346,"children":347},{},[348],{"type":49,"value":349},"Name Variations:",{"type":49,"value":351}," \"William\" ↔ \"Will\" ↔ \"Bill\" ↔ \"Billy\"",{"type":44,"tag":81,"props":353,"children":354},{},[355,360],{"type":44,"tag":85,"props":356,"children":357},{},[358],{"type":49,"value":359},"Initial Matching:",{"type":49,"value":361}," \"J. Smith\" ↔ \"John Smith\"",{"type":44,"tag":81,"props":363,"children":364},{},[365,370],{"type":44,"tag":85,"props":366,"children":367},{},[368],{"type":49,"value":369},"Name Order:",{"type":49,"value":371}," \"John Smith\" ↔ \"Smith, John\"",{"type":44,"tag":81,"props":373,"children":374},{},[375,380],{"type":44,"tag":85,"props":376,"children":377},{},[378],{"type":49,"value":379},"Hyphenated Names:",{"type":49,"value":381}," \"Mary Smith-Jones\" ↔ \"Mary Jones\"",{"type":44,"tag":81,"props":383,"children":384},{},[385,390],{"type":44,"tag":85,"props":386,"children":387},{},[388],{"type":49,"value":389},"Middle Name Handling:",{"type":49,"value":391}," \"John Michael Smith\" ↔ \"John Smith\"",{"type":44,"tag":52,"props":393,"children":394},{},[395],{"type":44,"tag":85,"props":396,"children":397},{},[398],{"type":49,"value":399},"Common Nickname Mappings:",{"type":44,"tag":401,"props":402,"children":403},"table",{},[404,423],{"type":44,"tag":405,"props":406,"children":407},"thead",{},[408],{"type":44,"tag":409,"props":410,"children":411},"tr",{},[412,418],{"type":44,"tag":413,"props":414,"children":415},"th",{},[416],{"type":49,"value":417},"Formal Name",{"type":44,"tag":413,"props":419,"children":420},{},[421],{"type":49,"value":422},"Nicknames",{"type":44,"tag":424,"props":425,"children":426},"tbody",{},[427,441,454,467,480,493,506,519],{"type":44,"tag":409,"props":428,"children":429},{},[430,436],{"type":44,"tag":431,"props":432,"children":433},"td",{},[434],{"type":49,"value":435},"Robert",{"type":44,"tag":431,"props":437,"children":438},{},[439],{"type":49,"value":440},"Bob, Rob, Bobby, Robbie",{"type":44,"tag":409,"props":442,"children":443},{},[444,449],{"type":44,"tag":431,"props":445,"children":446},{},[447],{"type":49,"value":448},"William",{"type":44,"tag":431,"props":450,"children":451},{},[452],{"type":49,"value":453},"Will, Bill, Billy, Willy",{"type":44,"tag":409,"props":455,"children":456},{},[457,462],{"type":44,"tag":431,"props":458,"children":459},{},[460],{"type":49,"value":461},"Richard",{"type":44,"tag":431,"props":463,"children":464},{},[465],{"type":49,"value":466},"Rick, Rich, Dick",{"type":44,"tag":409,"props":468,"children":469},{},[470,475],{"type":44,"tag":431,"props":471,"children":472},{},[473],{"type":49,"value":474},"Michael",{"type":44,"tag":431,"props":476,"children":477},{},[478],{"type":49,"value":479},"Mike, Mikey",{"type":44,"tag":409,"props":481,"children":482},{},[483,488],{"type":44,"tag":431,"props":484,"children":485},{},[486],{"type":49,"value":487},"James",{"type":44,"tag":431,"props":489,"children":490},{},[491],{"type":49,"value":492},"Jim, Jimmy, Jamie",{"type":44,"tag":409,"props":494,"children":495},{},[496,501],{"type":44,"tag":431,"props":497,"children":498},{},[499],{"type":49,"value":500},"Elizabeth",{"type":44,"tag":431,"props":502,"children":503},{},[504],{"type":49,"value":505},"Liz, Beth, Betty, Lizzy",{"type":44,"tag":409,"props":507,"children":508},{},[509,514],{"type":44,"tag":431,"props":510,"children":511},{},[512],{"type":49,"value":513},"Jennifer",{"type":44,"tag":431,"props":515,"children":516},{},[517],{"type":49,"value":518},"Jen, Jenny",{"type":44,"tag":409,"props":520,"children":521},{},[522,527],{"type":44,"tag":431,"props":523,"children":524},{},[525],{"type":49,"value":526},"Katherine",{"type":44,"tag":431,"props":528,"children":529},{},[530],{"type":49,"value":531},"Kate, Katie, Kathy, Cathy",{"type":44,"tag":52,"props":533,"children":534},{},[535,540],{"type":44,"tag":85,"props":536,"children":537},{},[538],{"type":49,"value":539},"3.3 Phone Number Matching",{"type":49,"value":541},"\nNormalize and compare phone numbers:",{"type":44,"tag":101,"props":543,"children":544},{},[545,550,555,560],{"type":44,"tag":81,"props":546,"children":547},{},[548],{"type":49,"value":549},"Strip all formatting: \"(555) 123-4567\" → \"5551234567\"",{"type":44,"tag":81,"props":551,"children":552},{},[553],{"type":49,"value":554},"Handle country code variations: \"+1-555-123-4567\" ↔ \"555-123-4567\"",{"type":44,"tag":81,"props":556,"children":557},{},[558],{"type":49,"value":559},"Match across fields: telephone1 vs mobilephone vs telephone2",{"type":44,"tag":81,"props":561,"children":562},{},[563],{"type":49,"value":564},"Consider area code changes for same base number",{"type":44,"tag":52,"props":566,"children":567},{},[568],{"type":44,"tag":85,"props":569,"children":570},{},[571],{"type":49,"value":572},"Phone Normalization Steps:",{"type":44,"tag":77,"props":574,"children":575},{},[576,581,586,591],{"type":44,"tag":81,"props":577,"children":578},{},[579],{"type":49,"value":580},"Remove all non-numeric characters",{"type":44,"tag":81,"props":582,"children":583},{},[584],{"type":49,"value":585},"Remove leading country code if present (1 for US)",{"type":44,"tag":81,"props":587,"children":588},{},[589],{"type":49,"value":590},"Compare last 10 digits for US numbers",{"type":44,"tag":81,"props":592,"children":593},{},[594],{"type":49,"value":595},"Flag as match if any phone field matches",{"type":44,"tag":52,"props":597,"children":598},{},[599,604],{"type":44,"tag":85,"props":600,"children":601},{},[602],{"type":49,"value":603},"3.4 Email Address Matching",{"type":49,"value":605},"\nDetect email-based duplicates:",{"type":44,"tag":101,"props":607,"children":608},{},[609,619,646,656,680],{"type":44,"tag":81,"props":610,"children":611},{},[612,617],{"type":44,"tag":85,"props":613,"children":614},{},[615],{"type":49,"value":616},"Domain Variations:",{"type":49,"value":618}," Gmail.com aliases (+ addressing)",{"type":44,"tag":81,"props":620,"children":621},{},[622,627,629,636,638,644],{"type":44,"tag":85,"props":623,"children":624},{},[625],{"type":49,"value":626},"Dot Variations:",{"type":49,"value":628}," \"",{"type":44,"tag":630,"props":631,"children":633},"a",{"href":632},"mailto:john.smith@gmail.com",[634],{"type":49,"value":635},"john.smith@gmail.com",{"type":49,"value":637},"\" ↔ \"",{"type":44,"tag":630,"props":639,"children":641},{"href":640},"mailto:johnsmith@gmail.com",[642],{"type":49,"value":643},"johnsmith@gmail.com",{"type":49,"value":645},"\"",{"type":44,"tag":81,"props":647,"children":648},{},[649,654],{"type":44,"tag":85,"props":650,"children":651},{},[652],{"type":49,"value":653},"Case Normalization:",{"type":49,"value":655}," Always compare lowercase",{"type":44,"tag":81,"props":657,"children":658},{},[659,664,665,671,673,679],{"type":44,"tag":85,"props":660,"children":661},{},[662],{"type":49,"value":663},"Typo Detection:",{"type":49,"value":628},{"type":44,"tag":630,"props":666,"children":668},{"href":667},"mailto:john@gmial.com",[669],{"type":49,"value":670},"john@gmial.com",{"type":49,"value":672},"\" likely = \"",{"type":44,"tag":630,"props":674,"children":676},{"href":675},"mailto:john@gmail.com",[677],{"type":49,"value":678},"john@gmail.com",{"type":49,"value":645},{"type":44,"tag":81,"props":681,"children":682},{},[683,688],{"type":44,"tag":85,"props":684,"children":685},{},[686],{"type":49,"value":687},"Corporate Email Patterns:",{"type":49,"value":689}," Match same domain = same company",{"type":44,"tag":52,"props":691,"children":692},{},[693,698],{"type":44,"tag":85,"props":694,"children":695},{},[696],{"type":49,"value":697},"3.5 Address Matching",{"type":49,"value":699},"\nDetect address duplicates with variations:",{"type":44,"tag":101,"props":701,"children":702},{},[703,713,723,733,743],{"type":44,"tag":81,"props":704,"children":705},{},[706,711],{"type":44,"tag":85,"props":707,"children":708},{},[709],{"type":49,"value":710},"Street Abbreviations:",{"type":49,"value":712}," \"Street\" ↔ \"St\" ↔ \"St.\"",{"type":44,"tag":81,"props":714,"children":715},{},[716,721],{"type":44,"tag":85,"props":717,"children":718},{},[719],{"type":49,"value":720},"Direction Abbreviations:",{"type":49,"value":722}," \"North\" ↔ \"N\" ↔ \"N.\"",{"type":44,"tag":81,"props":724,"children":725},{},[726,731],{"type":44,"tag":85,"props":727,"children":728},{},[729],{"type":49,"value":730},"Building\u002FSuite Handling:",{"type":49,"value":732}," \"123 Main St Suite 100\" ↔ \"123 Main St\"",{"type":44,"tag":81,"props":734,"children":735},{},[736,741],{"type":44,"tag":85,"props":737,"children":738},{},[739],{"type":49,"value":740},"Postal Code Normalization:",{"type":49,"value":742}," \"12345-6789\" ↔ \"12345\"",{"type":44,"tag":81,"props":744,"children":745},{},[746,751],{"type":44,"tag":85,"props":747,"children":748},{},[749],{"type":49,"value":750},"State Variations:",{"type":49,"value":752}," \"California\" ↔ \"CA\"",{"type":44,"tag":52,"props":754,"children":755},{},[756],{"type":44,"tag":85,"props":757,"children":758},{},[759],{"type":49,"value":760},"Address Normalization:",{"type":44,"tag":77,"props":762,"children":763},{},[764,769,774,779,784],{"type":44,"tag":81,"props":765,"children":766},{},[767],{"type":49,"value":768},"Standardize street type abbreviations",{"type":44,"tag":81,"props":770,"children":771},{},[772],{"type":49,"value":773},"Standardize direction prefixes\u002Fsuffixes",{"type":44,"tag":81,"props":775,"children":776},{},[777],{"type":49,"value":778},"Remove suite\u002Fapt\u002Funit information for base comparison",{"type":44,"tag":81,"props":780,"children":781},{},[782],{"type":49,"value":783},"Normalize postal code to 5 digits",{"type":44,"tag":81,"props":785,"children":786},{},[787],{"type":49,"value":788},"Standardize state to 2-letter code",{"type":44,"tag":130,"props":790,"children":792},{"id":791},"step-4-score-and-rank-potential-duplicates",[793],{"type":49,"value":794},"Step 4: Score and Rank Potential Duplicates",{"type":44,"tag":52,"props":796,"children":797},{},[798,803],{"type":44,"tag":85,"props":799,"children":800},{},[801],{"type":49,"value":802},"Composite Scoring Model:",{"type":49,"value":804},"\nCalculate overall duplicate probability using weighted scores:",{"type":44,"tag":401,"props":806,"children":807},{},[808,834],{"type":44,"tag":405,"props":809,"children":810},{},[811],{"type":44,"tag":409,"props":812,"children":813},{},[814,819,824,829],{"type":44,"tag":413,"props":815,"children":816},{},[817],{"type":49,"value":818},"Field Type",{"type":44,"tag":413,"props":820,"children":821},{},[822],{"type":49,"value":823},"Weight (Accounts)",{"type":44,"tag":413,"props":825,"children":826},{},[827],{"type":49,"value":828},"Weight (Contacts)",{"type":44,"tag":413,"props":830,"children":831},{},[832],{"type":49,"value":833},"Weight (Leads)",{"type":44,"tag":424,"props":835,"children":836},{},[837,859,880,901,922,944],{"type":44,"tag":409,"props":838,"children":839},{},[840,845,850,855],{"type":44,"tag":431,"props":841,"children":842},{},[843],{"type":49,"value":844},"Name",{"type":44,"tag":431,"props":846,"children":847},{},[848],{"type":49,"value":849},"35%",{"type":44,"tag":431,"props":851,"children":852},{},[853],{"type":49,"value":854},"30%",{"type":44,"tag":431,"props":856,"children":857},{},[858],{"type":49,"value":854},{"type":44,"tag":409,"props":860,"children":861},{},[862,867,872,876],{"type":44,"tag":431,"props":863,"children":864},{},[865],{"type":49,"value":866},"Email",{"type":44,"tag":431,"props":868,"children":869},{},[870],{"type":49,"value":871},"25%",{"type":44,"tag":431,"props":873,"children":874},{},[875],{"type":49,"value":854},{"type":44,"tag":431,"props":877,"children":878},{},[879],{"type":49,"value":854},{"type":44,"tag":409,"props":881,"children":882},{},[883,888,893,897],{"type":44,"tag":431,"props":884,"children":885},{},[886],{"type":49,"value":887},"Phone",{"type":44,"tag":431,"props":889,"children":890},{},[891],{"type":49,"value":892},"20%",{"type":44,"tag":431,"props":894,"children":895},{},[896],{"type":49,"value":892},{"type":44,"tag":431,"props":898,"children":899},{},[900],{"type":49,"value":892},{"type":44,"tag":409,"props":902,"children":903},{},[904,909,914,918],{"type":44,"tag":431,"props":905,"children":906},{},[907],{"type":49,"value":908},"Address",{"type":44,"tag":431,"props":910,"children":911},{},[912],{"type":49,"value":913},"15%",{"type":44,"tag":431,"props":915,"children":916},{},[917],{"type":49,"value":913},{"type":44,"tag":431,"props":919,"children":920},{},[921],{"type":49,"value":913},{"type":44,"tag":409,"props":923,"children":924},{},[925,930,935,940],{"type":44,"tag":431,"props":926,"children":927},{},[928],{"type":49,"value":929},"Website",{"type":44,"tag":431,"props":931,"children":932},{},[933],{"type":49,"value":934},"5%",{"type":44,"tag":431,"props":936,"children":937},{},[938],{"type":49,"value":939},"-",{"type":44,"tag":431,"props":941,"children":942},{},[943],{"type":49,"value":934},{"type":44,"tag":409,"props":945,"children":946},{},[947,952,956,960],{"type":44,"tag":431,"props":948,"children":949},{},[950],{"type":49,"value":951},"Company (for contacts)",{"type":44,"tag":431,"props":953,"children":954},{},[955],{"type":49,"value":939},{"type":44,"tag":431,"props":957,"children":958},{},[959],{"type":49,"value":934},{"type":44,"tag":431,"props":961,"children":962},{},[963],{"type":49,"value":939},{"type":44,"tag":52,"props":965,"children":966},{},[967],{"type":44,"tag":85,"props":968,"children":969},{},[970],{"type":49,"value":971},"Score Thresholds:",{"type":44,"tag":101,"props":973,"children":974},{},[975,985,995],{"type":44,"tag":81,"props":976,"children":977},{},[978,983],{"type":44,"tag":85,"props":979,"children":980},{},[981],{"type":49,"value":982},"High Confidence (90-100%):",{"type":49,"value":984}," Almost certainly duplicates",{"type":44,"tag":81,"props":986,"children":987},{},[988,993],{"type":44,"tag":85,"props":989,"children":990},{},[991],{"type":49,"value":992},"Medium Confidence (75-89%):",{"type":49,"value":994}," Likely duplicates, review recommended",{"type":44,"tag":81,"props":996,"children":997},{},[998,1003],{"type":44,"tag":85,"props":999,"children":1000},{},[1001],{"type":49,"value":1002},"Low Confidence (60-74%):",{"type":49,"value":1004}," Possible duplicates, investigate",{"type":44,"tag":130,"props":1006,"children":1008},{"id":1007},"step-5-group-and-present-duplicate-sets",[1009],{"type":49,"value":1010},"Step 5: Group and Present Duplicate Sets",{"type":44,"tag":52,"props":1012,"children":1013},{},[1014],{"type":44,"tag":85,"props":1015,"children":1016},{},[1017],{"type":49,"value":1018},"Organize Results:",{"type":44,"tag":150,"props":1020,"children":1023},{"className":1021,"code":1022,"language":49},[153],"Duplicate Set 1 (High Confidence - 95% match):\n├── Record A: Contoso Inc. (accountid: xxx)\n│   ├── Phone: (555) 123-4567\n│   ├── Email: info@contoso.com\n│   └── Address: 123 Main Street, Seattle, WA\n└── Record B: Contoso Corporation (accountid: yyy)\n    ├── Phone: 555.123.4567\n    ├── Email: sales@contoso.com\n    └── Address: 123 Main St, Seattle, WA 98101\n\nMatching Signals:\n- Company name: 92% similar (legal suffix variation)\n- Phone: 100% match (format difference only)\n- Address: 95% match (abbreviation variation)\n",[1024],{"type":44,"tag":157,"props":1025,"children":1026},{"__ignoreMap":159},[1027],{"type":49,"value":1022},{"type":44,"tag":130,"props":1029,"children":1031},{"id":1030},"step-6-provide-actionable-recommendations",[1032],{"type":49,"value":1033},"Step 6: Provide Actionable Recommendations",{"type":44,"tag":52,"props":1035,"children":1036},{},[1037],{"type":44,"tag":85,"props":1038,"children":1039},{},[1040],{"type":49,"value":1041},"For Each Duplicate Set, Recommend:",{"type":44,"tag":77,"props":1043,"children":1044},{},[1045,1071,1097],{"type":44,"tag":81,"props":1046,"children":1047},{},[1048,1053],{"type":44,"tag":85,"props":1049,"children":1050},{},[1051],{"type":49,"value":1052},"Merge Recommendation:",{"type":44,"tag":101,"props":1054,"children":1055},{},[1056,1061,1066],{"type":44,"tag":81,"props":1057,"children":1058},{},[1059],{"type":49,"value":1060},"Identify the \"surviving\" record (more complete, older, or more activity)",{"type":44,"tag":81,"props":1062,"children":1063},{},[1064],{"type":49,"value":1065},"List fields to preserve from each record",{"type":44,"tag":81,"props":1067,"children":1068},{},[1069],{"type":49,"value":1070},"Identify child records that would need reassignment",{"type":44,"tag":81,"props":1072,"children":1073},{},[1074,1079],{"type":44,"tag":85,"props":1075,"children":1076},{},[1077],{"type":49,"value":1078},"Activity Analysis:",{"type":44,"tag":101,"props":1080,"children":1081},{},[1082,1087,1092],{"type":44,"tag":81,"props":1083,"children":1084},{},[1085],{"type":49,"value":1086},"Count activities on each record",{"type":44,"tag":81,"props":1088,"children":1089},{},[1090],{"type":49,"value":1091},"Identify which record has more recent engagement",{"type":44,"tag":81,"props":1093,"children":1094},{},[1095],{"type":49,"value":1096},"Flag if merging would consolidate significant history",{"type":44,"tag":81,"props":1098,"children":1099},{},[1100,1105],{"type":44,"tag":85,"props":1101,"children":1102},{},[1103],{"type":49,"value":1104},"Relationship Impact:",{"type":44,"tag":101,"props":1106,"children":1107},{},[1108,1113,1118],{"type":44,"tag":81,"props":1109,"children":1110},{},[1111],{"type":49,"value":1112},"List opportunities linked to each account",{"type":44,"tag":81,"props":1114,"children":1115},{},[1116],{"type":49,"value":1117},"Count contacts under each account",{"type":44,"tag":81,"props":1119,"children":1120},{},[1121],{"type":49,"value":1122},"Identify potential data loss risks",{"type":44,"tag":52,"props":1124,"children":1125},{},[1126],{"type":44,"tag":85,"props":1127,"children":1128},{},[1129],{"type":49,"value":1130},"Output Format:",{"type":44,"tag":150,"props":1132,"children":1135},{"className":1133,"code":1134,"language":49},[153],"DUPLICATE DETECTION SUMMARY\n===========================\n\nScan Parameters:\n- Table: Account\n- Records Scanned: 5,432\n- Date Range: All active records\n\nResults:\n- High Confidence Duplicates: 23 sets (46 records)\n- Medium Confidence Duplicates: 45 sets (98 records)\n- Low Confidence Duplicates: 12 sets (26 records)\n\nTOP PRIORITY DUPLICATES (High Confidence):\n\n1. [Account] Contoso Inc. ↔ Contoso Corporation\n   Match Score: 95%\n   Recommendation: Merge into \"Contoso Inc.\" (more activity)\n   Impact: 3 opportunities, 12 contacts would be consolidated\n   \n2. [Contact] Bob Smith ↔ Robert Smith (both at Contoso)\n   Match Score: 92%\n   Recommendation: Merge into \"Robert Smith\" (more complete record)\n   Impact: 8 activities would be consolidated\n\n3. [Lead] ABC Manufacturing ↔ A.B.C. Mfg Company\n   Match Score: 91%\n   Recommendation: Review - may be parent\u002Fsubsidiary\n   Impact: Different addresses - verify relationship first\n",[1136],{"type":44,"tag":157,"props":1137,"children":1138},{"__ignoreMap":159},[1139],{"type":49,"value":1134},{"type":44,"tag":130,"props":1141,"children":1143},{"id":1142},"step-7-execute-merge-if-requested",[1144],{"type":49,"value":1145},"Step 7: Execute Merge (If Requested)",{"type":44,"tag":52,"props":1147,"children":1148},{},[1149],{"type":49,"value":1150},"If user wants to proceed with merge:",{"type":44,"tag":77,"props":1152,"children":1153},{},[1154,1175,1201,1227],{"type":44,"tag":81,"props":1155,"children":1156},{},[1157,1162],{"type":44,"tag":85,"props":1158,"children":1159},{},[1160],{"type":49,"value":1161},"Document Current State:",{"type":44,"tag":101,"props":1163,"children":1164},{},[1165,1170],{"type":44,"tag":81,"props":1166,"children":1167},{},[1168],{"type":49,"value":1169},"Export both records' data",{"type":44,"tag":81,"props":1171,"children":1172},{},[1173],{"type":49,"value":1174},"List all child records",{"type":44,"tag":81,"props":1176,"children":1177},{},[1178,1183],{"type":44,"tag":85,"props":1179,"children":1180},{},[1181],{"type":49,"value":1182},"Update Child Records:",{"type":44,"tag":101,"props":1184,"children":1185},{},[1186,1191,1196],{"type":44,"tag":81,"props":1187,"children":1188},{},[1189],{"type":49,"value":1190},"Reassign contacts to surviving account",{"type":44,"tag":81,"props":1192,"children":1193},{},[1194],{"type":49,"value":1195},"Update opportunity regardingobjectid",{"type":44,"tag":81,"props":1197,"children":1198},{},[1199],{"type":49,"value":1200},"Move activities to surviving record",{"type":44,"tag":81,"props":1202,"children":1203},{},[1204,1209],{"type":44,"tag":85,"props":1205,"children":1206},{},[1207],{"type":49,"value":1208},"Merge Field Values:",{"type":44,"tag":101,"props":1210,"children":1211},{},[1212,1217,1222],{"type":44,"tag":81,"props":1213,"children":1214},{},[1215],{"type":49,"value":1216},"Keep most complete values",{"type":44,"tag":81,"props":1218,"children":1219},{},[1220],{"type":49,"value":1221},"Concatenate notes\u002Fdescriptions if both have content",{"type":44,"tag":81,"props":1223,"children":1224},{},[1225],{"type":49,"value":1226},"Preserve all email addresses and phone numbers",{"type":44,"tag":81,"props":1228,"children":1229},{},[1230,1235],{"type":44,"tag":85,"props":1231,"children":1232},{},[1233],{"type":49,"value":1234},"Deactivate Duplicate:",{"type":44,"tag":101,"props":1236,"children":1237},{},[1238,1243],{"type":44,"tag":81,"props":1239,"children":1240},{},[1241],{"type":49,"value":1242},"Set statecode = 1 (Inactive) on duplicate record",{"type":44,"tag":81,"props":1244,"children":1245},{},[1246],{"type":49,"value":1247},"Add note explaining it was merged",{"type":44,"tag":65,"props":1249,"children":1251},{"id":1250},"dataverse-tables-used",[1252],{"type":49,"value":1253},"Dataverse Tables Used",{"type":44,"tag":401,"props":1255,"children":1256},{},[1257,1273],{"type":44,"tag":405,"props":1258,"children":1259},{},[1260],{"type":44,"tag":409,"props":1261,"children":1262},{},[1263,1268],{"type":44,"tag":413,"props":1264,"children":1265},{},[1266],{"type":49,"value":1267},"Table",{"type":44,"tag":413,"props":1269,"children":1270},{},[1271],{"type":49,"value":1272},"Purpose",{"type":44,"tag":424,"props":1274,"children":1275},{},[1276,1293,1310,1327,1344,1360],{"type":44,"tag":409,"props":1277,"children":1278},{},[1279,1288],{"type":44,"tag":431,"props":1280,"children":1281},{},[1282],{"type":44,"tag":157,"props":1283,"children":1285},{"className":1284},[],[1286],{"type":49,"value":1287},"account",{"type":44,"tag":431,"props":1289,"children":1290},{},[1291],{"type":49,"value":1292},"Primary entity for company duplicates",{"type":44,"tag":409,"props":1294,"children":1295},{},[1296,1305],{"type":44,"tag":431,"props":1297,"children":1298},{},[1299],{"type":44,"tag":157,"props":1300,"children":1302},{"className":1301},[],[1303],{"type":49,"value":1304},"contact",{"type":44,"tag":431,"props":1306,"children":1307},{},[1308],{"type":49,"value":1309},"Primary entity for person duplicates",{"type":44,"tag":409,"props":1311,"children":1312},{},[1313,1322],{"type":44,"tag":431,"props":1314,"children":1315},{},[1316],{"type":44,"tag":157,"props":1317,"children":1319},{"className":1318},[],[1320],{"type":49,"value":1321},"lead",{"type":44,"tag":431,"props":1323,"children":1324},{},[1325],{"type":49,"value":1326},"Primary entity for lead duplicates",{"type":44,"tag":409,"props":1328,"children":1329},{},[1330,1339],{"type":44,"tag":431,"props":1331,"children":1332},{},[1333],{"type":44,"tag":157,"props":1334,"children":1336},{"className":1335},[],[1337],{"type":49,"value":1338},"opportunity",{"type":44,"tag":431,"props":1340,"children":1341},{},[1342],{"type":49,"value":1343},"Check for linked opportunities",{"type":44,"tag":409,"props":1345,"children":1346},{},[1347,1356],{"type":44,"tag":431,"props":1348,"children":1349},{},[1350],{"type":44,"tag":157,"props":1351,"children":1353},{"className":1352},[],[1354],{"type":49,"value":1355},"activitypointer",{"type":44,"tag":431,"props":1357,"children":1358},{},[1359],{"type":49,"value":1086},{"type":44,"tag":409,"props":1361,"children":1362},{},[1363,1372],{"type":44,"tag":431,"props":1364,"children":1365},{},[1366],{"type":44,"tag":157,"props":1367,"children":1369},{"className":1368},[],[1370],{"type":49,"value":1371},"annotation",{"type":44,"tag":431,"props":1373,"children":1374},{},[1375],{"type":49,"value":1376},"Document merge decisions",{"type":44,"tag":65,"props":1378,"children":1380},{"id":1379},"key-fields-reference",[1381],{"type":49,"value":1382},"Key Fields Reference",{"type":44,"tag":52,"props":1384,"children":1385},{},[1386],{"type":44,"tag":85,"props":1387,"children":1388},{},[1389],{"type":49,"value":1390},"account:",{"type":44,"tag":101,"props":1392,"children":1393},{},[1394,1405,1416,1435,1446,1478,1489,1500],{"type":44,"tag":81,"props":1395,"children":1396},{},[1397,1403],{"type":44,"tag":157,"props":1398,"children":1400},{"className":1399},[],[1401],{"type":49,"value":1402},"name",{"type":49,"value":1404}," (NVARCHAR 160) - Company name for matching",{"type":44,"tag":81,"props":1406,"children":1407},{},[1408,1414],{"type":44,"tag":157,"props":1409,"children":1411},{"className":1410},[],[1412],{"type":49,"value":1413},"accountnumber",{"type":49,"value":1415}," (NVARCHAR 20) - Account number for exact matching",{"type":44,"tag":81,"props":1417,"children":1418},{},[1419,1425,1427,1433],{"type":44,"tag":157,"props":1420,"children":1422},{"className":1421},[],[1423],{"type":49,"value":1424},"telephone1",{"type":49,"value":1426},", ",{"type":44,"tag":157,"props":1428,"children":1430},{"className":1429},[],[1431],{"type":49,"value":1432},"telephone2",{"type":49,"value":1434}," (PHONE) - Phone matching",{"type":44,"tag":81,"props":1436,"children":1437},{},[1438,1444],{"type":44,"tag":157,"props":1439,"children":1441},{"className":1440},[],[1442],{"type":49,"value":1443},"emailaddress1",{"type":49,"value":1445}," (EMAIL) - Email matching",{"type":44,"tag":81,"props":1447,"children":1448},{},[1449,1455,1456,1462,1463,1469,1470,1476],{"type":44,"tag":157,"props":1450,"children":1452},{"className":1451},[],[1453],{"type":49,"value":1454},"address1_line1",{"type":49,"value":1426},{"type":44,"tag":157,"props":1457,"children":1459},{"className":1458},[],[1460],{"type":49,"value":1461},"address1_city",{"type":49,"value":1426},{"type":44,"tag":157,"props":1464,"children":1466},{"className":1465},[],[1467],{"type":49,"value":1468},"address1_stateorprovince",{"type":49,"value":1426},{"type":44,"tag":157,"props":1471,"children":1473},{"className":1472},[],[1474],{"type":49,"value":1475},"address1_postalcode",{"type":49,"value":1477}," - Address matching",{"type":44,"tag":81,"props":1479,"children":1480},{},[1481,1487],{"type":44,"tag":157,"props":1482,"children":1484},{"className":1483},[],[1485],{"type":49,"value":1486},"websiteurl",{"type":49,"value":1488}," (URL) - Website matching",{"type":44,"tag":81,"props":1490,"children":1491},{},[1492,1498],{"type":44,"tag":157,"props":1493,"children":1495},{"className":1494},[],[1496],{"type":49,"value":1497},"parentaccountid",{"type":49,"value":1499}," (LOOKUP → account) - Parent company relationship",{"type":44,"tag":81,"props":1501,"children":1502},{},[1503,1509],{"type":44,"tag":157,"props":1504,"children":1506},{"className":1505},[],[1507],{"type":49,"value":1508},"statecode",{"type":49,"value":1510}," (STATE) - Active(0), Inactive(1) - Filter active only",{"type":44,"tag":52,"props":1512,"children":1513},{},[1514],{"type":44,"tag":85,"props":1515,"children":1516},{},[1517],{"type":49,"value":1518},"contact:",{"type":44,"tag":101,"props":1520,"children":1521},{},[1522,1540,1551,1567,1583,1594,1605,1616],{"type":44,"tag":81,"props":1523,"children":1524},{},[1525,1531,1532,1538],{"type":44,"tag":157,"props":1526,"children":1528},{"className":1527},[],[1529],{"type":49,"value":1530},"firstname",{"type":49,"value":1426},{"type":44,"tag":157,"props":1533,"children":1535},{"className":1534},[],[1536],{"type":49,"value":1537},"lastname",{"type":49,"value":1539}," (NVARCHAR) - Name components",{"type":44,"tag":81,"props":1541,"children":1542},{},[1543,1549],{"type":44,"tag":157,"props":1544,"children":1546},{"className":1545},[],[1547],{"type":49,"value":1548},"fullname",{"type":49,"value":1550}," (NVARCHAR) - Calculated full name",{"type":44,"tag":81,"props":1552,"children":1553},{},[1554,1559,1560,1566],{"type":44,"tag":157,"props":1555,"children":1557},{"className":1556},[],[1558],{"type":49,"value":1443},{"type":49,"value":1426},{"type":44,"tag":157,"props":1561,"children":1563},{"className":1562},[],[1564],{"type":49,"value":1565},"emailaddress2",{"type":49,"value":1445},{"type":44,"tag":81,"props":1568,"children":1569},{},[1570,1575,1576,1582],{"type":44,"tag":157,"props":1571,"children":1573},{"className":1572},[],[1574],{"type":49,"value":1424},{"type":49,"value":1426},{"type":44,"tag":157,"props":1577,"children":1579},{"className":1578},[],[1580],{"type":49,"value":1581},"mobilephone",{"type":49,"value":1434},{"type":44,"tag":81,"props":1584,"children":1585},{},[1586,1592],{"type":44,"tag":157,"props":1587,"children":1589},{"className":1588},[],[1590],{"type":49,"value":1591},"accountid",{"type":49,"value":1593}," (LOOKUP → account) - Parent account",{"type":44,"tag":81,"props":1595,"children":1596},{},[1597,1603],{"type":44,"tag":157,"props":1598,"children":1600},{"className":1599},[],[1601],{"type":49,"value":1602},"jobtitle",{"type":49,"value":1604}," (NVARCHAR) - Additional matching signal",{"type":44,"tag":81,"props":1606,"children":1607},{},[1608,1614],{"type":44,"tag":157,"props":1609,"children":1611},{"className":1610},[],[1612],{"type":49,"value":1613},"department",{"type":49,"value":1615}," (NVARCHAR) - Department for disambiguation",{"type":44,"tag":81,"props":1617,"children":1618},{},[1619,1624],{"type":44,"tag":157,"props":1620,"children":1622},{"className":1621},[],[1623],{"type":49,"value":1508},{"type":49,"value":1625}," (STATE) - Active(0), Inactive(1)",{"type":44,"tag":52,"props":1627,"children":1628},{},[1629],{"type":44,"tag":85,"props":1630,"children":1631},{},[1632],{"type":49,"value":1633},"lead:",{"type":44,"tag":101,"props":1635,"children":1636},{},[1637,1648,1670,1679,1694,1715,1724,1734],{"type":44,"tag":81,"props":1638,"children":1639},{},[1640,1646],{"type":44,"tag":157,"props":1641,"children":1643},{"className":1642},[],[1644],{"type":49,"value":1645},"companyname",{"type":49,"value":1647}," (NVARCHAR 100) - Company matching",{"type":44,"tag":81,"props":1649,"children":1650},{},[1651,1656,1657,1662,1663,1668],{"type":44,"tag":157,"props":1652,"children":1654},{"className":1653},[],[1655],{"type":49,"value":1530},{"type":49,"value":1426},{"type":44,"tag":157,"props":1658,"children":1660},{"className":1659},[],[1661],{"type":49,"value":1537},{"type":49,"value":1426},{"type":44,"tag":157,"props":1664,"children":1666},{"className":1665},[],[1667],{"type":49,"value":1548},{"type":49,"value":1669}," (NVARCHAR) - Name matching",{"type":44,"tag":81,"props":1671,"children":1672},{},[1673,1678],{"type":44,"tag":157,"props":1674,"children":1676},{"className":1675},[],[1677],{"type":49,"value":1443},{"type":49,"value":1445},{"type":44,"tag":81,"props":1680,"children":1681},{},[1682,1687,1688,1693],{"type":44,"tag":157,"props":1683,"children":1685},{"className":1684},[],[1686],{"type":49,"value":1424},{"type":49,"value":1426},{"type":44,"tag":157,"props":1689,"children":1691},{"className":1690},[],[1692],{"type":49,"value":1581},{"type":49,"value":1434},{"type":44,"tag":81,"props":1695,"children":1696},{},[1697,1702,1703,1708,1709,1714],{"type":44,"tag":157,"props":1698,"children":1700},{"className":1699},[],[1701],{"type":49,"value":1454},{"type":49,"value":1426},{"type":44,"tag":157,"props":1704,"children":1706},{"className":1705},[],[1707],{"type":49,"value":1461},{"type":49,"value":1426},{"type":44,"tag":157,"props":1710,"children":1712},{"className":1711},[],[1713],{"type":49,"value":1468},{"type":49,"value":1477},{"type":44,"tag":81,"props":1716,"children":1717},{},[1718,1723],{"type":44,"tag":157,"props":1719,"children":1721},{"className":1720},[],[1722],{"type":49,"value":1486},{"type":49,"value":1488},{"type":44,"tag":81,"props":1725,"children":1726},{},[1727,1732],{"type":44,"tag":157,"props":1728,"children":1730},{"className":1729},[],[1731],{"type":49,"value":1508},{"type":49,"value":1733}," (STATE) - Open(0), Qualified(1), Disqualified(2)",{"type":44,"tag":81,"props":1735,"children":1736},{},[1737,1743,1745,1751,1753,1758,1760],{"type":44,"tag":157,"props":1738,"children":1740},{"className":1739},[],[1741],{"type":49,"value":1742},"statuscode",{"type":49,"value":1744}," (STATUS) - New(1), Contacted(2) ",{"type":44,"tag":1746,"props":1747,"children":1748},"span",{},[1749],{"type":49,"value":1750},"Open",{"type":49,"value":1752},"; Qualified(3) ",{"type":44,"tag":1746,"props":1754,"children":1755},{},[1756],{"type":49,"value":1757},"Qualified",{"type":49,"value":1759},"; Lost(4), Cannot Contact(5), No Longer Interested(6), Canceled(7) ",{"type":44,"tag":1746,"props":1761,"children":1762},{},[1763],{"type":49,"value":1764},"Disqualified",{"type":44,"tag":65,"props":1766,"children":1768},{"id":1767},"fuzzy-matching-best-practices",[1769],{"type":49,"value":1770},"Fuzzy Matching Best Practices",{"type":44,"tag":77,"props":1772,"children":1773},{},[1774,1800,1821,1847],{"type":44,"tag":81,"props":1775,"children":1776},{},[1777,1782],{"type":44,"tag":85,"props":1778,"children":1779},{},[1780],{"type":49,"value":1781},"Always normalize before comparing:",{"type":44,"tag":101,"props":1783,"children":1784},{},[1785,1790,1795],{"type":44,"tag":81,"props":1786,"children":1787},{},[1788],{"type":49,"value":1789},"Lowercase all text",{"type":44,"tag":81,"props":1791,"children":1792},{},[1793],{"type":49,"value":1794},"Remove punctuation",{"type":44,"tag":81,"props":1796,"children":1797},{},[1798],{"type":49,"value":1799},"Standardize abbreviations",{"type":44,"tag":81,"props":1801,"children":1802},{},[1803,1808],{"type":44,"tag":85,"props":1804,"children":1805},{},[1806],{"type":49,"value":1807},"Use multiple matching signals:",{"type":44,"tag":101,"props":1809,"children":1810},{},[1811,1816],{"type":44,"tag":81,"props":1812,"children":1813},{},[1814],{"type":49,"value":1815},"Never flag as duplicate based on single field match",{"type":44,"tag":81,"props":1817,"children":1818},{},[1819],{"type":49,"value":1820},"Require 2+ strong signals for high confidence",{"type":44,"tag":81,"props":1822,"children":1823},{},[1824,1829],{"type":44,"tag":85,"props":1825,"children":1826},{},[1827],{"type":49,"value":1828},"Consider business context:",{"type":44,"tag":101,"props":1830,"children":1831},{},[1832,1837,1842],{"type":44,"tag":81,"props":1833,"children":1834},{},[1835],{"type":49,"value":1836},"Same company name in different cities may be branches",{"type":44,"tag":81,"props":1838,"children":1839},{},[1840],{"type":49,"value":1841},"Same person name at different companies = different people",{"type":44,"tag":81,"props":1843,"children":1844},{},[1845],{"type":49,"value":1846},"Parent\u002Fsubsidiary relationships are not duplicates",{"type":44,"tag":81,"props":1848,"children":1849},{},[1850,1855],{"type":44,"tag":85,"props":1851,"children":1852},{},[1853],{"type":49,"value":1854},"Handle false positives:",{"type":44,"tag":101,"props":1856,"children":1857},{},[1858,1863,1868],{"type":44,"tag":81,"props":1859,"children":1860},{},[1861],{"type":49,"value":1862},"\"John Smith\" is common - require additional signals",{"type":44,"tag":81,"props":1864,"children":1865},{},[1866],{"type":49,"value":1867},"Generic company names need more verification",{"type":44,"tag":81,"props":1869,"children":1870},{},[1871],{"type":49,"value":1872},"Allow user to mark \"Not a Duplicate\"",{"type":44,"tag":58,"props":1874,"children":1876},{"id":1875},"examples",[1877],{"type":49,"value":1878},"Examples",{"type":44,"tag":65,"props":1880,"children":1882},{"id":1881},"example-1-find-account-duplicates",[1883],{"type":49,"value":1884},"Example 1: Find Account Duplicates",{"type":44,"tag":52,"props":1886,"children":1887},{},[1888,1893],{"type":44,"tag":85,"props":1889,"children":1890},{},[1891],{"type":49,"value":1892},"User says:",{"type":49,"value":1894}," \"Check for duplicate accounts in my CRM\"",{"type":44,"tag":52,"props":1896,"children":1897},{},[1898],{"type":44,"tag":85,"props":1899,"children":1900},{},[1901],{"type":49,"value":1902},"Actions:",{"type":44,"tag":77,"props":1904,"children":1905},{},[1906,1911,1916,1921],{"type":44,"tag":81,"props":1907,"children":1908},{},[1909],{"type":49,"value":1910},"Query all active accounts from Dataverse",{"type":44,"tag":81,"props":1912,"children":1913},{},[1914],{"type":49,"value":1915},"Apply fuzzy matching on name, phone, email, address",{"type":44,"tag":81,"props":1917,"children":1918},{},[1919],{"type":49,"value":1920},"Group potential duplicates by confidence score",{"type":44,"tag":81,"props":1922,"children":1923},{},[1924],{"type":49,"value":1925},"Present high-confidence matches first",{"type":44,"tag":52,"props":1927,"children":1928},{},[1929],{"type":44,"tag":85,"props":1930,"children":1931},{},[1932],{"type":49,"value":1933},"Result:",{"type":44,"tag":150,"props":1935,"children":1938},{"className":1936,"code":1937,"language":49},[153],"DUPLICATE DETECTION SUMMARY\n- Records Scanned: 5,432 accounts\n- High Confidence Duplicates: 23 sets\n- Recommendation: Start with \"Contoso Inc.\" ↔ \"Contoso Corporation\" (95% match)\n",[1939],{"type":44,"tag":157,"props":1940,"children":1941},{"__ignoreMap":159},[1942],{"type":49,"value":1937},{"type":44,"tag":65,"props":1944,"children":1946},{"id":1945},"example-2-check-specific-record-for-duplicates",[1947],{"type":49,"value":1948},"Example 2: Check Specific Record for Duplicates",{"type":44,"tag":52,"props":1950,"children":1951},{},[1952,1956],{"type":44,"tag":85,"props":1953,"children":1954},{},[1955],{"type":49,"value":1892},{"type":49,"value":1957}," \"Find duplicates of Fabrikam Inc.\"",{"type":44,"tag":52,"props":1959,"children":1960},{},[1961],{"type":44,"tag":85,"props":1962,"children":1963},{},[1964],{"type":49,"value":1902},{"type":44,"tag":77,"props":1966,"children":1967},{},[1968,1973,1978,1983],{"type":44,"tag":81,"props":1969,"children":1970},{},[1971],{"type":49,"value":1972},"Retrieve Fabrikam Inc. record details",{"type":44,"tag":81,"props":1974,"children":1975},{},[1976],{"type":49,"value":1977},"Compare against all other active accounts",{"type":44,"tag":81,"props":1979,"children":1980},{},[1981],{"type":49,"value":1982},"Apply weighted scoring across all matching fields",{"type":44,"tag":81,"props":1984,"children":1985},{},[1986],{"type":49,"value":1987},"Return ranked list of potential matches",{"type":44,"tag":52,"props":1989,"children":1990},{},[1991],{"type":44,"tag":85,"props":1992,"children":1993},{},[1994],{"type":49,"value":1933},{"type":44,"tag":150,"props":1996,"children":1999},{"className":1997,"code":1998,"language":49},[153],"Potential duplicates of \"Fabrikam Inc.\":\n1. Fabrikam Incorporated (87% match) - Same phone, similar address\n2. The Fabrikam Group (72% match) - Same website domain\n",[2000],{"type":44,"tag":157,"props":2001,"children":2002},{"__ignoreMap":159},[2003],{"type":49,"value":1998},{"type":44,"tag":65,"props":2005,"children":2007},{"id":2006},"example-3-contact-duplicate-with-nickname",[2008],{"type":49,"value":2009},"Example 3: Contact Duplicate with Nickname",{"type":44,"tag":52,"props":2011,"children":2012},{},[2013,2017],{"type":44,"tag":85,"props":2014,"children":2015},{},[2016],{"type":49,"value":1892},{"type":49,"value":2018}," \"Are there duplicate contacts named Bob at Contoso?\"",{"type":44,"tag":52,"props":2020,"children":2021},{},[2022],{"type":44,"tag":85,"props":2023,"children":2024},{},[2025],{"type":49,"value":1902},{"type":44,"tag":77,"props":2027,"children":2028},{},[2029,2034,2039,2044],{"type":44,"tag":81,"props":2030,"children":2031},{},[2032],{"type":49,"value":2033},"Search contacts at Contoso account",{"type":44,"tag":81,"props":2035,"children":2036},{},[2037],{"type":49,"value":2038},"Expand \"Bob\" to include Robert, Rob, Bobby",{"type":44,"tag":81,"props":2040,"children":2041},{},[2042],{"type":49,"value":2043},"Compare phone and email across matches",{"type":44,"tag":81,"props":2045,"children":2046},{},[2047],{"type":49,"value":2048},"Present findings with merge recommendation",{"type":44,"tag":52,"props":2050,"children":2051},{},[2052],{"type":44,"tag":85,"props":2053,"children":2054},{},[2055],{"type":49,"value":1933},{"type":44,"tag":150,"props":2057,"children":2060},{"className":2058,"code":2059,"language":49},[153],"Found potential duplicate:\n- \"Bob Smith\" (created 2024-01-15) - 3 activities\n- \"Robert Smith\" (created 2023-06-01) - 12 activities\nRecommendation: Merge into \"Robert Smith\" (more complete record)\n",[2061],{"type":44,"tag":157,"props":2062,"children":2063},{"__ignoreMap":159},[2064],{"type":49,"value":2059},{"type":44,"tag":58,"props":2066,"children":2068},{"id":2067},"troubleshooting",[2069],{"type":49,"value":2070},"Troubleshooting",{"type":44,"tag":65,"props":2072,"children":2074},{"id":2073},"error-too-many-potential-duplicates-returned",[2075],{"type":49,"value":2076},"Error: Too many potential duplicates returned",{"type":44,"tag":52,"props":2078,"children":2079},{},[2080,2085,2087],{"type":44,"tag":85,"props":2081,"children":2082},{},[2083],{"type":49,"value":2084},"Cause:",{"type":49,"value":2086}," Matching threshold too relaxed or common names in dataset\n",{"type":44,"tag":85,"props":2088,"children":2089},{},[2090],{"type":49,"value":2091},"Solution:",{"type":44,"tag":101,"props":2093,"children":2094},{},[2095,2100,2105],{"type":44,"tag":81,"props":2096,"children":2097},{},[2098],{"type":49,"value":2099},"Increase confidence threshold to 85%+",{"type":44,"tag":81,"props":2101,"children":2102},{},[2103],{"type":49,"value":2104},"Require 2+ matching signals for flagging",{"type":44,"tag":81,"props":2106,"children":2107},{},[2108],{"type":49,"value":2109},"Filter by specific criteria (industry, geography)",{"type":44,"tag":65,"props":2111,"children":2113},{"id":2112},"error-known-duplicates-not-detected",[2114],{"type":49,"value":2115},"Error: Known duplicates not detected",{"type":44,"tag":52,"props":2117,"children":2118},{},[2119,2123,2125],{"type":44,"tag":85,"props":2120,"children":2121},{},[2122],{"type":49,"value":2084},{"type":49,"value":2124}," Significant spelling variations or missing data in fields\n",{"type":44,"tag":85,"props":2126,"children":2127},{},[2128],{"type":49,"value":2091},{"type":44,"tag":101,"props":2130,"children":2131},{},[2132,2137,2142],{"type":44,"tag":81,"props":2133,"children":2134},{},[2135],{"type":49,"value":2136},"Check if key fields (email, phone) are populated",{"type":44,"tag":81,"props":2138,"children":2139},{},[2140],{"type":49,"value":2141},"Review nickname mappings for person names",{"type":44,"tag":81,"props":2143,"children":2144},{},[2145],{"type":49,"value":2146},"Consider adding custom abbreviation rules",{"type":44,"tag":65,"props":2148,"children":2150},{"id":2149},"error-false-positives-flagged-as-duplicates",[2151],{"type":49,"value":2152},"Error: False positives flagged as duplicates",{"type":44,"tag":52,"props":2154,"children":2155},{},[2156,2160,2162],{"type":44,"tag":85,"props":2157,"children":2158},{},[2159],{"type":49,"value":2084},{"type":49,"value":2161}," Common names or parent\u002Fsubsidiary relationships\n",{"type":44,"tag":85,"props":2163,"children":2164},{},[2165],{"type":49,"value":2091},{"type":44,"tag":101,"props":2167,"children":2168},{},[2169,2174,2179],{"type":44,"tag":81,"props":2170,"children":2171},{},[2172],{"type":49,"value":2173},"Review address and account hierarchy",{"type":44,"tag":81,"props":2175,"children":2176},{},[2177],{"type":49,"value":2178},"Check if records are intentionally separate (branches, divisions)",{"type":44,"tag":81,"props":2180,"children":2181},{},[2182],{"type":49,"value":2183},"Mark as \"Not a Duplicate\" to exclude from future scans",{"type":44,"tag":65,"props":2185,"children":2187},{"id":2186},"fuzzy-matching-best-practices-1",[2188],{"type":49,"value":1770},{"items":2190,"total":2295},[2191,2210,2224,2237,2253,2267,2279],{"slug":2192,"name":2192,"fn":2193,"description":2194,"org":2195,"tags":2196,"stars":26,"repoUrl":27,"updatedAt":2209},"account-briefing-generator","generate account briefings for sales meetings","Generates meeting briefings by aggregating account info, contacts, opportunities, cases, and activity history into structured prep documents with talking points and discovery questions. Use when user says \"prep me for my call\", \"brief me on this account\", \"meeting prep\", \"I have a meeting with [company]\", \"account briefing\", \"customer briefing\", or \"prepare for customer meeting\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2197,2198,2199,2202,2203,2206],{"name":21,"slug":22,"type":15},{"name":24,"slug":25,"type":15},{"name":2200,"slug":2201,"type":15},"Meetings","meetings",{"name":9,"slug":8,"type":15},{"name":2204,"slug":2205,"type":15},"Sales","sales",{"name":2207,"slug":2208,"type":15},"Summarization","summarization","2026-04-06T18:36:32.277939",{"slug":2211,"name":2211,"fn":2212,"description":2213,"org":2214,"tags":2215,"stars":26,"repoUrl":27,"updatedAt":2223},"account-risk-early-warning","identify account churn risks from engagement signals","Identifies accounts showing warning signs of churn by analyzing activity trends, support cases, and engagement signals. Scores risk and prioritizes intervention targets. Use when user asks \"which accounts are at risk\", \"churn risk analysis\", \"find accounts that might leave\", \"customer health check\", \"at-risk customers\", \"retention warning signs\", or \"account health score\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2216,2217,2218,2219,2222],{"name":21,"slug":22,"type":15},{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":2220,"slug":2221,"type":15},"Risk Assessment","risk-assessment",{"name":2204,"slug":2205,"type":15},"2026-04-06T18:36:28.462732",{"slug":2225,"name":2225,"fn":2226,"description":2227,"org":2228,"tags":2229,"stars":26,"repoUrl":27,"updatedAt":2236},"competitive-intelligence","generate competitive intelligence from sales data","Analyzes opportunity data and activity notes to generate competitive intelligence including win\u002Floss rates by competitor, patterns, and rep-ready battlecard talking points. Use when user asks \"how are we doing against [competitor]\", \"competitive analysis\", \"competitor win rate\", \"battlecard for [competitor]\", \"competitive landscape\", \"why are we losing to [competitor]\", or \"competitor intelligence\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2230,2232,2233,2234,2235],{"name":2231,"slug":2225,"type":15},"Competitive Intelligence",{"name":21,"slug":22,"type":15},{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":2204,"slug":2205,"type":15},"2026-04-06T18:36:23.280253",{"slug":2238,"name":2238,"fn":2239,"description":2240,"org":2241,"tags":2242,"stars":26,"repoUrl":27,"updatedAt":2252},"create-an-asset","generate customized sales assets from Dataverse","Generates customized sales assets including one-pagers, proposals, executive summaries, ROI summaries, and mutual action plans from Dataverse context. Use when user says \"create a one-pager\", \"draft a proposal\", \"generate executive summary\", \"build ROI summary\", \"create mutual action plan\", \"sales asset for [account]\", \"proposal outline\", or \"customer-facing document\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2243,2246,2247,2250,2251],{"name":2244,"slug":2245,"type":15},"Content Creation","content-creation",{"name":24,"slug":25,"type":15},{"name":2248,"slug":2249,"type":15},"Marketing","marketing",{"name":9,"slug":8,"type":15},{"name":2204,"slug":2205,"type":15},"2026-04-06T18:36:24.562421",{"slug":2254,"name":2254,"fn":2255,"description":2256,"org":2257,"tags":2258,"stars":26,"repoUrl":27,"updatedAt":2266},"cross-sell-target-identifier","identify cross-sell targets from customer patterns","Analyzes successful product customers to identify patterns, then finds similar accounts that are good cross-sell candidates with fit scores and reasoning. Use when user asks \"who should I pitch this product to\", \"find cross-sell opportunities\", \"which customers should buy Product X\", \"identify upsell targets\", \"product expansion candidates\", or \"who else would buy this\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2259,2262,2263,2264,2265],{"name":2260,"slug":2261,"type":15},"Analytics","analytics",{"name":21,"slug":22,"type":15},{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":2204,"slug":2205,"type":15},"2026-04-06T18:36:37.380929",{"slug":2268,"name":2268,"fn":2269,"description":2270,"org":2271,"tags":2272,"stars":26,"repoUrl":27,"updatedAt":2278},"daily-briefing","prepare daily business briefings from Dataverse","Delivers a prioritized morning summary covering today's meetings, overdue tasks, pipeline alerts, and recommended actions from Dataverse. Use when user says \"what's on my plate today\", \"daily briefing\", \"morning summary\", \"what do I need to focus on today\", \"start my day\", \"daily digest\", \"today's priorities\", or \"what's happening today\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2273,2274,2275,2276,2277],{"name":21,"slug":22,"type":15},{"name":24,"slug":25,"type":15},{"name":9,"slug":8,"type":15},{"name":2204,"slug":2205,"type":15},{"name":2207,"slug":2208,"type":15},"2026-04-06T18:36:31.028078",{"slug":2280,"name":2280,"fn":2281,"description":2282,"org":2283,"tags":2284,"stars":26,"repoUrl":27,"updatedAt":2294},"draft-outreach","draft personalized sales outreach from Dataverse","Generates personalized outreach messages by pulling context from Dataverse records. Creates tailored emails for new prospects, re-engagement, follow-ups, or cross-sell. Use when user says \"draft an email to [contact]\", \"write outreach for\", \"help me reach out to\", \"compose email\", \"re-engage this contact\", \"follow-up email\", \"prospecting email\", or \"outreach message for\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2285,2286,2287,2289,2290,2293],{"name":21,"slug":22,"type":15},{"name":24,"slug":25,"type":15},{"name":866,"slug":2288,"type":15},"email",{"name":9,"slug":8,"type":15},{"name":2291,"slug":2292,"type":15},"Outreach","outreach",{"name":2204,"slug":2205,"type":15},"2026-04-06T18:36:36.103544",16,{"items":2297,"total":2488},[2298,2320,2341,2360,2375,2392,2403,2416,2431,2446,2463,2476],{"slug":2299,"name":2299,"fn":2300,"description":2301,"org":2302,"tags":2303,"stars":2317,"repoUrl":2318,"updatedAt":2319},"rushstack-best-practices","manage Rush monorepos with best practices","Provides best practices and guidance for working with Rush monorepos. Use when the user is working in a Rush-based repository, asks about Rush commands (install, update, build, rebuild), needs help with project selection, dependency management, build caching, subspace configuration, or troubleshooting Rush-specific issues.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2304,2307,2310,2311,2314],{"name":2305,"slug":2306,"type":15},"Engineering","engineering",{"name":2308,"slug":2309,"type":15},"Local Development","local-development",{"name":9,"slug":8,"type":15},{"name":2312,"slug":2313,"type":15},"Project Management","project-management",{"name":2315,"slug":2316,"type":15},"Rush","rush",6484,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Frushstack","2026-04-06T18:34:44.965032",{"slug":2321,"name":2321,"fn":2322,"description":2323,"org":2324,"tags":2325,"stars":2338,"repoUrl":2339,"updatedAt":2340},"azure-ai-agents-persistent-dotnet","build AI agents with Azure .NET SDK","Azure AI Agents Persistent SDK for .NET. Low-level SDK for creating and managing AI agents with threads, messages, runs, and tools. Use for agent CRUD, conversation threads, streaming responses, function calling, file search, and code interpreter. Triggers: \"PersistentAgentsClient\", \"persistent agents\", \"agent threads\", \"agent runs\", \"streaming agents\", \"function calling agents .NET\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2326,2329,2332,2335],{"name":2327,"slug":2328,"type":15},".NET","net",{"name":2330,"slug":2331,"type":15},"Agents","agents",{"name":2333,"slug":2334,"type":15},"Azure","azure",{"name":2336,"slug":2337,"type":15},"LLM","llm",2804,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fskills","2026-07-03T16:32:10.297433",{"slug":2342,"name":2342,"fn":2343,"description":2344,"org":2345,"tags":2346,"stars":2338,"repoUrl":2339,"updatedAt":2359},"azure-ai-anomalydetector-java","build anomaly detection applications with Java","Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate\u002Fmultivariate anomaly detection, time-series analysis, or AI-powered monitoring.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2347,2348,2349,2352,2355,2356],{"name":2260,"slug":2261,"type":15},{"name":2333,"slug":2334,"type":15},{"name":2350,"slug":2351,"type":15},"Data Analysis","data-analysis",{"name":2353,"slug":2354,"type":15},"Java","java",{"name":9,"slug":8,"type":15},{"name":2357,"slug":2358,"type":15},"Monitoring","monitoring","2026-05-13T06:14:16.261754",{"slug":2361,"name":2361,"fn":2362,"description":2363,"org":2364,"tags":2365,"stars":2338,"repoUrl":2339,"updatedAt":2374},"azure-ai-contentsafety-java","build content moderation applications with Azure AI","Build content moderation applications with Azure AI Content Safety SDK for Java. Use when implementing text\u002Fimage analysis, blocklist management, or harm detection for hate, violence, sexual content, and self-harm.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2366,2369,2370,2371],{"name":2367,"slug":2368,"type":15},"AI Infrastructure","ai-infrastructure",{"name":2333,"slug":2334,"type":15},{"name":2353,"slug":2354,"type":15},{"name":2372,"slug":2373,"type":15},"Security","security","2026-07-07T06:53:31.293235",{"slug":2376,"name":2376,"fn":2377,"description":2378,"org":2379,"tags":2380,"stars":2338,"repoUrl":2339,"updatedAt":2391},"azure-ai-contentsafety-py","detect harmful content with Azure AI Content Safety","Azure AI Content Safety SDK for Python. Use for detecting harmful content in text and images with multi-severity classification.\nTriggers: \"azure-ai-contentsafety\", \"ContentSafetyClient\", \"content moderation\", \"harmful content\", \"text analysis\", \"image analysis\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2381,2382,2385,2386,2387,2390],{"name":2333,"slug":2334,"type":15},{"name":2383,"slug":2384,"type":15},"Compliance","compliance",{"name":2336,"slug":2337,"type":15},{"name":9,"slug":8,"type":15},{"name":2388,"slug":2389,"type":15},"Python","python",{"name":2372,"slug":2373,"type":15},"2026-07-18T05:14:23.017504",{"slug":2393,"name":2393,"fn":2394,"description":2395,"org":2396,"tags":2397,"stars":2338,"repoUrl":2339,"updatedAt":2402},"azure-ai-language-conversations-py","implement conversational language understanding with Python","Implement Conversational Language Understanding (CLU) using the azure-ai-language-conversations Python SDK. Use when working with ConversationAnalysisClient to analyze conversation intent and entities, building NLP features, or integrating language understanding into applications.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2398,2399,2400,2401],{"name":2260,"slug":2261,"type":15},{"name":2333,"slug":2334,"type":15},{"name":2336,"slug":2337,"type":15},{"name":2388,"slug":2389,"type":15},"2026-07-31T05:54:29.068751",{"slug":2404,"name":2404,"fn":2405,"description":2406,"org":2407,"tags":2408,"stars":2338,"repoUrl":2339,"updatedAt":2415},"azure-ai-translation-text-py","translate text using Azure AI services","Azure AI Text Translation SDK for real-time text translation, transliteration, language detection, and dictionary lookup. Use for translating text content in applications.\nTriggers: \"text translation\", \"translator\", \"translate text\", \"transliterate\", \"TextTranslationClient\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2409,2412,2413,2414],{"name":2410,"slug":2411,"type":15},"API Development","api-development",{"name":2333,"slug":2334,"type":15},{"name":9,"slug":8,"type":15},{"name":2388,"slug":2389,"type":15},"2026-07-18T05:14:16.988376",{"slug":2417,"name":2417,"fn":2418,"description":2419,"org":2420,"tags":2421,"stars":2338,"repoUrl":2339,"updatedAt":2430},"azure-ai-vision-imageanalysis-py","analyze images with Azure AI Vision","Azure AI Vision Image Analysis SDK for captions, tags, objects, OCR, people detection, and smart cropping. Use for computer vision and image understanding tasks.\nTriggers: \"image analysis\", \"computer vision\", \"OCR\", \"object detection\", \"ImageAnalysisClient\", \"image caption\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2422,2423,2426,2429],{"name":2333,"slug":2334,"type":15},{"name":2424,"slug":2425,"type":15},"Computer Vision","computer-vision",{"name":2427,"slug":2428,"type":15},"Images","images",{"name":2388,"slug":2389,"type":15},"2026-07-18T05:14:18.007737",{"slug":2432,"name":2432,"fn":2433,"description":2434,"org":2435,"tags":2436,"stars":2338,"repoUrl":2339,"updatedAt":2445},"azure-appconfiguration-java","manage configuration with Azure App Configuration","Azure App Configuration SDK for Java. Centralized application configuration management with key-value settings, feature flags, and snapshots.\nTriggers: \"ConfigurationClient java\", \"app configuration java\", \"feature flag java\", \"configuration setting java\", \"azure config java\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2437,2438,2441,2444],{"name":2333,"slug":2334,"type":15},{"name":2439,"slug":2440,"type":15},"Configuration","configuration",{"name":2442,"slug":2443,"type":15},"Feature Flags","feature-flags",{"name":2353,"slug":2354,"type":15},"2026-07-03T16:32:01.278468",{"slug":2447,"name":2447,"fn":2448,"description":2449,"org":2450,"tags":2451,"stars":2338,"repoUrl":2339,"updatedAt":2462},"azure-cosmos-rust","build applications with Azure Cosmos DB","Azure Cosmos DB library for Rust (NoSQL API). Document CRUD, containers, and globally distributed data.\nTriggers: \"cosmos db rust\", \"CosmosClient rust\", \"document crud rust\", \"NoSQL rust\", \"partition key rust\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2452,2455,2456,2459],{"name":2453,"slug":2454,"type":15},"Cosmos DB","cosmos-db",{"name":18,"slug":19,"type":15},{"name":2457,"slug":2458,"type":15},"NoSQL","nosql",{"name":2460,"slug":2461,"type":15},"Rust","rust","2026-07-31T05:54:27.021432",{"slug":2464,"name":2464,"fn":2448,"description":2465,"org":2466,"tags":2467,"stars":2338,"repoUrl":2339,"updatedAt":2475},"azure-cosmos-ts","Azure Cosmos DB JavaScript\u002FTypeScript SDK (@azure\u002Fcosmos) for data plane operations. Use for CRUD operations on documents, queries, bulk operations, and container management. Triggers: \"Cosmos DB\", \"@azure\u002Fcosmos\", \"CosmosClient\", \"document CRUD\", \"NoSQL queries\", \"bulk operations\", \"partition key\", \"container.items\".\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2468,2469,2470,2471,2472],{"name":2453,"slug":2454,"type":15},{"name":18,"slug":19,"type":15},{"name":9,"slug":8,"type":15},{"name":2457,"slug":2458,"type":15},{"name":2473,"slug":2474,"type":15},"TypeScript","typescript","2026-07-03T16:31:19.368382",{"slug":2477,"name":2477,"fn":2478,"description":2479,"org":2480,"tags":2481,"stars":2338,"repoUrl":2339,"updatedAt":2487},"azure-data-tables-java","build table storage applications with Java","Build table storage applications with Azure Tables SDK for Java. Use when working with Azure Table Storage or Cosmos DB Table API for NoSQL key-value data, schemaless storage, or structured data at scale.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[2482,2483,2484,2485,2486],{"name":2333,"slug":2334,"type":15},{"name":2453,"slug":2454,"type":15},{"name":18,"slug":19,"type":15},{"name":2353,"slug":2354,"type":15},{"name":2457,"slug":2458,"type":15},"2026-05-13T06:14:17.582229",267]