Anthropic OAuth LLM, entitlements (feature 1), renewals, + 7 enhancements
- LLM: Anthropic Sonnet 5 (effort=low) via OAuth Bearer (Claude Code keychain token, expiry-aware); NVIDIA/LM Studio endpoints kept commented for switch-back. - Entitlements: scripts/import_entitlements.py joins ACL export to accounts by normalized parent name (324/342 matched; ID column Excel-corrupted), maps products->capabilities via data/product_capability_map.json. Raw ACL csv and entitlements.json are gitignored (confidential); accounts.json carries derived currentProducts + ownedCapabilityIds. Owned capabilities tag briefs EXPANSION. - Renewals: local renewal-proximity score boost (window 365d, max +0.10) + 'renewals' report; briefs/digests show RENEWAL WINDOW context. - Batch runs: loop --limit/--rep with persistent cursor (strategic + stale-first). - Digests: per-rep HTML export; timestamped digest_<date>_<time>.md kept forever. - Account narrative memory fed into relevance/synthesis; synthesis maintains it. - Signal quality gate drops PR fluff pre-LLM; SEC EDGAR filings connector. - Citation verification: talking points must cite [S#] signals or are dropped. - Brief filenames use account-name slug; whitespace report + installed-base view. - USAGE.md: full command/flag/env reference. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
File diff suppressed because it is too large
Load Diff
142
sales-agent/data/accounts.pilot-backup.json
Normal file
142
sales-agent/data/accounts.pilot-backup.json
Normal file
@@ -0,0 +1,142 @@
|
||||
{
|
||||
"_note": "Pilot target list (~200 total to come). REAL fields: accountName, domain, industry, crmTier (verbatim CRM tier where known). crmTier->accountTier mapping used by the 3-band scorer: Tier 1->strategic, Tier 2->enterprise, Tier 3->growth, Tier 4->growth (NOTE: Tier 3 & 4 currently collapse to the same scoring weight — extend scorer to 4 bands to distinguish). PLACEHOLDER fields to confirm from CRM/install-base: assignedRep, currentProducts (drives anti-signal suppression — empty means nothing suppressed yet), targetContacts (empty; LLM/signal authors identify the ideal contact, CRM enrichment fills the rest).",
|
||||
"accounts": [
|
||||
{
|
||||
"accountId": "acct_lowes",
|
||||
"accountName": "Lowe's Companies",
|
||||
"domain": "lowes.com",
|
||||
"industry": "Retail (Home Improvement)",
|
||||
"accountTier": "strategic",
|
||||
"assignedRep": { "id": "rep_sarah", "name": "Sarah K.", "email": "sarah.k@yourco.com" },
|
||||
"currentProducts": [],
|
||||
"targetContacts": [],
|
||||
"lastRunAt": null
|
||||
},
|
||||
{
|
||||
"accountId": "acct_duke_energy",
|
||||
"accountName": "Duke Energy",
|
||||
"domain": "duke-energy.com",
|
||||
"industry": "Energy & Utilities",
|
||||
"accountTier": "strategic",
|
||||
"assignedRep": { "id": "rep_priya", "name": "Priya R.", "email": "priya.r@yourco.com" },
|
||||
"currentProducts": [],
|
||||
"targetContacts": [],
|
||||
"lastRunAt": null
|
||||
},
|
||||
{
|
||||
"accountId": "acct_fedex",
|
||||
"accountName": "FedEx",
|
||||
"domain": "fedex.com",
|
||||
"industry": "Transportation & Logistics",
|
||||
"accountTier": "strategic",
|
||||
"assignedRep": { "id": "rep_sarah", "name": "Sarah K.", "email": "sarah.k@yourco.com" },
|
||||
"currentProducts": [],
|
||||
"targetContacts": [],
|
||||
"lastRunAt": null
|
||||
},
|
||||
{
|
||||
"accountId": "acct_walmart",
|
||||
"accountName": "Walmart",
|
||||
"domain": "walmart.com",
|
||||
"industry": "Retail",
|
||||
"accountTier": "strategic",
|
||||
"assignedRep": { "id": "rep_sarah", "name": "Sarah K.", "email": "sarah.k@yourco.com" },
|
||||
"currentProducts": [],
|
||||
"targetContacts": [],
|
||||
"lastRunAt": null
|
||||
},
|
||||
{
|
||||
"accountId": "acct_hca",
|
||||
"accountName": "HCA Healthcare",
|
||||
"domain": "hcahealthcare.com",
|
||||
"industry": "Healthcare",
|
||||
"accountTier": "strategic",
|
||||
"assignedRep": { "id": "rep_marcus", "name": "Marcus L.", "email": "marcus.l@yourco.com" },
|
||||
"currentProducts": [],
|
||||
"targetContacts": [],
|
||||
"lastRunAt": null
|
||||
},
|
||||
{
|
||||
"accountId": "acct_chs",
|
||||
"accountName": "Community Health Systems",
|
||||
"domain": "chs.net",
|
||||
"industry": "Healthcare",
|
||||
"accountTier": "enterprise",
|
||||
"assignedRep": { "id": "rep_marcus", "name": "Marcus L.", "email": "marcus.l@yourco.com" },
|
||||
"currentProducts": [],
|
||||
"targetContacts": [],
|
||||
"lastRunAt": null
|
||||
},
|
||||
{
|
||||
"accountId": "acct_acxiom",
|
||||
"accountName": "Acxiom",
|
||||
"domain": "acxiom.com",
|
||||
"industry": "Marketing & Data Services",
|
||||
"accountTier": "enterprise",
|
||||
"assignedRep": { "id": "rep_priya", "name": "Priya R.", "email": "priya.r@yourco.com" },
|
||||
"currentProducts": [],
|
||||
"targetContacts": [],
|
||||
"lastRunAt": null
|
||||
},
|
||||
{
|
||||
"accountId": "acct_booz_allen",
|
||||
"accountName": "Booz Allen Hamilton",
|
||||
"domain": "boozallen.com",
|
||||
"industry": "Consulting & Government Services",
|
||||
"crmTier": "Tier 3",
|
||||
"accountTier": "growth",
|
||||
"assignedRep": { "id": "rep_priya", "name": "Priya R.", "email": "priya.r@yourco.com" },
|
||||
"currentProducts": [],
|
||||
"targetContacts": [],
|
||||
"lastRunAt": null
|
||||
},
|
||||
{
|
||||
"accountId": "acct_dominion",
|
||||
"accountName": "Dominion Energy",
|
||||
"domain": "dominionenergy.com",
|
||||
"industry": "Energy & Utilities",
|
||||
"crmTier": "Tier 1",
|
||||
"accountTier": "strategic",
|
||||
"assignedRep": { "id": "rep_priya", "name": "Priya R.", "email": "priya.r@yourco.com" },
|
||||
"currentProducts": [],
|
||||
"targetContacts": [],
|
||||
"lastRunAt": null
|
||||
},
|
||||
{
|
||||
"accountId": "acct_hope_gas",
|
||||
"accountName": "Hope Gas Holdings",
|
||||
"domain": "hopegas.com",
|
||||
"industry": "Energy & Utilities (Natural Gas)",
|
||||
"crmTier": "Tier 3",
|
||||
"accountTier": "growth",
|
||||
"assignedRep": { "id": "rep_priya", "name": "Priya R.", "email": "priya.r@yourco.com" },
|
||||
"currentProducts": [],
|
||||
"targetContacts": [],
|
||||
"lastRunAt": null
|
||||
},
|
||||
{
|
||||
"accountId": "acct_markel",
|
||||
"accountName": "Markel",
|
||||
"domain": "markel.com",
|
||||
"industry": "Insurance",
|
||||
"crmTier": "Tier 3",
|
||||
"accountTier": "growth",
|
||||
"assignedRep": { "id": "rep_marcus", "name": "Marcus L.", "email": "marcus.l@yourco.com" },
|
||||
"currentProducts": [],
|
||||
"targetContacts": [],
|
||||
"lastRunAt": null
|
||||
},
|
||||
{
|
||||
"accountId": "acct_gw_mfa",
|
||||
"accountName": "GW Medical Faculty Associates",
|
||||
"domain": "gwdocs.com",
|
||||
"industry": "Healthcare",
|
||||
"crmTier": "Tier 4",
|
||||
"accountTier": "growth",
|
||||
"assignedRep": { "id": "rep_marcus", "name": "Marcus L.", "email": "marcus.l@yourco.com" },
|
||||
"currentProducts": [],
|
||||
"targetContacts": [],
|
||||
"lastRunAt": null
|
||||
}
|
||||
]
|
||||
}
|
||||
48
sales-agent/data/product_capability_map.json
Normal file
48
sales-agent/data/product_capability_map.json
Normal file
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"_note": "Maps entitlement product taxonomy (Product BU / Family / Midfamily / Subfamily substrings, case-insensitive regex) to capability ids. Matching runs LOCALLY in scripts/import_entitlements.py — no LLM. Families that match nothing are logged to output/state/entitlement_unmapped.json; extend this map from that log.",
|
||||
"patterns": [
|
||||
{"match": "VSAN", "capability": "cap_vmw_vsan"},
|
||||
{"match": "VSPHERE|VVS|VVEP|ESXI", "capability": "cap_vmw_vsphere"},
|
||||
{"match": "\\bVCF\\b|CLOUD FOUNDATION", "capability": "cap_vmw_vcf"},
|
||||
{"match": "NSX|VDEFEND", "capability": "cap_vmw_nsx"},
|
||||
{"match": "\\bAVI\\b|LOAD BALANC", "capability": "cap_vmw_avi"},
|
||||
{"match": "ARIA|VREALIZE|VCF OPS|OPERATIONS MGMT", "capability": "cap_vmw_aria"},
|
||||
{"match": "TANZU|KUBERNETES", "capability": "cap_vmw_tanzu"},
|
||||
{"match": "WORKSPACE ONE|WS1|AIRWATCH", "capability": "cap_vmw_workspaceone"},
|
||||
{"match": "HORIZON", "capability": "cap_vmw_horizon"},
|
||||
{"match": "SITE RECOVERY|LIVE RECOVERY|SRM|RANSOMWARE", "capability": "cap_vmw_live_recovery"},
|
||||
{"match": "\\bHCX\\b", "capability": "cap_vmw_hcx"},
|
||||
{"match": "PRIVATE AI", "capability": "cap_vmw_private_ai"},
|
||||
|
||||
{"match": "ENDEVOR", "capability": "cap_mf_endevor"},
|
||||
{"match": "BRIGHTSIDE|ZOWE", "capability": "cap_mf_brightside"},
|
||||
{"match": "\\bIDMS\\b", "capability": "cap_mf_idms"},
|
||||
{"match": "DATACOM", "capability": "cap_mf_datacom"},
|
||||
{"match": "DB2", "capability": "cap_mf_db2tools"},
|
||||
{"match": "TOP SECRET|ACF2|ACF-2", "capability": "cap_mf_security"},
|
||||
{"match": "COMPLIANCE EVENT|DATA CONTENT DISCOVERY|CLEANUP", "capability": "cap_mf_compliance"},
|
||||
{"match": "OPS/MVS|OPSMVS", "capability": "cap_mf_automation"},
|
||||
{"match": "SYSVIEW", "capability": "cap_mf_sysview"},
|
||||
{"match": "MAINFRAME OPERATIONAL INTELLIGENCE|\\bMOI\\b", "capability": "cap_mf_aiops"},
|
||||
{"match": "CA 7|CA7|CA-7", "capability": "cap_mf_workload_automation"},
|
||||
{"match": "NETMASTER", "capability": "cap_mf_network"},
|
||||
{"match": "VANTAGE|DISK BACKUP", "capability": "cap_mf_storage"},
|
||||
|
||||
{"match": "RALLY|AGILE CENTRAL", "capability": "cap_es_rally"},
|
||||
{"match": "CLARITY|PPM", "capability": "cap_es_clarity"},
|
||||
{"match": "VALUEOPS|CONNECTALL", "capability": "cap_es_valueops_insights"},
|
||||
{"match": "\\bAPM\\b|APP.*PERFORMANCE|INTROSCOPE|WILY", "capability": "cap_es_dx_apm"},
|
||||
{"match": "DX OPERATIONAL|DX AIOPS|DX O2", "capability": "cap_es_dx_aiops"},
|
||||
{"match": "NETOPS|SPECTRUM|PERFORMANCE MGMT.*NET", "capability": "cap_es_dx_netops"},
|
||||
{"match": "APPNETA", "capability": "cap_es_appneta"},
|
||||
{"match": "AUTOMIC|AUTOSYS|WORKLOAD AUTOMATION", "capability": "cap_es_automation"},
|
||||
{"match": "LAYER ?7|API MANAGEMENT|API GATEWAY", "capability": "cap_es_layer7"},
|
||||
|
||||
{"match": "SITEMINDER|ACCESS MANAGEMENT|\\bSSO\\b", "capability": "cap_iam_siteminder"},
|
||||
{"match": "\\bVIP\\b.*AUTH|SYMANTEC VIP", "capability": "cap_iam_vip"},
|
||||
{"match": "\\bPAM\\b|PRIVILEGED", "capability": "cap_iam_pam"},
|
||||
{"match": "IDENTITY (GOVERNANCE|SUITE|MANAGER)|\\bIGA\\b", "capability": "cap_iam_iga"},
|
||||
{"match": "DIRECTORY", "capability": "cap_iam_directory"},
|
||||
{"match": "ADVANCED AUTH|AUTH HUB", "capability": "cap_iam_advauth"}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user