@datasynx/agentic-crm 0.1.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +270 -669
- package/dist/{approvals-DpjxGHFp.js → approvals-CmDT2eUg.js} +7 -24
- package/dist/approvals-CmDT2eUg.js.map +1 -0
- package/dist/{ask-CID3jnuL.js → ask-CDysGnRg.js} +6 -6
- package/dist/{ask-CID3jnuL.js.map → ask-CDysGnRg.js.map} +1 -1
- package/dist/atomic-write-8yjqqLtS.js +29 -0
- package/dist/atomic-write-8yjqqLtS.js.map +1 -0
- package/dist/atomic-write-BYmF-ThH.cjs +37 -0
- package/dist/atomic-write-BYmF-ThH.cjs.map +1 -0
- package/dist/attachments-CX2GAtsw.cjs +517 -0
- package/dist/attachments-CX2GAtsw.cjs.map +1 -0
- package/dist/attachments-D207gXfN.js +514 -0
- package/dist/attachments-D207gXfN.js.map +1 -0
- package/dist/attachments-rLa96rOK.js +514 -0
- package/dist/attachments-rLa96rOK.js.map +1 -0
- package/dist/auth-B5DcjJ_6.js +2 -0
- package/dist/{auth-DFWwWcYD.js → auth-DDXZTwS0.js} +4 -13
- package/dist/auth-DDXZTwS0.js.map +1 -0
- package/dist/{autofill-Di_-SP7t.js → autofill-B9VtlR2j.js} +2 -2
- package/dist/{autofill-Di_-SP7t.js.map → autofill-B9VtlR2j.js.map} +1 -1
- package/dist/{backup-CeMk9z86.js → backup-CTlIxUdO.js} +5 -7
- package/dist/backup-CTlIxUdO.js.map +1 -0
- package/dist/backup-LFnC09oV.js +2 -0
- package/dist/chunk-BfDYWZQ8.cjs +32 -0
- package/dist/chunk-BfDYWZQ8.cjs.map +1 -0
- package/dist/chunk-BhUZmQg5.js +32 -0
- package/dist/chunk-BhUZmQg5.js.map +1 -0
- package/dist/chunk-ChC83jai.js +2 -0
- package/dist/chunk-e_w8qqtP.js +32 -0
- package/dist/chunk-e_w8qqtP.js.map +1 -0
- package/dist/{churn-C28IgnAj.js → churn-DN9WDGNM.js} +3 -3
- package/dist/{churn-C28IgnAj.js.map → churn-DN9WDGNM.js.map} +1 -1
- package/dist/cli.js +285 -186
- package/dist/cli.js.map +1 -1
- package/dist/{compliance-CKSBoQUe.js → compliance-Bc12Hn9a.js} +3 -3
- package/dist/{compliance-CKSBoQUe.js.map → compliance-Bc12Hn9a.js.map} +1 -1
- package/dist/{compliance-CujOqAKk.js → compliance-TqYQXhBj.js} +1 -1
- package/dist/{compliance-B1kk5-YS.js → compliance-kq0xHRw3.js} +3 -3
- package/dist/{compliance-B1kk5-YS.js.map → compliance-kq0xHRw3.js.map} +1 -1
- package/dist/{compliance-B91zNvCR.cjs → compliance-pAj9FcGI.cjs} +3 -3
- package/dist/{compliance-B91zNvCR.cjs.map → compliance-pAj9FcGI.cjs.map} +1 -1
- package/dist/{context-builder-BzWAp3Zs.js → context-builder-7Uab5-G4.js} +3 -2
- package/dist/context-builder-7Uab5-G4.js.map +1 -0
- package/dist/context-builder-hmOPvgso.js +2 -0
- package/dist/{custom-fields-CzNeD3_v.js → custom-fields-BMyz5Ruh.js} +1 -1
- package/dist/{custom-fields-Pl2t9xzp.js → custom-fields-GzpOHW_2.js} +4 -13
- package/dist/custom-fields-GzpOHW_2.js.map +1 -0
- package/dist/{custom-objects-CIFrmQ2V.js → custom-objects-BNy-ayR-.js} +1 -1
- package/dist/{custom-objects-BHgn1GEX.js → custom-objects-CxW1gHwJ.js} +10 -25
- package/dist/custom-objects-CxW1gHwJ.js.map +1 -0
- package/dist/{customer-dir-DIylZ8Q6.js → customer-dir-CkMMXhb0.js} +9 -4
- package/dist/customer-dir-CkMMXhb0.js.map +1 -0
- package/dist/daemon/worker.js +66 -40
- package/dist/daemon/worker.js.map +1 -1
- package/dist/doctor-C14-vnJ1.js +103 -0
- package/dist/doctor-C14-vnJ1.js.map +1 -0
- package/dist/email-body-BFSRa0AW.cjs +42 -0
- package/dist/email-body-BFSRa0AW.cjs.map +1 -0
- package/dist/email-body-BOd7U-D2.js +42 -0
- package/dist/email-body-BOd7U-D2.js.map +1 -0
- package/dist/{enrichment-3XvgGDfB.js → enrichment-CDFdWmvD.js} +3 -3
- package/dist/{enrichment-3XvgGDfB.js.map → enrichment-CDFdWmvD.js.map} +1 -1
- package/dist/{file-lock-B_zi7NQl.js → file-lock-CcHotQkZ.js} +3 -4
- package/dist/file-lock-CcHotQkZ.js.map +1 -0
- package/dist/{gmail-sync-DIaxInDT.js → gmail-sync-B4Iu3AQb.js} +56 -22
- package/dist/gmail-sync-B4Iu3AQb.js.map +1 -0
- package/dist/{gmail-sync-hHm9gaWd.cjs → gmail-sync-BpSVESSe.cjs} +55 -21
- package/dist/gmail-sync-BpSVESSe.cjs.map +1 -0
- package/dist/{gmail-sync-rQaVqKWd.js → gmail-sync-DIbrPnTK.js} +55 -21
- package/dist/gmail-sync-DIbrPnTK.js.map +1 -0
- package/dist/{gmail-webhook-handler-e5Od25FX.js → gmail-webhook-handler-BzOFbvgh.js} +4 -4
- package/dist/{gmail-webhook-handler-e5Od25FX.js.map → gmail-webhook-handler-BzOFbvgh.js.map} +1 -1
- package/dist/{gmail-webhook-handler-DS7OlRPX.js → gmail-webhook-handler-CvSDW_Js.js} +2 -2
- package/dist/{goal-engine-KpBftn4V.js → goal-engine-BbroPhqm.js} +10 -11
- package/dist/goal-engine-BbroPhqm.js.map +1 -0
- package/dist/{goal-engine-CUZSpERI.js → goal-engine-CfDAJTFt.js} +1 -1
- package/dist/{google-drive-sync-DEPcqFca.js → google-drive-sync-B_I1d54Y.js} +3 -3
- package/dist/{google-drive-sync-DEPcqFca.js.map → google-drive-sync-B_I1d54Y.js.map} +1 -1
- package/dist/html-BaeOCZKE.js +36 -0
- package/dist/html-BaeOCZKE.js.map +1 -0
- package/dist/html-CmOku6jS.cjs +47 -0
- package/dist/html-CmOku6jS.cjs.map +1 -0
- package/dist/{hygiene-DZqfYpFf.js → hygiene-DzQPnc6P.js} +3 -3
- package/dist/{hygiene-DZqfYpFf.js.map → hygiene-DzQPnc6P.js.map} +1 -1
- package/dist/identity-CB7j-Zr1.js +2 -0
- package/dist/{identity-CI6olMNm.js → identity-_uZ3Lbr2.js} +2 -2
- package/dist/{identity-CI6olMNm.js.map → identity-_uZ3Lbr2.js.map} +1 -1
- package/dist/{import-hubspot-BaK71U_K.js → import-hubspot-CTId9IGV.js} +51 -45
- package/dist/import-hubspot-CTId9IGV.js.map +1 -0
- package/dist/{index-YqwMd6aQ.d.cts → index-BAutNcAT.d.cts} +20 -12
- package/dist/index-BAutNcAT.d.cts.map +1 -0
- package/dist/{index-V8BFaH-b.d.ts → index-FzDsNSSb.d.ts} +12 -4
- package/dist/index-FzDsNSSb.d.ts.map +1 -0
- package/dist/index.cjs +19 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +20 -12
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +12 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -21
- package/dist/index.js.map +1 -1
- package/dist/interactions-writer-B2y-73lh.js +2 -0
- package/dist/{interactions-writer-SLHnoEeE.js → interactions-writer-B8XAzdqR.js} +34 -4
- package/dist/interactions-writer-B8XAzdqR.js.map +1 -0
- package/dist/{interactions-writer-CrPStUll.cjs → interactions-writer-BRJNrefF.cjs} +7 -3
- package/dist/interactions-writer-BRJNrefF.cjs.map +1 -0
- package/dist/{interactions-writer-DO3KcSR3.js → interactions-writer-ZQcpFOh9.js} +7 -3
- package/dist/interactions-writer-ZQcpFOh9.js.map +1 -0
- package/dist/json-store-WWsFzXub.js +43 -0
- package/dist/json-store-WWsFzXub.js.map +1 -0
- package/dist/{knowledge-base-D0Fh40kc.js → knowledge-base--063Kpa3.js} +51 -22
- package/dist/knowledge-base--063Kpa3.js.map +1 -0
- package/dist/{lancedb-CCBbpulq.js → lancedb-CswQEE5K.js} +1 -1
- package/dist/{lancedb-rlvWoPwl.js → lancedb-CuHKNsNZ.js} +4 -3
- package/dist/lancedb-CuHKNsNZ.js.map +1 -0
- package/dist/{lead-model-BCFzyktm.js → lead-model-CEmx7te7.js} +6 -14
- package/dist/lead-model-CEmx7te7.js.map +1 -0
- package/dist/{llm-Z8RIYkpF.js → llm-BnSUBisu.js} +2 -2
- package/dist/{llm-Z8RIYkpF.js.map → llm-BnSUBisu.js.map} +1 -1
- package/dist/{llm-iijeXmgq.cjs → llm-CXycmEl9.cjs} +2 -2
- package/dist/{llm-iijeXmgq.cjs.map → llm-CXycmEl9.cjs.map} +1 -1
- package/dist/{llm-DEjWcqmW.js → llm-DSX1-wFu.js} +1 -1
- package/dist/{llm-DvzZqva0.js → llm-PZzgPphl.js} +3 -3
- package/dist/{llm-DvzZqva0.js.map → llm-PZzgPphl.js.map} +1 -1
- package/dist/logger-BkInaGoV.cjs +167 -0
- package/dist/logger-BkInaGoV.cjs.map +1 -0
- package/dist/logger-Dyl4VcLO.js +147 -0
- package/dist/logger-Dyl4VcLO.js.map +1 -0
- package/dist/logger-UaF5p9d1.js +147 -0
- package/dist/logger-UaF5p9d1.js.map +1 -0
- package/dist/logger-vKQS34w9.js +2 -0
- package/dist/mcp-CdTJWTJf.d.cts.map +1 -1
- package/dist/mcp-CdTJWTJf.d.ts.map +1 -1
- package/dist/mcp.cjs +365 -319
- package/dist/mcp.cjs.map +1 -1
- package/dist/mcp.d.cts.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +365 -319
- package/dist/mcp.js.map +1 -1
- package/dist/{memory-Cy6-Tbyl.js → memory-D8hmgD9d.js} +1 -1
- package/dist/{memory-Bb6ky3kb.js → memory-Dzr9dXSM.js} +4 -11
- package/dist/memory-Dzr9dXSM.js.map +1 -0
- package/dist/{microsoft-calendar-B6MMtUQK.js → microsoft-calendar-BgVR8GDv.js} +4 -4
- package/dist/{microsoft-calendar-B6MMtUQK.js.map → microsoft-calendar-BgVR8GDv.js.map} +1 -1
- package/dist/{microsoft-sync-CpZVoSuq.js → microsoft-sync-D30_XksI.js} +5 -5
- package/dist/{microsoft-sync-CpZVoSuq.js.map → microsoft-sync-D30_XksI.js.map} +1 -1
- package/dist/{nba-3wanmJ0U.js → nba-DwdfM93s.js} +3 -3
- package/dist/{nba-3wanmJ0U.js.map → nba-DwdfM93s.js.map} +1 -1
- package/dist/{notification-dispatcher-0vYNngWe.js → notification-dispatcher-inpKyuBz.js} +7 -3
- package/dist/notification-dispatcher-inpKyuBz.js.map +1 -0
- package/dist/{pipeline-writer-BqBrYrQc.js → pipeline-writer-0LJ6Qkat.js} +1 -1
- package/dist/{pipeline-writer-N2omexxp.cjs → pipeline-writer-B1tRAhuD.cjs} +11 -3
- package/dist/pipeline-writer-B1tRAhuD.cjs.map +1 -0
- package/dist/{pipeline-writer-BvVquKIe.js → pipeline-writer-CIllfnZl.js} +5 -3
- package/dist/pipeline-writer-CIllfnZl.js.map +1 -0
- package/dist/{pipeline-writer-eufx_0o1.js → pipeline-writer-rDj-ni6q.js} +6 -4
- package/dist/pipeline-writer-rDj-ni6q.js.map +1 -0
- package/dist/{proactive-agent-BgQXw3ac.js → proactive-agent-B7u3Bj_l.js} +6 -6
- package/dist/{proactive-agent-BgQXw3ac.js.map → proactive-agent-B7u3Bj_l.js.map} +1 -1
- package/dist/{proactive-worker-BrLHNhjH.js → proactive-worker-1zkm6aJD.js} +7 -8
- package/dist/proactive-worker-1zkm6aJD.js.map +1 -0
- package/dist/{push-manager-CowY-0IK.js → push-manager-BXM-IHfP.js} +1 -1
- package/dist/{push-manager-CdqIIkuh.js → push-manager-C0ECQgva.js} +4 -4
- package/dist/push-manager-C0ECQgva.js.map +1 -0
- package/dist/{quote-generator-OhSFsi3x.js → quote-generator-ByUyIYtw.js} +1 -1
- package/dist/{quote-generator-BfwENXzg.js → quote-generator-CTdR8eEI.js} +5 -5
- package/dist/quote-generator-CTdR8eEI.js.map +1 -0
- package/dist/rbac-DzbyFhVH.js +2 -0
- package/dist/{rbac-CTIktZaC.js → rbac-msmBc_tK.js} +19 -12
- package/dist/rbac-msmBc_tK.js.map +1 -0
- package/dist/regex-Jt5DatPi.js +13 -0
- package/dist/regex-Jt5DatPi.js.map +1 -0
- package/dist/{relationship-health-odxEoQdJ.js → relationship-health-ZZNXR1RZ.js} +8 -16
- package/dist/relationship-health-ZZNXR1RZ.js.map +1 -0
- package/dist/{revenue-simulation-Bqf2DLVB.js → revenue-simulation-D8f_YkUY.js} +9 -19
- package/dist/revenue-simulation-D8f_YkUY.js.map +1 -0
- package/dist/{revenue-simulation-BJdRTEHc.js → revenue-simulation-njJZlTqm.js} +1 -1
- package/dist/safe-path-mpp0dKtO.js +18 -0
- package/dist/safe-path-mpp0dKtO.js.map +1 -0
- package/dist/{segments-BqcD5HIl.js → segments-DI3LOQNe.js} +5 -14
- package/dist/segments-DI3LOQNe.js.map +1 -0
- package/dist/sequence-engine-C6nnewHX.js +2 -0
- package/dist/{sequence-engine-J1lTW_in.js → sequence-engine-DNTVLq7o.js} +15 -8
- package/dist/sequence-engine-DNTVLq7o.js.map +1 -0
- package/dist/{sequence-store-DaaWr0Os.js → sequence-store-CmYb6s0g.js} +6 -5
- package/dist/sequence-store-CmYb6s0g.js.map +1 -0
- package/dist/{server-Dyva03K8.js → server-DoRPPOeR.js} +308 -230
- package/dist/server-DoRPPOeR.js.map +1 -0
- package/dist/{session-D9ub6Wl1.js → session-B6XaP83h.js} +3 -3
- package/dist/session-B6XaP83h.js.map +1 -0
- package/dist/{session-B9AilxOE.js → session-BgGDyP2C.js} +3 -3
- package/dist/session-BgGDyP2C.js.map +1 -0
- package/dist/session-Bp4zTh4l.js +2 -0
- package/dist/{session-D0qFkBla.cjs → session-Mm7GQbSH.cjs} +3 -3
- package/dist/session-Mm7GQbSH.cjs.map +1 -0
- package/dist/{session-store-C8tEvMPw.js → session-store-DWxJ5Pof.js} +79 -17
- package/dist/session-store-DWxJ5Pof.js.map +1 -0
- package/dist/{session-store-B0QZE8Bx.cjs → session-store-yfwnj0OC.cjs} +126 -16
- package/dist/session-store-yfwnj0OC.cjs.map +1 -0
- package/dist/{sla-engine-5IhTsBUR.js → sla-engine-CP2KiKDS.js} +1 -1
- package/dist/{sla-engine-BqX-7u-7.js → sla-engine-O-A1ntu_.js} +2 -2
- package/dist/{sla-engine-BqX-7u-7.js.map → sla-engine-O-A1ntu_.js.map} +1 -1
- package/dist/{sop-Vp0UPWFW.js → sop-BV7ICAFR.js} +4 -11
- package/dist/sop-BV7ICAFR.js.map +1 -0
- package/dist/{sop-DkhVChGy.js → sop-D33qTHUb.js} +1 -1
- package/dist/survey-engine-DKctGcLQ.js +2 -0
- package/dist/{survey-engine-DBjCYqCv.js → survey-engine-DngXBv47.js} +5 -4
- package/dist/survey-engine-DngXBv47.js.map +1 -0
- package/dist/{sync-state-CwLSt_1m.js → sync-state-BaA8LbTI.js} +1 -1
- package/dist/{sync-state-ChaLbamC.js → sync-state-DMZgzpez.js} +4 -12
- package/dist/sync-state-DMZgzpez.js.map +1 -0
- package/dist/{ticket-writer-CjqKeIRD.js → ticket-writer-DsfpeLGZ.js} +1 -1
- package/dist/{ticket-writer-j2oX_Wal.js → ticket-writer-a9on36Wb.js} +12 -24
- package/dist/ticket-writer-a9on36Wb.js.map +1 -0
- package/dist/{tone-Bdm5uaht.js → tone-C7bqK69y.js} +5 -12
- package/dist/tone-C7bqK69y.js.map +1 -0
- package/dist/{tone-DRKlZgPr.cjs → tone-Cmc7O2Fx.cjs} +3 -9
- package/dist/tone-Cmc7O2Fx.cjs.map +1 -0
- package/dist/{tone-vNb2DAAD.js → tone-mXSftvTn.js} +3 -8
- package/dist/tone-mXSftvTn.js.map +1 -0
- package/dist/{transcript-watcher-CL2QUygI.js → transcript-watcher-BoClrJAz.js} +18 -11
- package/dist/transcript-watcher-BoClrJAz.js.map +1 -0
- package/dist/unmatched-transcripts-C92zAoM4.js +2 -0
- package/dist/unmatched-transcripts-DC-VQ9YS.js +16 -0
- package/dist/unmatched-transcripts-DC-VQ9YS.js.map +1 -0
- package/dist/update-deal-CWy1eLJI.js +2 -0
- package/dist/{update-deal-DKC79skb.js → update-deal-DSzr_Aau.js} +3 -3
- package/dist/{update-deal-DKC79skb.js.map → update-deal-DSzr_Aau.js.map} +1 -1
- package/dist/{usage-D0-TYJkw.js → usage-BVlFlKW_.js} +8 -6
- package/dist/usage-BVlFlKW_.js.map +1 -0
- package/dist/usage-CClTf5e6.cjs.map +1 -1
- package/dist/usage-D0u9a-lV.js.map +1 -1
- package/dist/{vault-DXCg29W-.js → vault-CfwZdNzC.js} +3 -4
- package/dist/vault-CfwZdNzC.js.map +1 -0
- package/dist/{vault-C1D3zScD.js → vault-DxKP4_R2.js} +1 -1
- package/dist/{webhooks-Xn6zO6kd.cjs → webhooks-CwW-3kvG.cjs} +5 -19
- package/dist/webhooks-CwW-3kvG.cjs.map +1 -0
- package/dist/{webhooks-7EpA05Qr.js → webhooks-DXr1IoKn.js} +8 -21
- package/dist/webhooks-DXr1IoKn.js.map +1 -0
- package/dist/{webhooks-BO2UAnmn.js → webhooks-sWZ8CJtR.js} +5 -18
- package/dist/webhooks-sWZ8CJtR.js.map +1 -0
- package/package.json +22 -2
- package/dist/approvals-DpjxGHFp.js.map +0 -1
- package/dist/auth-CyFuu9X_.js +0 -2
- package/dist/auth-DFWwWcYD.js.map +0 -1
- package/dist/backup-CeMk9z86.js.map +0 -1
- package/dist/backup-f_hC7rBV.js +0 -2
- package/dist/context-builder-BzWAp3Zs.js.map +0 -1
- package/dist/context-builder-DlrRcqmJ.js +0 -2
- package/dist/custom-fields-Pl2t9xzp.js.map +0 -1
- package/dist/custom-objects-BHgn1GEX.js.map +0 -1
- package/dist/customer-dir-DIylZ8Q6.js.map +0 -1
- package/dist/file-lock-B_zi7NQl.js.map +0 -1
- package/dist/gmail-sync-DIaxInDT.js.map +0 -1
- package/dist/gmail-sync-hHm9gaWd.cjs.map +0 -1
- package/dist/gmail-sync-rQaVqKWd.js.map +0 -1
- package/dist/goal-engine-KpBftn4V.js.map +0 -1
- package/dist/identity-gyfWdrcX.js +0 -2
- package/dist/import-hubspot-BaK71U_K.js.map +0 -1
- package/dist/index-V8BFaH-b.d.ts.map +0 -1
- package/dist/index-YqwMd6aQ.d.cts.map +0 -1
- package/dist/interactions-writer-CrPStUll.cjs.map +0 -1
- package/dist/interactions-writer-DO3KcSR3.js.map +0 -1
- package/dist/interactions-writer-SLHnoEeE.js.map +0 -1
- package/dist/interactions-writer-dSPy1XfO.js +0 -2
- package/dist/knowledge-base-D0Fh40kc.js.map +0 -1
- package/dist/lancedb-rlvWoPwl.js.map +0 -1
- package/dist/lead-model-BCFzyktm.js.map +0 -1
- package/dist/memory-Bb6ky3kb.js.map +0 -1
- package/dist/notification-dispatcher-0vYNngWe.js.map +0 -1
- package/dist/pipeline-writer-BvVquKIe.js.map +0 -1
- package/dist/pipeline-writer-N2omexxp.cjs.map +0 -1
- package/dist/pipeline-writer-eufx_0o1.js.map +0 -1
- package/dist/proactive-worker-BrLHNhjH.js.map +0 -1
- package/dist/push-manager-CdqIIkuh.js.map +0 -1
- package/dist/quote-generator-BfwENXzg.js.map +0 -1
- package/dist/rbac-C7c8tcES.js +0 -2
- package/dist/rbac-CTIktZaC.js.map +0 -1
- package/dist/relationship-health-odxEoQdJ.js.map +0 -1
- package/dist/revenue-simulation-Bqf2DLVB.js.map +0 -1
- package/dist/segments-BqcD5HIl.js.map +0 -1
- package/dist/sequence-engine-CCTHEBgi.js +0 -2
- package/dist/sequence-engine-J1lTW_in.js.map +0 -1
- package/dist/sequence-store-DaaWr0Os.js.map +0 -1
- package/dist/server-Dyva03K8.js.map +0 -1
- package/dist/session-B9AilxOE.js.map +0 -1
- package/dist/session-D0qFkBla.cjs.map +0 -1
- package/dist/session-D9ub6Wl1.js.map +0 -1
- package/dist/session-mWHA71Lw.js +0 -2
- package/dist/session-store-B0QZE8Bx.cjs.map +0 -1
- package/dist/session-store-C8tEvMPw.js.map +0 -1
- package/dist/sop-Vp0UPWFW.js.map +0 -1
- package/dist/survey-engine-C06hcQt3.js +0 -2
- package/dist/survey-engine-DBjCYqCv.js.map +0 -1
- package/dist/sync-state-ChaLbamC.js.map +0 -1
- package/dist/ticket-writer-j2oX_Wal.js.map +0 -1
- package/dist/tone-Bdm5uaht.js.map +0 -1
- package/dist/tone-DRKlZgPr.cjs.map +0 -1
- package/dist/tone-vNb2DAAD.js.map +0 -1
- package/dist/transcript-watcher-CL2QUygI.js.map +0 -1
- package/dist/unmatched-transcripts-BsH5bhkU.js +0 -26
- package/dist/unmatched-transcripts-BsH5bhkU.js.map +0 -1
- package/dist/unmatched-transcripts-D0PrJ9iz.js +0 -2
- package/dist/update-deal-BNwPGaTV.js +0 -2
- package/dist/usage-D0-TYJkw.js.map +0 -1
- package/dist/vault-DXCg29W-.js.map +0 -1
- package/dist/webhooks-7EpA05Qr.js.map +0 -1
- package/dist/webhooks-BO2UAnmn.js.map +0 -1
- package/dist/webhooks-Xn6zO6kd.cjs.map +0 -1
package/README.md
CHANGED
|
@@ -1,767 +1,368 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
#
|
|
3
|
+
# Datasynx Agentic CRM · `dxcrm`
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
### The CRM your AI agents actually run.
|
|
6
|
+
|
|
7
|
+
**Local-first. MCP-native. One autonomous agent per customer.**
|
|
8
|
+
Your pipeline lives as plain Markdown on your machine — and your AI agents read, reason about, and update it natively inside Claude Code, Codex, and Cursor.
|
|
9
|
+
|
|
10
|
+
<p>
|
|
11
|
+
<a href="#-quickstart"><strong>Quickstart</strong></a> ·
|
|
12
|
+
<a href="https://datasynx-ai.github.io/datasynx-crm/"><strong>Docs</strong></a> ·
|
|
13
|
+
<a href="https://www.npmjs.com/package/@datasynx/agentic-crm"><strong>npm</strong></a> ·
|
|
14
|
+
<a href="https://github.com/datasynx-ai/datasynx-crm"><strong>GitHub</strong></a> ·
|
|
15
|
+
<a href="https://de.linkedin.com/company/datasynx-ai"><strong>LinkedIn</strong></a>
|
|
16
|
+
</p>
|
|
6
17
|
|
|
7
18
|
[](https://www.npmjs.com/package/@datasynx/agentic-crm)
|
|
8
|
-
[](https://www.npmjs.com/package/@datasynx/agentic-crm)
|
|
9
20
|
[](https://github.com/datasynx-ai/datasynx-crm/actions/workflows/ci.yml)
|
|
10
21
|
[](https://datasynx-ai.github.io/datasynx-crm/)
|
|
11
|
-
[](https://github.com/datasynx-ai/datasynx-crm/stargazers)
|
|
23
|
+
[](./LICENSE)
|
|
12
24
|
[](https://nodejs.org)
|
|
13
25
|
|
|
14
|
-
[**📖 Documentation**](https://datasynx-ai.github.io/datasynx-crm/) · [**📦 npm**](https://www.npmjs.com/package/@datasynx/agentic-crm) · [**💻 GitHub**](https://github.com/datasynx-ai/datasynx-crm) · [**💼 LinkedIn**](https://de.linkedin.com/company/datasynx-ai)
|
|
15
|
-
|
|
16
26
|
</div>
|
|
17
27
|
|
|
18
|
-
> **You don't open a CRM to find your customer. Your customer's agent finds
|
|
28
|
+
> **You don't open a CRM to find your customer. Your customer's agent finds _you_ — briefed, current, and ready to act.**
|
|
19
29
|
|
|
20
|
-
|
|
30
|
+
Your AI agents are brilliant — and forgetful. **Datasynx Agentic CRM is the long-term memory and the hands** they use to run your customer relationships. Every customer is a folder of human-readable Markdown on your own disk; **55+ purpose-built [Model Context Protocol](https://modelcontextprotocol.io) tools** let any agent load full context, score deals, forecast revenue, draft the follow-up, and log what happened — without you copy-pasting a thing.
|
|
21
31
|
|
|
22
|
-
|
|
32
|
+
**No database. No cloud lock-in. No per-seat pricing. Zero telemetry.**
|
|
23
33
|
|
|
24
|
-
|
|
34
|
+
<br/>
|
|
25
35
|
|
|
26
|
-
|
|
27
|
-
npm install -g @datasynx/agentic-crm
|
|
28
|
-
|
|
29
|
-
# 1. Initialize (detects Claude Code, Codex, Cursor, Claude Desktop, ...)
|
|
30
|
-
dxcrm init
|
|
36
|
+
## See it in action
|
|
31
37
|
|
|
32
|
-
|
|
33
|
-
|
|
38
|
+
```text
|
|
39
|
+
You ▸ What's going on with Acme Corp?
|
|
34
40
|
|
|
35
|
-
|
|
36
|
-
# "Was ist los mit Acme Corp?" → <3 Sekunden Antwort
|
|
37
|
-
```
|
|
41
|
+
Agent ▸ ⟢ get_customer_context · get_deal_health · get_relationship_health
|
|
38
42
|
|
|
39
|
-
|
|
43
|
+
Acme Corp — Negotiation · €75,000 · deal health B (78/100)
|
|
44
|
+
• Last touch 2 days ago — pricing pushback from the CFO
|
|
45
|
+
• Champion: VP Engineering (warm) ⚠ Economic buyer quiet for 11 days
|
|
46
|
+
• Next best action: send the ROI one-pager, loop the VP Eng into the thread
|
|
40
47
|
|
|
41
|
-
|
|
48
|
+
You ▸ Draft that follow-up and log it.
|
|
42
49
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
| Data ownership | Their cloud | Your machine, your files |
|
|
48
|
-
| Offline access | No | Yes — pure markdown |
|
|
49
|
-
| Privacy/GDPR | Complex | Full GDPR erasure built-in |
|
|
50
|
-
| Customization | Limited | Fork it, it's TypeScript |
|
|
50
|
+
Agent ▸ ⟢ draft_email · log_interaction
|
|
51
|
+
✓ Draft ready (personalized from your "ROI follow-up" template)
|
|
52
|
+
✓ Logged to customers/acme-corp/interactions.md
|
|
53
|
+
```
|
|
51
54
|
|
|
52
|
-
|
|
55
|
+
> Every answer is grounded in Markdown files **you own** and can open in any editor. Nothing is hidden in a vendor database.
|
|
53
56
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
### Core
|
|
57
|
-
|
|
58
|
-
| Command | Description |
|
|
59
|
-
|---|---|
|
|
60
|
-
| `dxcrm init` | Initialize CRM, detect & configure all AI frameworks |
|
|
61
|
-
| `dxcrm create <name>` | Create new customer (`--domain`, `--email`) |
|
|
62
|
-
| `dxcrm list [--filter <q>]` | List all customers |
|
|
63
|
-
| `dxcrm validate` | Validate all customer data files |
|
|
64
|
-
| `dxcrm guide` | Full documentation in terminal |
|
|
65
|
-
| `dxcrm mcp docs` | MCP tool reference in terminal |
|
|
66
|
-
|
|
67
|
-
### MCP Server
|
|
68
|
-
|
|
69
|
-
| Command | Description |
|
|
70
|
-
|---|---|
|
|
71
|
-
| `dxcrm mcp start` | Start MCP server (stdio mode, for Claude Code / Codex) |
|
|
72
|
-
| `dxcrm mcp start --http [--port 3847]` | Start MCP server in HTTP mode (for team sharing) |
|
|
73
|
-
|
|
74
|
-
### Session Management
|
|
75
|
-
|
|
76
|
-
| Command | Description |
|
|
77
|
-
|---|---|
|
|
78
|
-
| `dxcrm session open <slug>` | Set active customer session |
|
|
79
|
-
| `dxcrm session close` | Clear active session |
|
|
80
|
-
| `dxcrm session status` | Show current session |
|
|
81
|
-
|
|
82
|
-
### Sync
|
|
83
|
-
|
|
84
|
-
| Command | Description |
|
|
85
|
-
|---|---|
|
|
86
|
-
| `dxcrm sync <slug>` | Sync Gmail + transcripts for a customer |
|
|
87
|
-
| `dxcrm sync --provider microsoft` | Sync Outlook via Microsoft Graph API |
|
|
88
|
-
| `dxcrm sync --provider google-drive` | Sync Google Drive/Docs files |
|
|
89
|
-
| `dxcrm sync --provider teams-transcripts` | Sync Microsoft Teams transcripts |
|
|
90
|
-
| `dxcrm sync --provider google-meet` | Sync Google Meet transcripts |
|
|
91
|
-
| `dxcrm daemon start` | Start background sync daemon |
|
|
92
|
-
| `dxcrm daemon stop` | Stop daemon |
|
|
93
|
-
| `dxcrm daemon status` | Check daemon status |
|
|
94
|
-
| `dxcrm status` | Show daemon, sync state, customer counts |
|
|
95
|
-
| `dxcrm status --unmatched` | List unmatched transcript queue |
|
|
96
|
-
|
|
97
|
-
### Import
|
|
98
|
-
|
|
99
|
-
| Command | Description |
|
|
100
|
-
|---|---|
|
|
101
|
-
| `dxcrm import <file>` | Import from CSV (`--from csv`, `--dry-run`) |
|
|
102
|
-
| `dxcrm import ./export/ --from hubspot` | Import HubSpot multi-file export directory |
|
|
103
|
-
| `dxcrm import ./export/ --from hubspot --analyze` | Pre-flight: counts, custom props, owners |
|
|
104
|
-
| `dxcrm import ./export/ --from hubspot --resume` | Resume interrupted import |
|
|
105
|
-
| `dxcrm import ./export/ --from hubspot --owner-map "alice@hs.com=alice"` | Map HubSpot owners to reps |
|
|
106
|
-
| `dxcrm import --from hubspot --mode api` | Import HubSpot via API (v4 Associations) |
|
|
107
|
-
| `dxcrm import --from salesforce --mode api` | Import Salesforce contacts + activities |
|
|
108
|
-
| `dxcrm import --from pipedrive --mode api` | Import Pipedrive persons + activities |
|
|
109
|
-
|
|
110
|
-
### Agents
|
|
111
|
-
|
|
112
|
-
| Command | Description |
|
|
113
|
-
|---|---|
|
|
114
|
-
| `dxcrm agent spawn <slug>` | Spawn wake-triggered agent (Telegram on new email) |
|
|
115
|
-
| `dxcrm agent status` | Show all configured agents |
|
|
116
|
-
| `dxcrm agent remove <slug>` | Remove agent config |
|
|
117
|
-
|
|
118
|
-
### Team / Server
|
|
119
|
-
|
|
120
|
-
| Command | Description |
|
|
121
|
-
|---|---|
|
|
122
|
-
| `dxcrm server start` | Start HTTP MCP server (`--data <dir>`, `--port 3847`) |
|
|
123
|
-
| `dxcrm server status` | Check if HTTP server is running |
|
|
124
|
-
| `dxcrm audit` | Show audit trail (`--slug`, `--actor`, `--limit`) |
|
|
125
|
-
|
|
126
|
-
### Goals
|
|
127
|
-
|
|
128
|
-
| Command | Description |
|
|
129
|
-
|---|---|
|
|
130
|
-
| `dxcrm goal set "<description>" --deadline <date>` | Set a goal + get decomposed action plan |
|
|
131
|
-
| `dxcrm goal status` | Show all active goals with progress |
|
|
132
|
-
| `dxcrm goal update <goalId> --progress <n>` | Update goal progress (0–100%) |
|
|
133
|
-
| `dxcrm goal cancel <goalId>` | Cancel an active goal |
|
|
134
|
-
|
|
135
|
-
### Push Subscriptions (Real-Time Ingestion)
|
|
136
|
-
|
|
137
|
-
| Command | Description |
|
|
138
|
-
|---|---|
|
|
139
|
-
| `dxcrm push register <slug> --provider gmail --webhook-url <url>` | Register Gmail Pub/Sub push subscription |
|
|
140
|
-
| `dxcrm push register <slug> --provider microsoft-graph --webhook-url <url>` | Register MS Graph webhook |
|
|
141
|
-
| `dxcrm push register <slug> --provider slack --webhook-url <url> --team-id <id>` | Register Slack Events subscription |
|
|
142
|
-
| `dxcrm push status [--slug <slug>] [--provider <p>]` | Show all subscriptions with expiry |
|
|
143
|
-
| `dxcrm push revoke <id>` | Revoke a subscription |
|
|
144
|
-
| `dxcrm push renew --all` | Manually renew expiring subscriptions |
|
|
145
|
-
|
|
146
|
-
### File Attachments
|
|
147
|
-
|
|
148
|
-
| Command | Description |
|
|
149
|
-
|---|---|
|
|
150
|
-
| `dxcrm attach <slug> <file>` | Attach a file to a customer (copies to `customers/<slug>/attachments/`) |
|
|
57
|
+
<br/>
|
|
151
58
|
|
|
152
|
-
|
|
153
|
-
dxcrm attach acme-corp ./proposals/acme-q2-2026.pdf
|
|
154
|
-
```
|
|
59
|
+
## How it works
|
|
155
60
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
| `dxcrm stages list` | List all configured pipeline stages |
|
|
161
|
-
| `dxcrm stages set <id> <label> [--order N] [--probability N] [--color #hex] [--final]` | Create or update a stage |
|
|
162
|
-
| `dxcrm stages delete <id>` | Remove a stage |
|
|
163
|
-
| `dxcrm stages reset` | Reset to default stages |
|
|
164
|
-
|
|
165
|
-
### Plugins
|
|
166
|
-
|
|
167
|
-
| Command | Description |
|
|
168
|
-
|---|---|
|
|
169
|
-
| `dxcrm plugin list` | List all registered plugins |
|
|
170
|
-
| `dxcrm plugin info <name>` | Show plugin details and exposed MCP tools |
|
|
171
|
-
|
|
172
|
-
**Built-in plugins:**
|
|
173
|
-
|
|
174
|
-
| Plugin | What it does |
|
|
175
|
-
|---|---|
|
|
176
|
-
| `slack` | Posts Slack notification after every interaction/deal update |
|
|
177
|
-
| `stripe` | Adds `get_stripe_context` MCP tool (revenue, subscriptions) |
|
|
178
|
-
| `linear` | Adds `get_linear_issues` MCP tool (linked issues per customer) |
|
|
179
|
-
|
|
180
|
-
### Intelligence & Governance
|
|
181
|
-
|
|
182
|
-
| Command | Description |
|
|
183
|
-
|---|---|
|
|
184
|
-
| `dxcrm usage [--slug <slug>]` | Transparent per-customer LLM token costs |
|
|
185
|
-
| `dxcrm memory add\|list\|search` | Agent memories (per customer + global), hybrid-searchable |
|
|
186
|
-
| `dxcrm sop add\|list\|find` | Standard operating procedures (global/per customer) |
|
|
187
|
-
| `dxcrm tone set\|show` | Per-customer writing tonality (feeds `draft_email`) |
|
|
188
|
-
| `dxcrm hygiene scan` | Data-quality scan (missing/malformed/duplicate) |
|
|
189
|
-
| `dxcrm policy set <tool> <auto\|approve\|block>` | Human-in-the-loop approval policy |
|
|
190
|
-
| `dxcrm approvals list\|approve\|reject` | Review gated agent actions |
|
|
191
|
-
| `dxcrm autofill <file>` | Transcript → structured summary/next-steps/objections |
|
|
192
|
-
| `dxcrm ask "<question>" [--slug <slug>]` | Natural-language Q&A over your CRM |
|
|
193
|
-
| `dxcrm nba <slug>` | Next-best-action recommendations |
|
|
194
|
-
| `dxcrm churn assess <slug>` / `dxcrm churn scan` | Churn early-warning (relationship-health based) |
|
|
195
|
-
| `dxcrm leadscore train` / `dxcrm leadscore predict <slug>` | Predictive lead-scoring (learned on won/lost) |
|
|
196
|
-
| `dxcrm enrich <slug> [--write]` | Enrich customer facts (offline + plugins, vault-backed) |
|
|
197
|
-
| `dxcrm coach <file>` | Conversation intelligence (talk-ratio/objections/coaching) |
|
|
198
|
-
| `dxcrm vault set\|get\|list\|rm` | Local AES-256-GCM credential vault |
|
|
199
|
-
| `dxcrm compliance` | Governance posture (AI-Act Art.50, local-LLM, PII, guardrails) |
|
|
200
|
-
|
|
201
|
-
See [docs/cli-reference.md](./docs/cli-reference.md) and [docs/compliance.md](./docs/compliance.md) for full details.
|
|
202
|
-
|
|
203
|
-
### Security & Compliance
|
|
204
|
-
|
|
205
|
-
| Command | Description |
|
|
206
|
-
|---|---|
|
|
207
|
-
| `dxcrm rbac set <actor> <role>` | Assign role (admin/manager/rep) |
|
|
208
|
-
| `dxcrm rbac show` | List configured roles |
|
|
209
|
-
| `dxcrm rbac check <actor> <tool>` | Check if actor can call a tool |
|
|
210
|
-
| `dxcrm gdpr erase <slug> [--confirm]` | GDPR erasure (dry-run without --confirm) |
|
|
211
|
-
| `dxcrm gdpr list-erasures` | Show erasure log |
|
|
212
|
-
| `dxcrm security-report [--output <file>]` | Generate Markdown security questionnaire |
|
|
213
|
-
|
|
214
|
-
### Backup & Restore (Enterprise)
|
|
215
|
-
|
|
216
|
-
| Command | Description |
|
|
217
|
-
|---|---|
|
|
218
|
-
| `dxcrm backup [path]` | Backup `customers/` + `.agentic/` with SHA-256 manifest |
|
|
219
|
-
| `dxcrm backup --encrypt` | AES-256-GCM encrypted backup |
|
|
220
|
-
| `dxcrm backup --remote s3://bucket/path/` | Backup + upload to S3 |
|
|
221
|
-
| `dxcrm backup --remote rsync://host:/path/` | Backup + rsync to remote |
|
|
222
|
-
| `dxcrm backup verify <path>` | Verify backup integrity (unzip -t + manifest check) |
|
|
223
|
-
| `dxcrm backup drill <path>` | Restore-drill: verify a backup is actually restorable |
|
|
224
|
-
| `dxcrm backup list` | List all logged backups with size + verification status |
|
|
225
|
-
| `dxcrm backup schedule --every day --keep 7` | Daily backups, keep last 7 |
|
|
226
|
-
| `dxcrm backup schedule --every week --keep 4 --monthly 12` | Grandfathering retention |
|
|
227
|
-
| `dxcrm restore <path>` | Restore from backup |
|
|
228
|
-
|
|
229
|
-
### Email Sequences (H1)
|
|
230
|
-
|
|
231
|
-
| Command | Description |
|
|
232
|
-
|---|---|
|
|
233
|
-
| `dxcrm sequence list` | List all sequences |
|
|
234
|
-
| `dxcrm sequence create <id> --name <name>` | Create a new sequence |
|
|
235
|
-
| `dxcrm sequence enroll <id> --slug <slug> --email <email>` | Enroll contact |
|
|
236
|
-
| `dxcrm sequence status` | Show active enrollments |
|
|
237
|
-
| `dxcrm sequence run` | Manually trigger daily send cycle |
|
|
238
|
-
|
|
239
|
-
### Quotes (H4)
|
|
240
|
-
|
|
241
|
-
| Command | Description |
|
|
242
|
-
|---|---|
|
|
243
|
-
| `dxcrm quote generate --slug <slug> --deal <dealName>` | Generate HTML quote (Q-YYYY-NNN) |
|
|
244
|
-
| `dxcrm quote list [--slug <slug>]` | List all quotes |
|
|
245
|
-
| `dxcrm quote get <quoteNumber>` | Get quote details |
|
|
246
|
-
|
|
247
|
-
### Tickets (H6)
|
|
248
|
-
|
|
249
|
-
| Command | Description |
|
|
250
|
-
|---|---|
|
|
251
|
-
| `dxcrm ticket list [--slug <slug>] [--status open] [--priority urgent]` | List tickets |
|
|
252
|
-
| `dxcrm ticket create <slug> --title <title> [--priority high]` | Open ticket with SLA |
|
|
253
|
-
| `dxcrm ticket update <slug> <ticketId> --status in-progress` | Update ticket |
|
|
254
|
-
| `dxcrm ticket close <slug> <ticketId> [--resolution <text>]` | Close ticket |
|
|
255
|
-
|
|
256
|
-
### Surveys (H7)
|
|
257
|
-
|
|
258
|
-
| Command | Description |
|
|
259
|
-
|---|---|
|
|
260
|
-
| `dxcrm survey create <id> [--type nps\|csat\|ces]` | Create survey definition |
|
|
261
|
-
| `dxcrm survey send <surveyId> --slug <slug> --email <email>` | Generate survey token + email |
|
|
262
|
-
| `dxcrm survey results <surveyId> [--slug <slug>]` | Show NPS score + responses |
|
|
263
|
-
|
|
264
|
-
### Knowledge Base (H8)
|
|
265
|
-
|
|
266
|
-
| Command | Description |
|
|
267
|
-
|---|---|
|
|
268
|
-
| `dxcrm kb list [--category <cat>] [--public]` | List KB articles |
|
|
269
|
-
| `dxcrm kb get <id>` | Get article body |
|
|
270
|
-
| `dxcrm kb search <query> [--public]` | Full-text search |
|
|
271
|
-
| `dxcrm kb create <id> --title <title> [--category <cat>]` | Create article |
|
|
272
|
-
| `dxcrm kb delete <id>` | Delete article |
|
|
61
|
+
```mermaid
|
|
62
|
+
flowchart LR
|
|
63
|
+
You["🧑 You"] --> Agent
|
|
64
|
+
Agent["🤖 Claude Code · Codex · Cursor"] <-->|Model Context Protocol| MCP
|
|
273
65
|
|
|
274
|
-
|
|
66
|
+
subgraph local["🔒 Your machine"]
|
|
67
|
+
MCP["⚙️ dxcrm MCP server<br/>55+ typed tools · RBAC · audit"]
|
|
68
|
+
Files["📁 customers/<name>/<br/>main_facts · interactions · pipeline"]
|
|
69
|
+
MCP <--> Files
|
|
70
|
+
end
|
|
275
71
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
These tools are available to any AI agent connected via MCP (Claude Code, Codex, Cursor, etc.):
|
|
279
|
-
|
|
280
|
-
| Tool | Description | RBAC |
|
|
281
|
-
|---|---|---|
|
|
282
|
-
| `get_capabilities` | Full tool list + CRM workflow guide | any |
|
|
283
|
-
| `get_active_session` | Current active customer session | any |
|
|
284
|
-
| `get_customer_context` | Complete customer brief (facts + interactions + pipeline) | any |
|
|
285
|
-
| `search_customer_knowledge` | Semantic search through customer history | any |
|
|
286
|
-
| `list_customers` | All customers with stage + deal value | any |
|
|
287
|
-
| `log_interaction` | Record call/email/meeting | rep+ |
|
|
288
|
-
| `update_deal` | Update pipeline deal stage/value | rep+ |
|
|
289
|
-
| `update_customer_facts` | Create or update customer profile (creates new customer if slug doesn't exist) | admin |
|
|
290
|
-
| `export_customer` | Export customer data as JSON/Markdown | any |
|
|
291
|
-
| `get_deal_health` | Score deal health (A–F, 0–100) per deal | any |
|
|
292
|
-
| `get_pipeline_forecast` | Aggregate weighted pipeline revenue | any |
|
|
293
|
-
| `summarize_meeting` | Summarize transcript + log interaction | rep+ |
|
|
294
|
-
| `get_pipeline_stages` | List configured pipeline stages | any |
|
|
295
|
-
| `get_market_intelligence` | Search across all customers for patterns | any |
|
|
296
|
-
| `get_relationship_graph` | Stakeholder map + knowledge graph (champions, blockers, economic buyers) | any |
|
|
297
|
-
| `get_relationship_health` | Health score (0–100, A–F) per contact, decay detection, recommendations | any |
|
|
298
|
-
| `run_deal_agent` | Analyze deal + generate action plan (observe/suggest/act modes) | rep+ |
|
|
299
|
-
| `approve_agent_action` | Approve or reject a queued deal agent action | rep+ |
|
|
300
|
-
| `simulate_revenue` | Monte Carlo pipeline forecast with P10/P50/P90 confidence intervals | any |
|
|
301
|
-
| `get_playbook` | Retrieve matching playbooks for a deal situation | any |
|
|
302
|
-
| `create_playbook` | Create or update a playbook with trigger DSL | rep+ |
|
|
303
|
-
| `list_playbooks` | List all playbooks for a customer | any |
|
|
304
|
-
| `distill_playbook` | LLM-extract reusable playbook from won/lost deal history | rep+ |
|
|
305
|
-
| `pursue_goal` | Set goal + decompose into prioritized deal action plan | manager+ |
|
|
306
|
-
| `get_goal_status` | Get active goals, progress, and sub-goal breakdown | any |
|
|
307
|
-
| `register_push_subscription` | Register real-time push subscription (Gmail/MS Graph/Slack) | admin |
|
|
308
|
-
| `get_push_status` | Show push subscriptions with expiry and event counts | any |
|
|
309
|
-
| `get_org_intelligence` | Stakeholder map: champions, buyers, blockers, health scores, risk flags | any |
|
|
310
|
-
| `open_deal_room` | Multi-agent deal brief: graph + health + simulation + playbook in one call | any |
|
|
311
|
-
| `get_proactive_briefing` | Daily briefing: urgent alerts, opportunities, P50/P90 forecast, top action | any |
|
|
312
|
-
| `list_email_templates` | List email templates by category (outreach/followup/support) | any |
|
|
313
|
-
| `get_email_template` | Get full template with variable placeholders | any |
|
|
314
|
-
| `draft_email` | Draft personalized email from template + customer facts | rep+ |
|
|
315
|
-
| `enroll_in_sequence` | Enroll contact in multi-step email sequence | rep+ |
|
|
316
|
-
| `list_sequence_enrollments` | List enrollments; filter by slug or status | any |
|
|
317
|
-
| `unenroll_from_sequence` | Pause an active enrollment | rep+ |
|
|
318
|
-
| `list_sequences` | List all sequences with step count + enrollment count | any |
|
|
319
|
-
| `generate_quote` | Create HTML quote with auto-numbering (Q-YYYY-NNN) | rep+ |
|
|
320
|
-
| `get_quote_status` | Get quote or list all quotes for a customer | any |
|
|
321
|
-
| `get_booking_link` | Get Calendly booking URL, optionally pre-filled with customer info | rep+ |
|
|
322
|
-
| `create_ticket` | Open support ticket with auto-SLA due date | rep+ |
|
|
323
|
-
| `update_ticket` | Update ticket status or assignee | rep+ |
|
|
324
|
-
| `list_tickets` | List tickets sorted by priority (cross-customer) | any |
|
|
325
|
-
| `close_ticket` | Close ticket and optionally log resolution as interaction | rep+ |
|
|
326
|
-
| `send_nps_survey` | Generate NPS survey token + HTML email body | rep+ |
|
|
327
|
-
| `get_survey_results` | NPS score, promoters/passives/detractors, all responses | any |
|
|
328
|
-
| `search_knowledge_base` | Full-text search across KB articles | any |
|
|
329
|
-
| `create_kb_article` | Create or update knowledge base article | rep+ |
|
|
330
|
-
| `backup_now` | Trigger immediate backup with manifest + integrity check | admin |
|
|
331
|
-
| `list_backups` | List backups with date, size, verification status | any |
|
|
332
|
-
| `trigger_sync` | Force immediate Gmail sync for one or all customers (bypasses 30-min daemon cycle) | rep+ |
|
|
333
|
-
| `get_audit_log` | Read append-only audit log — filter by customer, actor, or limit | admin |
|
|
334
|
-
|
|
335
|
-
### Tool Examples
|
|
336
|
-
|
|
337
|
-
```json
|
|
338
|
-
// Get customer context before a meeting
|
|
339
|
-
get_customer_context({ "slug": "acme-corp" })
|
|
340
|
-
|
|
341
|
-
// Log a call after it ends
|
|
342
|
-
log_interaction({
|
|
343
|
-
"slug": "acme-corp",
|
|
344
|
-
"type": "Call",
|
|
345
|
-
"summary": "Discussed Q3 renewal. Budget confirmed at €50k.",
|
|
346
|
-
"with": "Max Müller",
|
|
347
|
-
"nextSteps": ["Send proposal by Friday"],
|
|
348
|
-
"direction": "inbound"
|
|
349
|
-
})
|
|
350
|
-
|
|
351
|
-
// Update deal stage
|
|
352
|
-
update_deal({
|
|
353
|
-
"slug": "acme-corp",
|
|
354
|
-
"dealName": "Q3 Renewal",
|
|
355
|
-
"stage": "negotiation",
|
|
356
|
-
"value": 50000,
|
|
357
|
-
"probability": 75
|
|
358
|
-
})
|
|
359
|
-
|
|
360
|
-
// Search historical emails
|
|
361
|
-
search_customer_knowledge({
|
|
362
|
-
"slug": "acme-corp",
|
|
363
|
-
"query": "pricing negotiation budget"
|
|
364
|
-
})
|
|
365
|
-
|
|
366
|
-
// Run deal agent (suggest mode — queues actions for review)
|
|
367
|
-
run_deal_agent({
|
|
368
|
-
"slug": "acme-corp",
|
|
369
|
-
"dealName": "Q3 Renewal",
|
|
370
|
-
"autonomyLevel": "suggest"
|
|
371
|
-
})
|
|
372
|
-
|
|
373
|
-
// Approve a queued agent action
|
|
374
|
-
approve_agent_action({
|
|
375
|
-
"slug": "acme-corp",
|
|
376
|
-
"actionId": "da_1748346900000_a3f7x2",
|
|
377
|
-
"approved": true
|
|
378
|
-
})
|
|
379
|
-
|
|
380
|
-
// Get matching playbook for a deal in negotiation
|
|
381
|
-
get_playbook({
|
|
382
|
-
"slug": "acme-corp",
|
|
383
|
-
"stage": "negotiation",
|
|
384
|
-
"value": 75000,
|
|
385
|
-
"daysSinceContact": 10
|
|
386
|
-
})
|
|
387
|
-
|
|
388
|
-
// Create a playbook from proven tactics
|
|
389
|
-
create_playbook({
|
|
390
|
-
"slug": "acme-corp",
|
|
391
|
-
"name": "enterprise-renewal",
|
|
392
|
-
"trigger": "deal_stage_negotiation AND value > 50000 AND days_stalled > 7",
|
|
393
|
-
"content": "# Enterprise Renewal\n\n## Steps\n1. Call economic buyer directly.",
|
|
394
|
-
"successRate": 0.73
|
|
395
|
-
})
|
|
396
|
-
|
|
397
|
-
// Extract playbook from a won deal
|
|
398
|
-
distill_playbook({
|
|
399
|
-
"slug": "acme-corp",
|
|
400
|
-
"dealName": "Q3 Enterprise License",
|
|
401
|
-
"outcome": "won"
|
|
402
|
-
})
|
|
403
|
-
|
|
404
|
-
// Set a revenue goal — get decomposed action plan
|
|
405
|
-
pursue_goal({
|
|
406
|
-
"goal": "Close €500k ARR this quarter",
|
|
407
|
-
"deadline": "2026-09-30",
|
|
408
|
-
"context": "Focus on existing pipeline"
|
|
409
|
-
})
|
|
410
|
-
|
|
411
|
-
// Check goal progress
|
|
412
|
-
get_goal_status()
|
|
413
|
-
|
|
414
|
-
// Register Gmail Pub/Sub push subscription (events arrive in <60s instead of 30min polling)
|
|
415
|
-
register_push_subscription({
|
|
416
|
-
"provider": "gmail",
|
|
417
|
-
"slug": "acme-corp",
|
|
418
|
-
"webhookUrl": "https://myserver.com/webhooks/gmail",
|
|
419
|
-
"gmailTopicName": "projects/my-project/topics/gmail-push"
|
|
420
|
-
})
|
|
421
|
-
|
|
422
|
-
// Check all active push subscriptions
|
|
423
|
-
get_push_status()
|
|
424
|
-
// → { subscriptions: [{ id, provider, slug, status, expiresInHours, needsRenewal, eventsProcessed }], summary: {...} }
|
|
425
|
-
|
|
426
|
-
// Stakeholder map: champions, buyers, blockers with health scores
|
|
427
|
-
get_org_intelligence({ "slug": "acme-corp" })
|
|
428
|
-
// → { slug, people: [{ name, role, healthScore, daysSinceContact, riskFlags }], missingRoles, riskAssessment, recommendation }
|
|
429
|
-
|
|
430
|
-
// Multi-agent deal brief (parallel orchestration of 6 sub-systems)
|
|
431
|
-
open_deal_room({ "slug": "acme-corp", "dealName": "Enterprise License 2026" })
|
|
432
|
-
// → { executiveSummary, topPriorities, riskScore, stakeholders, dealHealth, revenueSimulation, recommendedPlaybook }
|
|
433
|
-
|
|
434
|
-
// Proactive morning briefing (scans all customers automatically)
|
|
435
|
-
get_proactive_briefing()
|
|
436
|
-
// → { urgent: ["acme-corp: Sarah silent 45d"], opportunities: [...], forecast: "P50 €287k", topAction: "..." }
|
|
72
|
+
MCP -. you configure .-> Ext["✉️ Gmail · Outlook · Drive · Meet"]
|
|
437
73
|
```
|
|
438
74
|
|
|
439
|
-
|
|
75
|
+
| | Step | What happens |
|
|
76
|
+
| ------ | ----------------- | ---------------------------------------------------------------------------- |
|
|
77
|
+
| **01** | `dxcrm init` | Detects & wires up Claude Code, Codex, Cursor, Claude Desktop — one command. |
|
|
78
|
+
| **02** | Bring your data | `dxcrm create`, import from HubSpot/Salesforce/Pipedrive/CSV, or sync Gmail. |
|
|
79
|
+
| **03** | Just ask | Your agent briefs you, drafts emails, forecasts, and logs — grounded in your files. |
|
|
440
80
|
|
|
441
|
-
|
|
81
|
+
<br/>
|
|
442
82
|
|
|
443
|
-
|
|
83
|
+
<div align="center">
|
|
444
84
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
| Claude Code | 1 | CLAUDE.md + ~/.claude.json + .claude/settings.json |
|
|
448
|
-
| Codex CLI | 1 | AGENTS.md + ~/.codex/config.toml |
|
|
449
|
-
| Grok Build (xAI) | 1 | AGENTS.md + ~/.grok/user-settings.json + .grok/settings.json |
|
|
450
|
-
| OpenClaw | 1 | SOUL.md + AGENTS.md + TOOLS.md |
|
|
451
|
-
| Hermes Agent | 1 | SOUL.md + Skill |
|
|
452
|
-
| Antigravity CLI (`agy`) | 1 | GEMINI.md + AGENTS.md + SKILL.md |
|
|
453
|
-
| Cursor | 2 | `.cursor/rules/datasynx-crm.mdc` |
|
|
454
|
-
| Windsurf | 2 | MCP config only |
|
|
455
|
-
| Cline | 2 | MCP config only |
|
|
456
|
-
| Claude Desktop | 2 | MCP config only |
|
|
85
|
+
**Works with** · 🟣 Claude Code · 🟢 Codex · 🔵 Cursor · 🟠 Claude Desktop · 🔌 any MCP client
|
|
86
|
+
<br/><sub>If it speaks the Model Context Protocol, it's connected.</sub>
|
|
457
87
|
|
|
458
|
-
|
|
88
|
+
</div>
|
|
459
89
|
|
|
460
|
-
|
|
90
|
+
<br/>
|
|
91
|
+
|
|
92
|
+
## Datasynx Agentic CRM is right for you if
|
|
93
|
+
|
|
94
|
+
- ✅ You **live in Claude Code / Codex / Cursor** and want your CRM there too — not in another browser tab.
|
|
95
|
+
- ✅ You want customer data as **plain files you own**, versionable in Git, readable forever.
|
|
96
|
+
- ✅ You're done **pasting context into prompts** — your agent should already know the account.
|
|
97
|
+
- ✅ You want **deal scoring, forecasting, and next-best-actions** on demand, not a quarterly export.
|
|
98
|
+
- ✅ You care about **privacy & GDPR** — local-first, built-in erasure, and zero telemetry.
|
|
99
|
+
- ✅ You want a CRM you can **fork and extend in TypeScript**, not file a feature request and wait.
|
|
100
|
+
|
|
101
|
+
<br/>
|
|
102
|
+
|
|
103
|
+
## Features
|
|
104
|
+
|
|
105
|
+
<table>
|
|
106
|
+
<tr>
|
|
107
|
+
<td align="center" width="33%">
|
|
108
|
+
<h3>📁 Markdown-native data</h3>
|
|
109
|
+
Every customer is a folder of <code>main_facts</code>, <code>interactions</code>, and <code>pipeline</code> files. Git-friendly, grep-able, yours forever.
|
|
110
|
+
</td>
|
|
111
|
+
<td align="center" width="33%">
|
|
112
|
+
<h3>🔌 55+ MCP tools</h3>
|
|
113
|
+
Typed tools for context, deals, comms, and intelligence — discoverable by agents via <code>get_capabilities</code>.
|
|
114
|
+
</td>
|
|
115
|
+
<td align="center" width="33%">
|
|
116
|
+
<h3>🧠 Deal & relationship IQ</h3>
|
|
117
|
+
Deal-health grades, relationship graphs, champion/blocker maps, and next-best-action recommendations.
|
|
118
|
+
</td>
|
|
119
|
+
</tr>
|
|
120
|
+
<tr>
|
|
121
|
+
<td align="center">
|
|
122
|
+
<h3>📈 Revenue forecasting</h3>
|
|
123
|
+
Weighted pipeline plus a Monte Carlo simulation (P10/P50/P90) and at-risk-revenue analysis.
|
|
124
|
+
</td>
|
|
125
|
+
<td align="center">
|
|
126
|
+
<h3>✉️ Comms that close</h3>
|
|
127
|
+
Email templates, multi-step sequences, HTML quotes, tickets with SLAs, and NPS/CSAT surveys.
|
|
128
|
+
</td>
|
|
129
|
+
<td align="center">
|
|
130
|
+
<h3>🔎 Hybrid memory</h3>
|
|
131
|
+
Vector + full-text search across every synced email, call transcript, and email attachment — PDFs, Office docs and images converted to Markdown and indexed on-device (LanceDB).
|
|
132
|
+
</td>
|
|
133
|
+
</tr>
|
|
134
|
+
<tr>
|
|
135
|
+
<td align="center">
|
|
136
|
+
<h3>🔐 Enterprise controls</h3>
|
|
137
|
+
Role-based access, an append-only audit trail, and an AES-256-GCM credential vault.
|
|
138
|
+
</td>
|
|
139
|
+
<td align="center">
|
|
140
|
+
<h3>🛡️ Privacy by design</h3>
|
|
141
|
+
Local-first storage, one-command GDPR erasure, and <strong>zero telemetry</strong>.
|
|
142
|
+
</td>
|
|
143
|
+
<td align="center">
|
|
144
|
+
<h3>🤖 Wake-triggered agents</h3>
|
|
145
|
+
An agent per customer pings you (Telegram) the moment a relevant email lands.
|
|
146
|
+
</td>
|
|
147
|
+
</tr>
|
|
148
|
+
</table>
|
|
149
|
+
|
|
150
|
+
<br/>
|
|
151
|
+
|
|
152
|
+
## Without vs. with Datasynx Agentic CRM
|
|
153
|
+
|
|
154
|
+
| Without | With |
|
|
155
|
+
| -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
|
|
156
|
+
| ❌ You paste account context into every prompt — and still miss things. | ✅ One MCP call loads the full, current briefing. The agent already knows the account. |
|
|
157
|
+
| ❌ Per-seat SaaS; your customer data lives in someone else's cloud. | ✅ Free & open source (MIT). Data is plain Markdown on your machine. |
|
|
158
|
+
| ❌ Switch to a separate CRM UI to update a deal. | ✅ Your agent updates the pipeline in place, from inside Claude Code / Codex / Cursor. |
|
|
159
|
+
| ❌ "What exactly did we promise Acme in March?" | ✅ Hybrid search over every synced email and transcript answers in seconds. |
|
|
160
|
+
| ❌ Forecasting means wrangling a spreadsheet. | ✅ Weighted + Monte Carlo forecast on demand, with at-risk revenue flagged. |
|
|
161
|
+
| ❌ A security/GDPR review triggers a fire drill. | ✅ `dxcrm security-report`, built-in GDPR erasure, RBAC, and audit logging out of the box.|
|
|
162
|
+
|
|
163
|
+
<br/>
|
|
164
|
+
|
|
165
|
+
## Why it's different
|
|
166
|
+
|
|
167
|
+
| | |
|
|
168
|
+
| ------------------------------ | ------------------------------------------------------------------------------------------------------------- |
|
|
169
|
+
| **Local-first by default.** | Customers are Markdown folders on your disk. No database to run, no cloud to trust. |
|
|
170
|
+
| **MCP-native, not bolted-on.** | Agents call typed tools — not a scraped UI — with RBAC and an audit trail on every write. |
|
|
171
|
+
| **Grounded answers.** | Every response traces back to files you can open and verify. No hallucinated pipeline. |
|
|
172
|
+
| **Hybrid recall.** | Vector + full-text search over your synced inbox and call transcripts, fully on-device. |
|
|
173
|
+
| **Zero telemetry.** | The CLI and MCP server phone home to nothing. The only outbound calls are integrations you explicitly enable. |
|
|
174
|
+
| **Yours to extend.** | MIT-licensed TypeScript. Fork it, add a tool, ship it. |
|
|
175
|
+
|
|
176
|
+
<br/>
|
|
177
|
+
|
|
178
|
+
## What's under the hood
|
|
179
|
+
|
|
180
|
+
`dxcrm` is a CLI **and** an MCP server. One install gives your agents a complete revenue toolkit:
|
|
461
181
|
|
|
462
182
|
```
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
│
|
|
466
|
-
│
|
|
467
|
-
│
|
|
468
|
-
│
|
|
469
|
-
│
|
|
470
|
-
│
|
|
471
|
-
│
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
183
|
+
┌──────────────────────────────────────────────────────────────────┐
|
|
184
|
+
│ dxcrm MCP server · 55+ tools │
|
|
185
|
+
│ │
|
|
186
|
+
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────────┐ │
|
|
187
|
+
│ │ Customer │ │ Pipeline │ │Relationship│ │ Forecasting │ │
|
|
188
|
+
│ │ Context │ │ & Deals │ │ Graph │ │ (Monte Carlo) │ │
|
|
189
|
+
│ └────────────┘ └────────────┘ └────────────┘ └────────────────┘ │
|
|
190
|
+
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────────┐ │
|
|
191
|
+
│ │ Email · Seq│ │ Quotes · │ │ Tickets · │ │ Knowledge Base │ │
|
|
192
|
+
│ │ · Drafts │ │ Booking │ │ Surveys │ │ & Playbooks │ │
|
|
193
|
+
│ └────────────┘ └────────────┘ └────────────┘ └────────────────┘ │
|
|
194
|
+
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────────┐ │
|
|
195
|
+
│ │ RBAC · │ │ GDPR · │ │ Encrypted │ │ Goals · Agents │ │
|
|
196
|
+
│ │ Audit │ │ Erasure │ │ Vault │ │ · Approvals │ │
|
|
197
|
+
│ └────────────┘ └────────────┘ └────────────┘ └────────────────┘ │
|
|
198
|
+
└──────────────────────────────────────────────────────────────────┘
|
|
199
|
+
▲ ▲ ▲ ▲
|
|
200
|
+
┌─────┴─────┐ ┌──────┴─────┐ ┌──────┴─────┐ ┌──────┴──────┐
|
|
201
|
+
│ Claude │ │ Codex │ │ Cursor │ │ HTTP / team │
|
|
202
|
+
│ Code │ │ │ │ │ │ server │
|
|
203
|
+
└───────────┘ └────────────┘ └────────────┘ └─────────────┘
|
|
204
|
+
|
|
205
|
+
Sync in: Gmail · Outlook · Google Drive · Teams · Google Meet
|
|
206
|
+
Import: HubSpot · Salesforce · Pipedrive · CSV
|
|
479
207
|
```
|
|
480
208
|
|
|
481
|
-
|
|
209
|
+
→ Full reference: **[54 CLI commands](https://datasynx-ai.github.io/datasynx-crm/#full-cli-reference)** · **[55+ MCP tools](https://datasynx-ai.github.io/datasynx-crm/#full-mcp-reference)**
|
|
482
210
|
|
|
483
|
-
|
|
484
|
-
---
|
|
485
|
-
name: Acme Corp
|
|
486
|
-
domain: acme.com
|
|
487
|
-
email: ceo@acme.com
|
|
488
|
-
phone: +49 89 12345678
|
|
489
|
-
industry: SaaS
|
|
490
|
-
primary_contact: Max Müller
|
|
491
|
-
relationship_stage: active # prospect | active | churned | paused
|
|
492
|
-
deal_value: 50000
|
|
493
|
-
tags: [enterprise, strategic]
|
|
494
|
-
created: 2026-01-15
|
|
495
|
-
updated: 2026-05-26
|
|
496
|
-
---
|
|
497
|
-
|
|
498
|
-
## Quick Reference
|
|
499
|
-
Key facts in 2-3 bullet points.
|
|
211
|
+
<br/>
|
|
500
212
|
|
|
501
|
-
##
|
|
502
|
-
- Max Müller (CEO) — max@acme.com
|
|
213
|
+
## 🚀 Quickstart
|
|
503
214
|
|
|
504
|
-
|
|
505
|
-
Any blocking facts the agent must know before every conversation.
|
|
506
|
-
|
|
507
|
-
## Open Questions
|
|
508
|
-
Outstanding items needing follow-up.
|
|
509
|
-
```
|
|
510
|
-
|
|
511
|
-
---
|
|
512
|
-
|
|
513
|
-
## Security & Compliance
|
|
215
|
+
> **Requirements:** Node.js ≥ 20. Free and self-hosted — no account required.
|
|
514
216
|
|
|
515
217
|
```bash
|
|
516
|
-
|
|
517
|
-
export DXCRM_ACTOR=alice
|
|
518
|
-
dxcrm rbac set alice admin # Roles: admin | manager | rep
|
|
519
|
-
dxcrm rbac show # List all configured roles
|
|
520
|
-
dxcrm rbac check alice update_deal # Check permission
|
|
521
|
-
|
|
522
|
-
# GDPR Erasure
|
|
523
|
-
dxcrm gdpr erase acme-corp # Dry-run (shows what would be deleted)
|
|
524
|
-
dxcrm gdpr erase acme-corp --confirm # Permanent deletion + audit entry
|
|
525
|
-
dxcrm gdpr list-erasures # Erasure history
|
|
526
|
-
|
|
527
|
-
# Security Questionnaire
|
|
528
|
-
dxcrm security-report # Print to terminal
|
|
529
|
-
dxcrm security-report --output sec-report.md # Write to file
|
|
530
|
-
```
|
|
531
|
-
|
|
532
|
-
**RBAC roles:**
|
|
533
|
-
- `admin` — full access: all tools including `update_customer_facts` and `export_customer`
|
|
534
|
-
- `manager` — `log_interaction` + `update_deal` + all read tools
|
|
535
|
-
- `rep` — `log_interaction` + `update_deal` + all read tools
|
|
536
|
-
|
|
537
|
-
---
|
|
538
|
-
|
|
539
|
-
## Sync Setup
|
|
540
|
-
|
|
541
|
-
### Gmail
|
|
218
|
+
npm install -g @datasynx/agentic-crm
|
|
542
219
|
|
|
543
|
-
|
|
544
|
-
dxcrm
|
|
545
|
-
dxcrm sync acme-corp # Sync emails for one customer
|
|
546
|
-
dxcrm daemon start # Background sync every 15 min
|
|
220
|
+
dxcrm init # detect & configure Claude Code, Codex, Cursor, ...
|
|
221
|
+
dxcrm create "Acme Corp" --domain acme.com # create your first customer
|
|
547
222
|
```
|
|
548
223
|
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
Write token file, then sync:
|
|
224
|
+
Now open your AI agent and ask: **"What's the status on Acme Corp?"** — you'll get a grounded, current brief in seconds.
|
|
552
225
|
|
|
553
|
-
|
|
554
|
-
# Write token (from your OAuth app)
|
|
555
|
-
echo '{"accessToken":"<token>"}' > ~/.dxcrm/.agentic/microsoft-token.json
|
|
556
|
-
|
|
557
|
-
dxcrm sync --provider microsoft
|
|
558
|
-
```
|
|
559
|
-
|
|
560
|
-
### Salesforce Import
|
|
226
|
+
Migrating? Bring your existing data with you:
|
|
561
227
|
|
|
562
228
|
```bash
|
|
563
|
-
dxcrm import --from salesforce
|
|
564
|
-
|
|
565
|
-
--url https://myco.salesforce.com
|
|
229
|
+
dxcrm import ./hubspot-export/ --from hubspot # also: salesforce · pipedrive · csv
|
|
230
|
+
dxcrm sync acme-corp # pull Gmail threads + transcripts
|
|
566
231
|
```
|
|
567
232
|
|
|
568
|
-
|
|
233
|
+
Syncing Gmail also downloads every attachment, converts it to Markdown
|
|
234
|
+
(PDF, DOCX, XLSX, PPTX, CSV, HTML, and images via on-device OCR), stores it under
|
|
235
|
+
`customers/<slug>/attachments/`, links it from `interactions.md`, and indexes the
|
|
236
|
+
text into LanceDB so it's semantically searchable. Export a complete, sendable
|
|
237
|
+
bundle of all conversations and documents for a customer with the
|
|
238
|
+
`export_customer` MCP tool (`includeAttachmentContent: true`).
|
|
569
239
|
|
|
570
|
-
|
|
240
|
+
<br/>
|
|
571
241
|
|
|
572
|
-
|
|
573
|
-
dxcrm import --from pipedrive --mode api \
|
|
574
|
-
--token <api_token> \
|
|
575
|
-
--url https://myco.pipedrive.com
|
|
576
|
-
```
|
|
242
|
+
## What it's not
|
|
577
243
|
|
|
578
|
-
|
|
244
|
+
| | |
|
|
245
|
+
| ---------------------------- | -------------------------------------------------------------------------------------------- |
|
|
246
|
+
| **Not another SaaS tab.** | It lives inside your AI agent and your filesystem — not a browser dashboard you have to open. |
|
|
247
|
+
| **Not a database.** | Customers are Markdown folders. Back them up with `cp`, version them with `git`. |
|
|
248
|
+
| **Not a chatbot wrapper.** | 55+ typed MCP tools with RBAC and audit — not a single prompt pretending to be a product. |
|
|
249
|
+
| **Not a data grab.** | Zero telemetry. Your data never leaves your machine unless you wire up an integration. |
|
|
250
|
+
| **Not lock-in.** | MIT-licensed, plain files, export anytime. Leaving is a `cp -r` away. |
|
|
579
251
|
|
|
580
|
-
|
|
252
|
+
<br/>
|
|
581
253
|
|
|
582
|
-
##
|
|
254
|
+
## Built for teams
|
|
583
255
|
|
|
584
|
-
|
|
256
|
+
Run `dxcrm` solo, or stand up a shared MCP server for the whole revenue org:
|
|
585
257
|
|
|
586
|
-
|
|
258
|
+
- **Shared HTTP MCP server** — `dxcrm server` exposes the same tools to every teammate's agent.
|
|
259
|
+
- **RBAC** — `admin` / `manager` / `rep` roles scope what each actor (and their agent) can read and write.
|
|
260
|
+
- **SSO** — authenticate via WorkOS.
|
|
261
|
+
- **Audit & compliance** — append-only audit trail, one-command GDPR erasure, and `dxcrm security-report` for vendor reviews.
|
|
587
262
|
|
|
588
|
-
|
|
589
|
-
# 1. Export your Telegram credentials
|
|
590
|
-
export TELEGRAM_BOT_TOKEN=123456789:AAxxxxx
|
|
591
|
-
export TELEGRAM_CHAT_ID=987654321
|
|
263
|
+
→ See the [Deployment](./docs/deployment.md) and [Team Setup](./docs/team-setup.md) guides.
|
|
592
264
|
|
|
593
|
-
|
|
594
|
-
dxcrm agent spawn acme-corp --channel telegram
|
|
265
|
+
<br/>
|
|
595
266
|
|
|
596
|
-
|
|
597
|
-
dxcrm agent spawn beta-gmbh --channel telegram --chat-id 111222333
|
|
267
|
+
## FAQ
|
|
598
268
|
|
|
599
|
-
|
|
600
|
-
|
|
269
|
+
**Where does my data live?**
|
|
270
|
+
In a folder you choose, as Markdown files. No database, no cloud. Back it up and version it like code.
|
|
601
271
|
|
|
602
|
-
|
|
603
|
-
dxcrm
|
|
604
|
-
```
|
|
272
|
+
**Which AI tools work with it?**
|
|
273
|
+
Anything that speaks MCP — Claude Code, Codex, Cursor, Claude Desktop, and more. `dxcrm init` auto-configures the ones it detects.
|
|
605
274
|
|
|
606
|
-
|
|
275
|
+
**Is it really free?**
|
|
276
|
+
Yes. MIT-licensed and self-hosted. No seats, no metering.
|
|
607
277
|
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
3. If an agent config exists for that customer (`.agentic/agents/<slug>.agent.json`), a Telegram message is sent to the configured `chatId` (or `TELEGRAM_CHAT_ID` env var).
|
|
611
|
-
4. The message contains customer name, email subject, and a link to open the deal room.
|
|
278
|
+
**Can a whole team use it?**
|
|
279
|
+
Yes — run the shared HTTP MCP server with RBAC and SSO. See [Team Setup](./docs/team-setup.md).
|
|
612
280
|
|
|
613
|
-
|
|
281
|
+
**Can I migrate from HubSpot / Salesforce / Pipedrive?**
|
|
282
|
+
Yes — `dxcrm import` brings in contacts and activity history. CSV is supported too.
|
|
614
283
|
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
| `TELEGRAM_BOT_TOKEN` | Yes (for agents) | Bot token from @BotFather |
|
|
618
|
-
| `TELEGRAM_CHAT_ID` | Yes (for agents) | Default chat ID for all agents |
|
|
619
|
-
| `DXCRM_DATA_DIR` | No | Override data directory (default: `~/.dxcrm`) |
|
|
620
|
-
| `DXCRM_ACTOR` | No | Set RBAC actor identity for audit trail |
|
|
621
|
-
| `DXCRM_SURVEY_SECRET` | No | HMAC secret for tamper-proof survey tokens |
|
|
622
|
-
| `ANTHROPIC_API_KEY` | No | Enables LLM features (summarize_meeting, distill_playbook, run_deal_agent). Falls back gracefully to rule-based analysis. |
|
|
284
|
+
**Does it send my data anywhere?**
|
|
285
|
+
No telemetry, ever. The only outbound calls are the integrations you explicitly configure (e.g. Gmail) and the LLM your agent already uses.
|
|
623
286
|
|
|
624
|
-
|
|
287
|
+
<br/>
|
|
625
288
|
|
|
626
|
-
##
|
|
289
|
+
## Documentation
|
|
627
290
|
|
|
628
|
-
|
|
291
|
+
📖 **Full docs site:** **[datasynx-ai.github.io/datasynx-crm](https://datasynx-ai.github.io/datasynx-crm/)**
|
|
629
292
|
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
293
|
+
- [Quickstart — real Gmail in 5 minutes](./docs/quickstart-real.md)
|
|
294
|
+
- [CLI Reference](./docs/cli-reference.md) · [MCP Tools](./docs/mcp-tools.md) · [Schemas](./docs/schemas.md)
|
|
295
|
+
- [Framework Integrations](./docs/integrations.md) · [Deployment](./docs/deployment.md) · [Team Setup](./docs/team-setup.md)
|
|
296
|
+
- [Compliance](./docs/compliance.md)
|
|
634
297
|
|
|
635
|
-
|
|
298
|
+
<br/>
|
|
636
299
|
|
|
637
|
-
|
|
638
|
-
{
|
|
639
|
-
"mcpServers": {
|
|
640
|
-
"datasynx-opencrm": {
|
|
641
|
-
"url": "http://vm-ip:3847/mcp"
|
|
642
|
-
}
|
|
643
|
-
}
|
|
644
|
-
}
|
|
645
|
-
```
|
|
300
|
+
## Development
|
|
646
301
|
|
|
647
|
-
Set actor identity per session:
|
|
648
302
|
```bash
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
---
|
|
303
|
+
git clone https://github.com/datasynx-ai/datasynx-crm
|
|
304
|
+
cd datasynx-crm
|
|
305
|
+
npm ci
|
|
653
306
|
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
// ~/.claude.json
|
|
660
|
-
{
|
|
661
|
-
"mcpServers": {
|
|
662
|
-
"datasynx-opencrm": {
|
|
663
|
-
"type": "stdio",
|
|
664
|
-
"command": "node",
|
|
665
|
-
"args": ["/path/to/node_modules/@datasynx/agentic-crm/dist/mcp.js"]
|
|
666
|
-
}
|
|
667
|
-
}
|
|
668
|
-
}
|
|
307
|
+
npm test # Vitest (TDD) — 3000+ tests
|
|
308
|
+
npm run build # tsdown → dist/
|
|
309
|
+
npm run typecheck # strict TypeScript
|
|
310
|
+
npm run lint # ESLint (zero warnings)
|
|
311
|
+
npm run docs:generate # regenerate the CLI/MCP reference from code
|
|
669
312
|
```
|
|
670
313
|
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
```json
|
|
674
|
-
// ~/.grok/user-settings.json
|
|
675
|
-
// NOTE: Grok uses an ARRAY for mcpServers (not an object/map like Claude)
|
|
676
|
-
{
|
|
677
|
-
"mcpServers": [
|
|
678
|
-
{
|
|
679
|
-
"name": "datasynx-opencrm",
|
|
680
|
-
"transport": {
|
|
681
|
-
"type": "stdio",
|
|
682
|
-
"command": "node",
|
|
683
|
-
"args": ["/path/to/node_modules/@datasynx/agentic-crm/dist/mcp.js"],
|
|
684
|
-
"env": { "DXCRM_DATA_DIR": "/path/to/your/.dxcrm" }
|
|
685
|
-
}
|
|
686
|
-
}
|
|
687
|
-
]
|
|
688
|
-
}
|
|
689
|
-
```
|
|
314
|
+
New contributors: start with **[CONTRIBUTING.md](./CONTRIBUTING.md)** (TDD workflow, Conventional Commits, docs generation). The published reference is generated from code and guarded by a drift test, so the docs can never fall behind what ships.
|
|
690
315
|
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
### Claude Desktop
|
|
694
|
-
|
|
695
|
-
```json
|
|
696
|
-
// macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
|
|
697
|
-
// Windows: %APPDATA%\Claude\claude_desktop_config.json
|
|
698
|
-
// Linux: ~/.config/claude-desktop/claude_desktop_config.json
|
|
699
|
-
{
|
|
700
|
-
"mcpServers": {
|
|
701
|
-
"datasynx-opencrm": {
|
|
702
|
-
"command": "node",
|
|
703
|
-
"args": ["/path/to/node_modules/@datasynx/agentic-crm/dist/mcp.js"]
|
|
704
|
-
}
|
|
705
|
-
}
|
|
706
|
-
}
|
|
707
|
-
```
|
|
316
|
+
<br/>
|
|
708
317
|
|
|
709
|
-
|
|
318
|
+
## Roadmap
|
|
710
319
|
|
|
711
|
-
|
|
320
|
+
**Shipped**
|
|
712
321
|
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
322
|
+
- ✅ 55+ MCP tools · 54 CLI commands · local-first Markdown store
|
|
323
|
+
- ✅ Hybrid (vector + full-text) search over emails & transcripts
|
|
324
|
+
- ✅ Sync: Gmail, Outlook, Google Drive, Teams, Google Meet
|
|
325
|
+
- ✅ Import: HubSpot, Salesforce, Pipedrive, CSV
|
|
326
|
+
- ✅ Deal health, relationship graph/health, Monte Carlo forecasting
|
|
327
|
+
- ✅ Email templates & sequences, quotes, tickets (SLA), NPS/CSAT, knowledge base
|
|
328
|
+
- ✅ RBAC, append-only audit, AES-256-GCM vault, GDPR erasure
|
|
329
|
+
- ✅ Shared HTTP MCP server, SSO (WorkOS), outbound webhooks
|
|
330
|
+
- ✅ Wake-triggered per-customer agents (Telegram)
|
|
716
331
|
|
|
717
|
-
|
|
332
|
+
**Exploring**
|
|
718
333
|
|
|
719
|
-
|
|
334
|
+
- ⚪ More notification channels (Slack, WhatsApp)
|
|
335
|
+
- ⚪ Optional read-only web dashboard
|
|
336
|
+
- ⚪ Additional LLM providers for on-device summarization
|
|
337
|
+
- ⚪ Community plugin marketplace
|
|
720
338
|
|
|
721
|
-
|
|
722
|
-
git clone https://github.com/datasynx-ai/datasynx-crm
|
|
723
|
-
cd datasynx-crm
|
|
724
|
-
npm install
|
|
725
|
-
npm test # All tests (Vitest, TDD)
|
|
726
|
-
npm run build # tsdown → dist/
|
|
727
|
-
npm run typecheck # TypeScript strict check
|
|
728
|
-
```
|
|
339
|
+
<br/>
|
|
729
340
|
|
|
730
|
-
|
|
341
|
+
## Community & Links
|
|
731
342
|
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
343
|
+
- 📦 **npm** — [@datasynx/agentic-crm](https://www.npmjs.com/package/@datasynx/agentic-crm)
|
|
344
|
+
- 💻 **GitHub** — [datasynx-ai/datasynx-crm](https://github.com/datasynx-ai/datasynx-crm)
|
|
345
|
+
- 🐛 **Issues** — [report a bug or request a feature](https://github.com/datasynx-ai/datasynx-crm/issues)
|
|
346
|
+
- 🔒 **Security** — [report a vulnerability privately](./SECURITY.md)
|
|
347
|
+
- 🤝 **Contributing** — [CONTRIBUTING.md](./CONTRIBUTING.md) · [Code of Conduct](./CODE_OF_CONDUCT.md)
|
|
348
|
+
- 💼 **LinkedIn** — [Datasynx AI](https://de.linkedin.com/company/datasynx-ai)
|
|
738
349
|
|
|
739
|
-
|
|
350
|
+
<br/>
|
|
740
351
|
|
|
741
|
-
##
|
|
352
|
+
## Star History
|
|
742
353
|
|
|
743
|
-
|
|
354
|
+
[](https://www.star-history.com/#datasynx-ai/datasynx-crm&Date)
|
|
744
355
|
|
|
745
|
-
|
|
746
|
-
- [CLI Reference](./docs/cli-reference.md)
|
|
747
|
-
- [MCP Tools](./docs/mcp-tools.md)
|
|
748
|
-
- [Schemas](./docs/schemas.md)
|
|
749
|
-
- [Framework Integrations](./docs/integrations.md)
|
|
750
|
-
- [Deployment](./docs/deployment.md)
|
|
751
|
-
- [Team Setup](./docs/team-setup.md)
|
|
356
|
+
<br/>
|
|
752
357
|
|
|
753
|
-
|
|
358
|
+
## License
|
|
754
359
|
|
|
755
|
-
|
|
360
|
+
MIT © 2026 [Datasynx](https://github.com/datasynx-ai)
|
|
756
361
|
|
|
757
|
-
|
|
758
|
-
- 💻 **GitHub:** [datasynx-ai/datasynx-crm](https://github.com/datasynx-ai/datasynx-crm)
|
|
759
|
-
- 🐛 **Issues:** [Report a bug or request a feature](https://github.com/datasynx-ai/datasynx-crm/issues)
|
|
760
|
-
- 💼 **LinkedIn:** [Datasynx AI](https://de.linkedin.com/company/datasynx-ai)
|
|
761
|
-
- 📄 **License:** [MIT](./LICENSE)
|
|
362
|
+
<br/>
|
|
762
363
|
|
|
763
364
|
---
|
|
764
365
|
|
|
765
366
|
<div align="center">
|
|
766
|
-
<sub>Built with TypeScript · Powered by the Model Context Protocol ·
|
|
367
|
+
<sub>Built with TypeScript · Powered by the Model Context Protocol · Your data, your machine, your agents.</sub>
|
|
767
368
|
</div>
|