@datasynx/agentic-crm 0.1.0 → 1.0.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.
Files changed (286) hide show
  1. package/README.md +264 -670
  2. package/dist/{approvals-DpjxGHFp.js → approvals-CmDT2eUg.js} +7 -24
  3. package/dist/approvals-CmDT2eUg.js.map +1 -0
  4. package/dist/{ask-CID3jnuL.js → ask-D8iYqDAr.js} +6 -6
  5. package/dist/{ask-CID3jnuL.js.map → ask-D8iYqDAr.js.map} +1 -1
  6. package/dist/atomic-write-8yjqqLtS.js +29 -0
  7. package/dist/atomic-write-8yjqqLtS.js.map +1 -0
  8. package/dist/atomic-write-BYmF-ThH.cjs +37 -0
  9. package/dist/atomic-write-BYmF-ThH.cjs.map +1 -0
  10. package/dist/auth-B5DcjJ_6.js +2 -0
  11. package/dist/{auth-DFWwWcYD.js → auth-DDXZTwS0.js} +4 -13
  12. package/dist/auth-DDXZTwS0.js.map +1 -0
  13. package/dist/{autofill-Di_-SP7t.js → autofill-B9VtlR2j.js} +2 -2
  14. package/dist/{autofill-Di_-SP7t.js.map → autofill-B9VtlR2j.js.map} +1 -1
  15. package/dist/{backup-CeMk9z86.js → backup-CTlIxUdO.js} +5 -7
  16. package/dist/backup-CTlIxUdO.js.map +1 -0
  17. package/dist/backup-LFnC09oV.js +2 -0
  18. package/dist/{churn-C28IgnAj.js → churn-DN9WDGNM.js} +3 -3
  19. package/dist/{churn-C28IgnAj.js.map → churn-DN9WDGNM.js.map} +1 -1
  20. package/dist/cli.js +282 -184
  21. package/dist/cli.js.map +1 -1
  22. package/dist/{compliance-CKSBoQUe.js → compliance-Bc12Hn9a.js} +3 -3
  23. package/dist/{compliance-CKSBoQUe.js.map → compliance-Bc12Hn9a.js.map} +1 -1
  24. package/dist/{compliance-CujOqAKk.js → compliance-TqYQXhBj.js} +1 -1
  25. package/dist/{compliance-B1kk5-YS.js → compliance-kq0xHRw3.js} +3 -3
  26. package/dist/{compliance-B1kk5-YS.js.map → compliance-kq0xHRw3.js.map} +1 -1
  27. package/dist/{compliance-B91zNvCR.cjs → compliance-pAj9FcGI.cjs} +3 -3
  28. package/dist/{compliance-B91zNvCR.cjs.map → compliance-pAj9FcGI.cjs.map} +1 -1
  29. package/dist/{context-builder-BzWAp3Zs.js → context-builder-7Uab5-G4.js} +3 -2
  30. package/dist/context-builder-7Uab5-G4.js.map +1 -0
  31. package/dist/context-builder-hmOPvgso.js +2 -0
  32. package/dist/{custom-fields-CzNeD3_v.js → custom-fields-BMyz5Ruh.js} +1 -1
  33. package/dist/{custom-fields-Pl2t9xzp.js → custom-fields-GzpOHW_2.js} +4 -13
  34. package/dist/custom-fields-GzpOHW_2.js.map +1 -0
  35. package/dist/{custom-objects-CIFrmQ2V.js → custom-objects-BNy-ayR-.js} +1 -1
  36. package/dist/{custom-objects-BHgn1GEX.js → custom-objects-CxW1gHwJ.js} +10 -25
  37. package/dist/custom-objects-CxW1gHwJ.js.map +1 -0
  38. package/dist/{customer-dir-DIylZ8Q6.js → customer-dir-CkMMXhb0.js} +9 -4
  39. package/dist/customer-dir-CkMMXhb0.js.map +1 -0
  40. package/dist/daemon/worker.js +66 -40
  41. package/dist/daemon/worker.js.map +1 -1
  42. package/dist/doctor-C14-vnJ1.js +103 -0
  43. package/dist/doctor-C14-vnJ1.js.map +1 -0
  44. package/dist/{enrichment-3XvgGDfB.js → enrichment-CDFdWmvD.js} +3 -3
  45. package/dist/{enrichment-3XvgGDfB.js.map → enrichment-CDFdWmvD.js.map} +1 -1
  46. package/dist/{file-lock-B_zi7NQl.js → file-lock-CcHotQkZ.js} +3 -4
  47. package/dist/file-lock-CcHotQkZ.js.map +1 -0
  48. package/dist/{gmail-sync-rQaVqKWd.js → gmail-sync-C-NmibzS.js} +13 -9
  49. package/dist/gmail-sync-C-NmibzS.js.map +1 -0
  50. package/dist/{gmail-sync-DIaxInDT.js → gmail-sync-DueE6tl5.js} +14 -10
  51. package/dist/gmail-sync-DueE6tl5.js.map +1 -0
  52. package/dist/{gmail-sync-hHm9gaWd.cjs → gmail-sync-GEy3oVvw.cjs} +13 -9
  53. package/dist/gmail-sync-GEy3oVvw.cjs.map +1 -0
  54. package/dist/{gmail-webhook-handler-DS7OlRPX.js → gmail-webhook-handler-B26COilD.js} +2 -2
  55. package/dist/{gmail-webhook-handler-e5Od25FX.js → gmail-webhook-handler-kGKpbY9h.js} +4 -4
  56. package/dist/{gmail-webhook-handler-e5Od25FX.js.map → gmail-webhook-handler-kGKpbY9h.js.map} +1 -1
  57. package/dist/{goal-engine-KpBftn4V.js → goal-engine-BbroPhqm.js} +10 -11
  58. package/dist/goal-engine-BbroPhqm.js.map +1 -0
  59. package/dist/{goal-engine-CUZSpERI.js → goal-engine-CfDAJTFt.js} +1 -1
  60. package/dist/{google-drive-sync-DEPcqFca.js → google-drive-sync-D1n7WKZn.js} +3 -3
  61. package/dist/{google-drive-sync-DEPcqFca.js.map → google-drive-sync-D1n7WKZn.js.map} +1 -1
  62. package/dist/{hygiene-DZqfYpFf.js → hygiene-DzQPnc6P.js} +3 -3
  63. package/dist/{hygiene-DZqfYpFf.js.map → hygiene-DzQPnc6P.js.map} +1 -1
  64. package/dist/identity-CB7j-Zr1.js +2 -0
  65. package/dist/{identity-CI6olMNm.js → identity-_uZ3Lbr2.js} +2 -2
  66. package/dist/{identity-CI6olMNm.js.map → identity-_uZ3Lbr2.js.map} +1 -1
  67. package/dist/{import-hubspot-BaK71U_K.js → import-hubspot-DB4n89jy.js} +51 -45
  68. package/dist/import-hubspot-DB4n89jy.js.map +1 -0
  69. package/dist/{index-V8BFaH-b.d.ts → index-B0IMMrp_.d.ts} +8 -4
  70. package/dist/{index-V8BFaH-b.d.ts.map → index-B0IMMrp_.d.ts.map} +1 -1
  71. package/dist/{index-YqwMd6aQ.d.cts → index-pY7tYXwH.d.cts} +8 -4
  72. package/dist/{index-YqwMd6aQ.d.cts.map → index-pY7tYXwH.d.cts.map} +1 -1
  73. package/dist/index.cjs +19 -21
  74. package/dist/index.cjs.map +1 -1
  75. package/dist/index.d.cts +8 -4
  76. package/dist/index.d.cts.map +1 -1
  77. package/dist/index.d.ts +8 -4
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +19 -21
  80. package/dist/index.js.map +1 -1
  81. package/dist/{interactions-writer-DO3KcSR3.js → interactions-writer-BZzUIgJd.js} +5 -2
  82. package/dist/interactions-writer-BZzUIgJd.js.map +1 -0
  83. package/dist/{interactions-writer-SLHnoEeE.js → interactions-writer-DbSyI2rt.js} +32 -3
  84. package/dist/interactions-writer-DbSyI2rt.js.map +1 -0
  85. package/dist/interactions-writer-RJB8SWf2.js +2 -0
  86. package/dist/{interactions-writer-CrPStUll.cjs → interactions-writer-a2yzBd7T.cjs} +5 -2
  87. package/dist/interactions-writer-a2yzBd7T.cjs.map +1 -0
  88. package/dist/json-store-WWsFzXub.js +43 -0
  89. package/dist/json-store-WWsFzXub.js.map +1 -0
  90. package/dist/{knowledge-base-D0Fh40kc.js → knowledge-base-DHNc4hVj.js} +43 -16
  91. package/dist/knowledge-base-DHNc4hVj.js.map +1 -0
  92. package/dist/{lancedb-CCBbpulq.js → lancedb-CswQEE5K.js} +1 -1
  93. package/dist/{lancedb-rlvWoPwl.js → lancedb-CuHKNsNZ.js} +4 -3
  94. package/dist/lancedb-CuHKNsNZ.js.map +1 -0
  95. package/dist/{lead-model-BCFzyktm.js → lead-model-CEmx7te7.js} +6 -14
  96. package/dist/lead-model-CEmx7te7.js.map +1 -0
  97. package/dist/{llm-Z8RIYkpF.js → llm-BnSUBisu.js} +2 -2
  98. package/dist/{llm-Z8RIYkpF.js.map → llm-BnSUBisu.js.map} +1 -1
  99. package/dist/{llm-iijeXmgq.cjs → llm-CXycmEl9.cjs} +2 -2
  100. package/dist/{llm-iijeXmgq.cjs.map → llm-CXycmEl9.cjs.map} +1 -1
  101. package/dist/{llm-DEjWcqmW.js → llm-DSX1-wFu.js} +1 -1
  102. package/dist/{llm-DvzZqva0.js → llm-PZzgPphl.js} +3 -3
  103. package/dist/{llm-DvzZqva0.js.map → llm-PZzgPphl.js.map} +1 -1
  104. package/dist/logger-BkInaGoV.cjs +167 -0
  105. package/dist/logger-BkInaGoV.cjs.map +1 -0
  106. package/dist/logger-Dyl4VcLO.js +147 -0
  107. package/dist/logger-Dyl4VcLO.js.map +1 -0
  108. package/dist/logger-UaF5p9d1.js +147 -0
  109. package/dist/logger-UaF5p9d1.js.map +1 -0
  110. package/dist/logger-vKQS34w9.js +2 -0
  111. package/dist/mcp-CdTJWTJf.d.cts.map +1 -1
  112. package/dist/mcp-CdTJWTJf.d.ts.map +1 -1
  113. package/dist/mcp.cjs +327 -303
  114. package/dist/mcp.cjs.map +1 -1
  115. package/dist/mcp.d.cts.map +1 -1
  116. package/dist/mcp.d.ts.map +1 -1
  117. package/dist/mcp.js +327 -303
  118. package/dist/mcp.js.map +1 -1
  119. package/dist/{memory-Cy6-Tbyl.js → memory-D8hmgD9d.js} +1 -1
  120. package/dist/{memory-Bb6ky3kb.js → memory-Dzr9dXSM.js} +4 -11
  121. package/dist/memory-Dzr9dXSM.js.map +1 -0
  122. package/dist/{microsoft-calendar-B6MMtUQK.js → microsoft-calendar-jIu9K5zX.js} +4 -4
  123. package/dist/{microsoft-calendar-B6MMtUQK.js.map → microsoft-calendar-jIu9K5zX.js.map} +1 -1
  124. package/dist/{microsoft-sync-CpZVoSuq.js → microsoft-sync-R_r8HL-B.js} +5 -5
  125. package/dist/{microsoft-sync-CpZVoSuq.js.map → microsoft-sync-R_r8HL-B.js.map} +1 -1
  126. package/dist/{nba-3wanmJ0U.js → nba-mTJ4yEqD.js} +3 -3
  127. package/dist/{nba-3wanmJ0U.js.map → nba-mTJ4yEqD.js.map} +1 -1
  128. package/dist/{notification-dispatcher-0vYNngWe.js → notification-dispatcher-inpKyuBz.js} +7 -3
  129. package/dist/notification-dispatcher-inpKyuBz.js.map +1 -0
  130. package/dist/{pipeline-writer-BqBrYrQc.js → pipeline-writer-0LJ6Qkat.js} +1 -1
  131. package/dist/{pipeline-writer-N2omexxp.cjs → pipeline-writer-B1tRAhuD.cjs} +11 -3
  132. package/dist/pipeline-writer-B1tRAhuD.cjs.map +1 -0
  133. package/dist/{pipeline-writer-BvVquKIe.js → pipeline-writer-CIllfnZl.js} +5 -3
  134. package/dist/pipeline-writer-CIllfnZl.js.map +1 -0
  135. package/dist/{pipeline-writer-eufx_0o1.js → pipeline-writer-rDj-ni6q.js} +6 -4
  136. package/dist/pipeline-writer-rDj-ni6q.js.map +1 -0
  137. package/dist/{proactive-agent-BgQXw3ac.js → proactive-agent-B7u3Bj_l.js} +6 -6
  138. package/dist/{proactive-agent-BgQXw3ac.js.map → proactive-agent-B7u3Bj_l.js.map} +1 -1
  139. package/dist/{proactive-worker-BrLHNhjH.js → proactive-worker-1zkm6aJD.js} +7 -8
  140. package/dist/proactive-worker-1zkm6aJD.js.map +1 -0
  141. package/dist/{push-manager-CowY-0IK.js → push-manager-BXM-IHfP.js} +1 -1
  142. package/dist/{push-manager-CdqIIkuh.js → push-manager-C0ECQgva.js} +4 -4
  143. package/dist/push-manager-C0ECQgva.js.map +1 -0
  144. package/dist/{quote-generator-OhSFsi3x.js → quote-generator-ByUyIYtw.js} +1 -1
  145. package/dist/{quote-generator-BfwENXzg.js → quote-generator-CTdR8eEI.js} +5 -5
  146. package/dist/quote-generator-CTdR8eEI.js.map +1 -0
  147. package/dist/rbac-DzbyFhVH.js +2 -0
  148. package/dist/{rbac-CTIktZaC.js → rbac-msmBc_tK.js} +19 -12
  149. package/dist/rbac-msmBc_tK.js.map +1 -0
  150. package/dist/regex-Jt5DatPi.js +13 -0
  151. package/dist/regex-Jt5DatPi.js.map +1 -0
  152. package/dist/{relationship-health-odxEoQdJ.js → relationship-health-ZZNXR1RZ.js} +8 -16
  153. package/dist/relationship-health-ZZNXR1RZ.js.map +1 -0
  154. package/dist/{revenue-simulation-Bqf2DLVB.js → revenue-simulation-D8f_YkUY.js} +9 -19
  155. package/dist/revenue-simulation-D8f_YkUY.js.map +1 -0
  156. package/dist/{revenue-simulation-BJdRTEHc.js → revenue-simulation-njJZlTqm.js} +1 -1
  157. package/dist/safe-path-mpp0dKtO.js +18 -0
  158. package/dist/safe-path-mpp0dKtO.js.map +1 -0
  159. package/dist/{segments-BqcD5HIl.js → segments-DI3LOQNe.js} +5 -14
  160. package/dist/segments-DI3LOQNe.js.map +1 -0
  161. package/dist/sequence-engine-C6nnewHX.js +2 -0
  162. package/dist/{sequence-engine-J1lTW_in.js → sequence-engine-DNTVLq7o.js} +15 -8
  163. package/dist/sequence-engine-DNTVLq7o.js.map +1 -0
  164. package/dist/{sequence-store-DaaWr0Os.js → sequence-store-CmYb6s0g.js} +6 -5
  165. package/dist/sequence-store-CmYb6s0g.js.map +1 -0
  166. package/dist/{server-Dyva03K8.js → server-DqSMYhSA.js} +278 -220
  167. package/dist/server-DqSMYhSA.js.map +1 -0
  168. package/dist/{session-D9ub6Wl1.js → session-B6XaP83h.js} +3 -3
  169. package/dist/session-B6XaP83h.js.map +1 -0
  170. package/dist/{session-B9AilxOE.js → session-BgGDyP2C.js} +3 -3
  171. package/dist/session-BgGDyP2C.js.map +1 -0
  172. package/dist/session-Bp4zTh4l.js +2 -0
  173. package/dist/{session-D0qFkBla.cjs → session-Mm7GQbSH.cjs} +3 -3
  174. package/dist/session-Mm7GQbSH.cjs.map +1 -0
  175. package/dist/{session-store-C8tEvMPw.js → session-store-DWxJ5Pof.js} +79 -17
  176. package/dist/session-store-DWxJ5Pof.js.map +1 -0
  177. package/dist/{session-store-B0QZE8Bx.cjs → session-store-yfwnj0OC.cjs} +126 -16
  178. package/dist/session-store-yfwnj0OC.cjs.map +1 -0
  179. package/dist/{sla-engine-5IhTsBUR.js → sla-engine-CP2KiKDS.js} +1 -1
  180. package/dist/{sla-engine-BqX-7u-7.js → sla-engine-O-A1ntu_.js} +2 -2
  181. package/dist/{sla-engine-BqX-7u-7.js.map → sla-engine-O-A1ntu_.js.map} +1 -1
  182. package/dist/{sop-Vp0UPWFW.js → sop-BV7ICAFR.js} +4 -11
  183. package/dist/sop-BV7ICAFR.js.map +1 -0
  184. package/dist/{sop-DkhVChGy.js → sop-D33qTHUb.js} +1 -1
  185. package/dist/survey-engine-DKctGcLQ.js +2 -0
  186. package/dist/{survey-engine-DBjCYqCv.js → survey-engine-DngXBv47.js} +5 -4
  187. package/dist/survey-engine-DngXBv47.js.map +1 -0
  188. package/dist/{sync-state-CwLSt_1m.js → sync-state-BaA8LbTI.js} +1 -1
  189. package/dist/{sync-state-ChaLbamC.js → sync-state-DMZgzpez.js} +4 -12
  190. package/dist/sync-state-DMZgzpez.js.map +1 -0
  191. package/dist/{ticket-writer-CjqKeIRD.js → ticket-writer-DsfpeLGZ.js} +1 -1
  192. package/dist/{ticket-writer-j2oX_Wal.js → ticket-writer-a9on36Wb.js} +12 -24
  193. package/dist/ticket-writer-a9on36Wb.js.map +1 -0
  194. package/dist/{tone-Bdm5uaht.js → tone-C7bqK69y.js} +5 -12
  195. package/dist/tone-C7bqK69y.js.map +1 -0
  196. package/dist/{tone-DRKlZgPr.cjs → tone-Cmc7O2Fx.cjs} +3 -9
  197. package/dist/tone-Cmc7O2Fx.cjs.map +1 -0
  198. package/dist/{tone-vNb2DAAD.js → tone-mXSftvTn.js} +3 -8
  199. package/dist/tone-mXSftvTn.js.map +1 -0
  200. package/dist/{transcript-watcher-CL2QUygI.js → transcript-watcher-0mh2ZhmH.js} +18 -11
  201. package/dist/transcript-watcher-0mh2ZhmH.js.map +1 -0
  202. package/dist/unmatched-transcripts-C92zAoM4.js +2 -0
  203. package/dist/unmatched-transcripts-DC-VQ9YS.js +16 -0
  204. package/dist/unmatched-transcripts-DC-VQ9YS.js.map +1 -0
  205. package/dist/update-deal-CWy1eLJI.js +2 -0
  206. package/dist/{update-deal-DKC79skb.js → update-deal-DSzr_Aau.js} +3 -3
  207. package/dist/{update-deal-DKC79skb.js.map → update-deal-DSzr_Aau.js.map} +1 -1
  208. package/dist/{usage-D0-TYJkw.js → usage-BVlFlKW_.js} +8 -6
  209. package/dist/usage-BVlFlKW_.js.map +1 -0
  210. package/dist/usage-CClTf5e6.cjs.map +1 -1
  211. package/dist/usage-D0u9a-lV.js.map +1 -1
  212. package/dist/{vault-DXCg29W-.js → vault-CfwZdNzC.js} +3 -4
  213. package/dist/vault-CfwZdNzC.js.map +1 -0
  214. package/dist/{vault-C1D3zScD.js → vault-DxKP4_R2.js} +1 -1
  215. package/dist/{webhooks-Xn6zO6kd.cjs → webhooks-CwW-3kvG.cjs} +5 -19
  216. package/dist/webhooks-CwW-3kvG.cjs.map +1 -0
  217. package/dist/{webhooks-7EpA05Qr.js → webhooks-DXr1IoKn.js} +8 -21
  218. package/dist/webhooks-DXr1IoKn.js.map +1 -0
  219. package/dist/{webhooks-BO2UAnmn.js → webhooks-sWZ8CJtR.js} +5 -18
  220. package/dist/webhooks-sWZ8CJtR.js.map +1 -0
  221. package/package.json +11 -2
  222. package/dist/approvals-DpjxGHFp.js.map +0 -1
  223. package/dist/auth-CyFuu9X_.js +0 -2
  224. package/dist/auth-DFWwWcYD.js.map +0 -1
  225. package/dist/backup-CeMk9z86.js.map +0 -1
  226. package/dist/backup-f_hC7rBV.js +0 -2
  227. package/dist/context-builder-BzWAp3Zs.js.map +0 -1
  228. package/dist/context-builder-DlrRcqmJ.js +0 -2
  229. package/dist/custom-fields-Pl2t9xzp.js.map +0 -1
  230. package/dist/custom-objects-BHgn1GEX.js.map +0 -1
  231. package/dist/customer-dir-DIylZ8Q6.js.map +0 -1
  232. package/dist/file-lock-B_zi7NQl.js.map +0 -1
  233. package/dist/gmail-sync-DIaxInDT.js.map +0 -1
  234. package/dist/gmail-sync-hHm9gaWd.cjs.map +0 -1
  235. package/dist/gmail-sync-rQaVqKWd.js.map +0 -1
  236. package/dist/goal-engine-KpBftn4V.js.map +0 -1
  237. package/dist/identity-gyfWdrcX.js +0 -2
  238. package/dist/import-hubspot-BaK71U_K.js.map +0 -1
  239. package/dist/interactions-writer-CrPStUll.cjs.map +0 -1
  240. package/dist/interactions-writer-DO3KcSR3.js.map +0 -1
  241. package/dist/interactions-writer-SLHnoEeE.js.map +0 -1
  242. package/dist/interactions-writer-dSPy1XfO.js +0 -2
  243. package/dist/knowledge-base-D0Fh40kc.js.map +0 -1
  244. package/dist/lancedb-rlvWoPwl.js.map +0 -1
  245. package/dist/lead-model-BCFzyktm.js.map +0 -1
  246. package/dist/memory-Bb6ky3kb.js.map +0 -1
  247. package/dist/notification-dispatcher-0vYNngWe.js.map +0 -1
  248. package/dist/pipeline-writer-BvVquKIe.js.map +0 -1
  249. package/dist/pipeline-writer-N2omexxp.cjs.map +0 -1
  250. package/dist/pipeline-writer-eufx_0o1.js.map +0 -1
  251. package/dist/proactive-worker-BrLHNhjH.js.map +0 -1
  252. package/dist/push-manager-CdqIIkuh.js.map +0 -1
  253. package/dist/quote-generator-BfwENXzg.js.map +0 -1
  254. package/dist/rbac-C7c8tcES.js +0 -2
  255. package/dist/rbac-CTIktZaC.js.map +0 -1
  256. package/dist/relationship-health-odxEoQdJ.js.map +0 -1
  257. package/dist/revenue-simulation-Bqf2DLVB.js.map +0 -1
  258. package/dist/segments-BqcD5HIl.js.map +0 -1
  259. package/dist/sequence-engine-CCTHEBgi.js +0 -2
  260. package/dist/sequence-engine-J1lTW_in.js.map +0 -1
  261. package/dist/sequence-store-DaaWr0Os.js.map +0 -1
  262. package/dist/server-Dyva03K8.js.map +0 -1
  263. package/dist/session-B9AilxOE.js.map +0 -1
  264. package/dist/session-D0qFkBla.cjs.map +0 -1
  265. package/dist/session-D9ub6Wl1.js.map +0 -1
  266. package/dist/session-mWHA71Lw.js +0 -2
  267. package/dist/session-store-B0QZE8Bx.cjs.map +0 -1
  268. package/dist/session-store-C8tEvMPw.js.map +0 -1
  269. package/dist/sop-Vp0UPWFW.js.map +0 -1
  270. package/dist/survey-engine-C06hcQt3.js +0 -2
  271. package/dist/survey-engine-DBjCYqCv.js.map +0 -1
  272. package/dist/sync-state-ChaLbamC.js.map +0 -1
  273. package/dist/ticket-writer-j2oX_Wal.js.map +0 -1
  274. package/dist/tone-Bdm5uaht.js.map +0 -1
  275. package/dist/tone-DRKlZgPr.cjs.map +0 -1
  276. package/dist/tone-vNb2DAAD.js.map +0 -1
  277. package/dist/transcript-watcher-CL2QUygI.js.map +0 -1
  278. package/dist/unmatched-transcripts-BsH5bhkU.js +0 -26
  279. package/dist/unmatched-transcripts-BsH5bhkU.js.map +0 -1
  280. package/dist/unmatched-transcripts-D0PrJ9iz.js +0 -2
  281. package/dist/update-deal-BNwPGaTV.js +0 -2
  282. package/dist/usage-D0-TYJkw.js.map +0 -1
  283. package/dist/vault-DXCg29W-.js.map +0 -1
  284. package/dist/webhooks-7EpA05Qr.js.map +0 -1
  285. package/dist/webhooks-BO2UAnmn.js.map +0 -1
  286. package/dist/webhooks-Xn6zO6kd.cjs.map +0 -1
package/README.md CHANGED
@@ -1,767 +1,361 @@
1
1
  <div align="center">
2
2
 
3
- # DatasynxOpenCRM&nbsp;·&nbsp;`dxcrm`
3
+ # Datasynx Agentic CRM &middot; `dxcrm`
4
4
 
5
- **Local-first, MCP-native CRM. One agent per customer. `npm install`.**
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> &middot;
12
+ <a href="https://datasynx-ai.github.io/datasynx-crm/"><strong>Docs</strong></a> &middot;
13
+ <a href="https://www.npmjs.com/package/@datasynx/agentic-crm"><strong>npm</strong></a> &middot;
14
+ <a href="https://github.com/datasynx-ai/datasynx-crm"><strong>GitHub</strong></a> &middot;
15
+ <a href="https://de.linkedin.com/company/datasynx-ai"><strong>LinkedIn</strong></a>
16
+ </p>
6
17
 
7
18
  [![npm version](https://img.shields.io/npm/v/@datasynx/agentic-crm.svg?color=cb3837&logo=npm)](https://www.npmjs.com/package/@datasynx/agentic-crm)
8
- [![npm downloads](https://img.shields.io/npm/dm/@datasynx/agentic-crm.svg?color=cb3837)](https://www.npmjs.com/package/@datasynx/agentic-crm)
19
+ [![downloads/week](https://img.shields.io/npm/dw/@datasynx/agentic-crm.svg?color=cb3837&label=downloads%2Fweek)](https://www.npmjs.com/package/@datasynx/agentic-crm)
9
20
  [![CI](https://github.com/datasynx-ai/datasynx-crm/actions/workflows/ci.yml/badge.svg)](https://github.com/datasynx-ai/datasynx-crm/actions/workflows/ci.yml)
10
21
  [![Docs](https://github.com/datasynx-ai/datasynx-crm/actions/workflows/pages.yml/badge.svg)](https://datasynx-ai.github.io/datasynx-crm/)
11
- [![license](https://img.shields.io/npm/l/@datasynx/agentic-crm.svg?color=3fb950)](./LICENSE)
22
+ [![stars](https://img.shields.io/github/stars/datasynx-ai/datasynx-crm?style=flat&color=ffd33d)](https://github.com/datasynx-ai/datasynx-crm/stargazers)
23
+ [![license](https://img.shields.io/github/license/datasynx-ai/datasynx-crm.svg?color=3fb950)](./LICENSE)
12
24
  [![node](https://img.shields.io/node/v/@datasynx/agentic-crm.svg)](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 you — briefed, current, and ready to act.**
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
- DatasynxOpenCRM stores every customer as structured Markdown no database, no cloud lock-in and exposes it to any AI agent over the [Model Context Protocol](https://modelcontextprotocol.io). Your data lives on your machine; your agents read and write it natively in Claude Code, Codex, Cursor, and more.
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
- ## 5-Minute Quickstart
34
+ <br/>
25
35
 
26
- ```bash
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
- # 2. Create your first customer
33
- dxcrm create "Acme Corp" --domain acme.com --email ceo@acme.com
38
+ ```text
39
+ You ▸ What's going on with Acme Corp?
34
40
 
35
- # 3. Your AI agent can now answer:
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
- ## Why DatasynxOpenCRM?
48
+ You ▸ Draft that follow-up and log it.
42
49
 
43
- | Problem | HubSpot | dxcrm |
44
- |---|---|---|
45
- | Monthly cost | €90–900/seat | Free (self-hosted) |
46
- | AI integration | Plugin/API only | Native MCP, works in Claude Code/Codex/Cursor |
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
- ## CLI Commands
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
- ```bash
153
- dxcrm attach acme-corp ./proposals/acme-q2-2026.pdf
154
- ```
59
+ ## How it works
155
60
 
156
- ### Pipeline Stages
157
-
158
- | Command | Description |
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/&lt;name&gt;/<br/>main_facts · interactions · pipeline"]
69
+ MCP <--> Files
70
+ end
275
71
 
276
- ## MCP Tools (56 tools for AI Agents)
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
- ## Framework Integration
81
+ <br/>
442
82
 
443
- `dxcrm init` automatically registers the MCP server in all detected frameworks:
83
+ <div align="center">
444
84
 
445
- | Framework | Tier | Harness |
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** &nbsp;·&nbsp; 🟣 Claude Code &nbsp;·&nbsp; 🟢 Codex &nbsp;·&nbsp; 🔵 Cursor &nbsp;·&nbsp; 🟠 Claude Desktop &nbsp;·&nbsp; 🔌 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
- ## Data Structure
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 and call transcript (LanceDB, on-device).
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
- ~/.dxcrm/
464
- ├── customers/
465
- └── acme-corp/
466
- ├── main_facts.md # Customer profile (YAML frontmatter)
467
- ├── interactions.md # All calls/emails/meetings (newest first)
468
- ├── pipeline.md # Deal stages
469
- ├── sources.json # Gmail query, transcript paths
470
- ├── attachments/
471
- └── transcripts/
472
- └── .agentic/
473
- ├── config.json # CRM configuration
474
- ├── sources.json # Global sync sources
475
- ├── rbac.json # Role assignments
476
- ├── audit.log # Append-only audit trail
477
- ├── agents/ # Per-customer agent configs
478
- └── server.pid # HTTP server PID (team mode)
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
- ### Customer Profile Schema (`main_facts.md`)
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
- ```yaml
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
- ## Contacts
502
- - Max Müller (CEO) — max@acme.com
213
+ ## 🚀 Quickstart
503
214
 
504
- ## Critical Context
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
- # Role-Based Access Control
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
- ```bash
544
- dxcrm init # Sets up Gmail OAuth
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
- ### Microsoft Outlook
224
+ Now open your AI agent and ask: **"What's the status on Acme Corp?"** — you'll get a grounded, current brief in seconds.
550
225
 
551
- Write token file, then sync:
226
+ Migrating? Bring your existing data with you:
552
227
 
553
228
  ```bash
554
- # Write token (from your OAuth app)
555
- echo '{"accessToken":"<token>"}' > ~/.dxcrm/.agentic/microsoft-token.json
556
-
557
- dxcrm sync --provider microsoft
229
+ dxcrm import ./hubspot-export/ --from hubspot # also: salesforce · pipedrive · csv
230
+ dxcrm sync acme-corp # pull Gmail threads + transcripts
558
231
  ```
559
232
 
560
- ### Salesforce Import
233
+ <br/>
561
234
 
562
- ```bash
563
- dxcrm import --from salesforce --mode api \
564
- --token <access_token> \
565
- --url https://myco.salesforce.com
566
- ```
235
+ ## What it's not
567
236
 
568
- Two-pass: contacts → customers, tasks → interactions (linked via WhoId).
237
+ | | |
238
+ | ---------------------------- | -------------------------------------------------------------------------------------------- |
239
+ | **Not another SaaS tab.** | It lives inside your AI agent and your filesystem — not a browser dashboard you have to open. |
240
+ | **Not a database.** | Customers are Markdown folders. Back them up with `cp`, version them with `git`. |
241
+ | **Not a chatbot wrapper.** | 55+ typed MCP tools with RBAC and audit — not a single prompt pretending to be a product. |
242
+ | **Not a data grab.** | Zero telemetry. Your data never leaves your machine unless you wire up an integration. |
243
+ | **Not lock-in.** | MIT-licensed, plain files, export anytime. Leaving is a `cp -r` away. |
569
244
 
570
- ### Pipedrive Import
245
+ <br/>
571
246
 
572
- ```bash
573
- dxcrm import --from pipedrive --mode api \
574
- --token <api_token> \
575
- --url https://myco.pipedrive.com
576
- ```
247
+ ## Built for teams
577
248
 
578
- Two-pass: persons → customers, activities interactions.
249
+ Run `dxcrm` solo, or stand up a shared MCP server for the whole revenue org:
579
250
 
580
- ---
251
+ - **Shared HTTP MCP server** — `dxcrm server` exposes the same tools to every teammate's agent.
252
+ - **RBAC** — `admin` / `manager` / `rep` roles scope what each actor (and their agent) can read and write.
253
+ - **SSO** — authenticate via WorkOS.
254
+ - **Audit & compliance** — append-only audit trail, one-command GDPR erasure, and `dxcrm security-report` for vendor reviews.
581
255
 
582
- ## Agent Wake Notifications
256
+ See the [Deployment](./docs/deployment.md) and [Team Setup](./docs/team-setup.md) guides.
583
257
 
584
- Per-customer wake agents send a Telegram message whenever a new email arrives from that customer's domain. The daemon detects the new email during its sync cycle and calls `notifyAgentWake()` for all customers that have an agent configured.
258
+ <br/>
585
259
 
586
- ### Setup
260
+ ## FAQ
587
261
 
588
- ```bash
589
- # 1. Export your Telegram credentials
590
- export TELEGRAM_BOT_TOKEN=123456789:AAxxxxx
591
- export TELEGRAM_CHAT_ID=987654321
262
+ **Where does my data live?**
263
+ In a folder you choose, as Markdown files. No database, no cloud. Back it up and version it like code.
592
264
 
593
- # 2. Spawn a wake agent for a customer
594
- dxcrm agent spawn acme-corp --channel telegram
595
-
596
- # 3. (Optional) Use a different chat ID per customer
597
- dxcrm agent spawn beta-gmbh --channel telegram --chat-id 111222333
598
-
599
- # 4. Check all configured agents
600
- dxcrm agent status
601
-
602
- # 5. Remove an agent
603
- dxcrm agent remove acme-corp
604
- ```
265
+ **Which AI tools work with it?**
266
+ Anything that speaks MCP — Claude Code, Codex, Cursor, Claude Desktop, and more. `dxcrm init` auto-configures the ones it detects.
605
267
 
606
- ### How it works
268
+ **Is it really free?**
269
+ Yes. MIT-licensed and self-hosted. No seats, no metering.
607
270
 
608
- 1. The background daemon syncs Gmail every 30 minutes (configurable via `DXCRM_DAEMON_INTERVAL`).
609
- 2. On a new email from a customer domain, `notifyAgentWake()` is called.
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.
271
+ **Can a whole team use it?**
272
+ Yes run the shared HTTP MCP server with RBAC and SSO. See [Team Setup](./docs/team-setup.md).
612
273
 
613
- ### Environment variables
274
+ **Can I migrate from HubSpot / Salesforce / Pipedrive?**
275
+ Yes — `dxcrm import` brings in contacts and activity history. CSV is supported too.
614
276
 
615
- | Variable | Required | Description |
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. |
277
+ **Does it send my data anywhere?**
278
+ No telemetry, ever. The only outbound calls are the integrations you explicitly configure (e.g. Gmail) and the LLM your agent already uses.
623
279
 
624
- ---
280
+ <br/>
625
281
 
626
- ## Team Setup
282
+ ## Documentation
627
283
 
628
- Run on a shared VM — all team members share one data directory:
284
+ 📖 **Full docs site:** **[datasynx-ai.github.io/datasynx-crm](https://datasynx-ai.github.io/datasynx-crm/)**
629
285
 
630
- ```bash
631
- # On the VM
632
- dxcrm server start --data /mnt/crm-data --port 3847
633
- ```
286
+ - [Quickstart — real Gmail in 5 minutes](./docs/quickstart-real.md)
287
+ - [CLI Reference](./docs/cli-reference.md) · [MCP Tools](./docs/mcp-tools.md) · [Schemas](./docs/schemas.md)
288
+ - [Framework Integrations](./docs/integrations.md) · [Deployment](./docs/deployment.md) · [Team Setup](./docs/team-setup.md)
289
+ - [Compliance](./docs/compliance.md)
634
290
 
635
- Each team member's framework config:
291
+ <br/>
636
292
 
637
- ```json
638
- {
639
- "mcpServers": {
640
- "datasynx-opencrm": {
641
- "url": "http://vm-ip:3847/mcp"
642
- }
643
- }
644
- }
645
- ```
293
+ ## Development
646
294
 
647
- Set actor identity per session:
648
295
  ```bash
649
- export DXCRM_ACTOR=alice
650
- ```
651
-
652
- ---
296
+ git clone https://github.com/datasynx-ai/datasynx-crm
297
+ cd datasynx-crm
298
+ npm ci
653
299
 
654
- ## Manual MCP Configuration
655
-
656
- ### Claude Code
657
-
658
- ```json
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
- }
300
+ npm test # Vitest (TDD) — 3000+ tests
301
+ npm run build # tsdown → dist/
302
+ npm run typecheck # strict TypeScript
303
+ npm run lint # ESLint (zero warnings)
304
+ npm run docs:generate # regenerate the CLI/MCP reference from code
669
305
  ```
670
306
 
671
- ### Grok Build (xAI)
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
- ```
307
+ 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
308
 
691
- Run `grok inspect` to verify the server is discovered. Grok Build reads `AGENTS.md` and `CLAUDE.md` natively — both are written by `dxcrm init`.
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
- ```
309
+ <br/>
708
310
 
709
- ### Cursor / Windsurf / Cline
311
+ ## Roadmap
710
312
 
711
- Use the HTTP server URL after `dxcrm mcp start --http`:
313
+ **Shipped**
712
314
 
713
- ```
714
- http://localhost:3847/mcp
715
- ```
315
+ - ✅ 55+ MCP tools · 54 CLI commands · local-first Markdown store
316
+ - ✅ Hybrid (vector + full-text) search over emails & transcripts
317
+ - ✅ Sync: Gmail, Outlook, Google Drive, Teams, Google Meet
318
+ - ✅ Import: HubSpot, Salesforce, Pipedrive, CSV
319
+ - ✅ Deal health, relationship graph/health, Monte Carlo forecasting
320
+ - ✅ Email templates & sequences, quotes, tickets (SLA), NPS/CSAT, knowledge base
321
+ - ✅ RBAC, append-only audit, AES-256-GCM vault, GDPR erasure
322
+ - ✅ Shared HTTP MCP server, SSO (WorkOS), outbound webhooks
323
+ - ✅ Wake-triggered per-customer agents (Telegram)
716
324
 
717
- ---
325
+ **Exploring**
718
326
 
719
- ## Development
327
+ - ⚪ More notification channels (Slack, WhatsApp)
328
+ - ⚪ Optional read-only web dashboard
329
+ - ⚪ Additional LLM providers for on-device summarization
330
+ - ⚪ Community plugin marketplace
720
331
 
721
- ```bash
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
- ```
332
+ <br/>
729
333
 
730
- ### Running Tests
334
+ ## Community & Links
731
335
 
732
- ```bash
733
- npm test # All tests
734
- npm test -- --run src/__tests__ # Unit tests only
735
- npm test -- --run __tests__/e2e # E2E tests only
736
- npm test -- --reporter verbose # Verbose output
737
- ```
336
+ - 📦 **npm** — [@datasynx/agentic-crm](https://www.npmjs.com/package/@datasynx/agentic-crm)
337
+ - 💻 **GitHub** — [datasynx-ai/datasynx-crm](https://github.com/datasynx-ai/datasynx-crm)
338
+ - 🐛 **Issues** [report a bug or request a feature](https://github.com/datasynx-ai/datasynx-crm/issues)
339
+ - 🔒 **Security** [report a vulnerability privately](./SECURITY.md)
340
+ - 🤝 **Contributing** [CONTRIBUTING.md](./CONTRIBUTING.md) · [Code of Conduct](./CODE_OF_CONDUCT.md)
341
+ - 💼 **LinkedIn** — [Datasynx AI](https://de.linkedin.com/company/datasynx-ai)
738
342
 
739
- ---
343
+ <br/>
740
344
 
741
- ## Docs
345
+ ## Star History
742
346
 
743
- 📖 **Full documentation site:** [datasynx-ai.github.io/datasynx-crm](https://datasynx-ai.github.io/datasynx-crm/)
347
+ [![Star History Chart](https://api.star-history.com/svg?repos=datasynx-ai/datasynx-crm&type=Date)](https://www.star-history.com/#datasynx-ai/datasynx-crm&Date)
744
348
 
745
- - [Quickstart — Real Gmail (5 min)](./docs/quickstart-real.md)
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)
349
+ <br/>
752
350
 
753
- ---
351
+ ## License
754
352
 
755
- ## Community & Links
353
+ MIT &copy; 2026 [Datasynx](https://github.com/datasynx-ai)
756
354
 
757
- - 📦 **npm:** [@datasynx/agentic-crm](https://www.npmjs.com/package/@datasynx/agentic-crm)
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)
355
+ <br/>
762
356
 
763
357
  ---
764
358
 
765
359
  <div align="center">
766
- <sub>Built with TypeScript · Powered by the Model Context Protocol · © 2026 Datasynx</sub>
360
+ <sub>Built with TypeScript · Powered by the Model Context Protocol · Your data, your machine, your agents.</sub>
767
361
  </div>