NPSP-aware Salesforce donor readers for the AI ecosystem. One shared core, two adapters — repurposed from a LlamaIndex reader into the frameworks that are actually accepting net-new integrations.
Part of the PhilanthroPy donor-analytics ecosystem — this repo is the data on-ramp that pulls Salesforce Nonprofit Success Pack records into RAG pipelines and agent tools.
| Package | What it is | Distribution |
|---|---|---|
salesforce-npsp-core |
Framework-neutral Salesforce/SOQL logic → {"text","metadata"} donor records |
PyPI |
haystack-salesforce-npsp |
Haystack 2.x component → Documents |
PyPI + haystack-integrations PR |
mcp-server-salesforce-npsp |
MCP server → tools for any MCP client | PyPI + MCP Registry |
salesforce-npsp-core holds all the Salesforce/SOQL logic; the Haystack
component and the MCP server are thin wrappers over it, so the connector code
lives in exactly one place.
These readers are one half of the PhilanthroPy stack for nonprofit donor analytics:
- PhilanthroPy — an
sklearn-native donor-propensity / analytics library. Plug a fitted model into
this repo's
affinity_score_fnto score donors at ingest time. - UniSchema — a
TypeScript/npm webhook normalizer that emits a canonical
ConstituentEventstream from fundraising sources. - salesforce-npsp-integrations (this repo) — ingests NPSP donor data directly from Salesforce into Haystack (RAG) and MCP (agent tools).
Generic Salesforce connectors emit raw JSON. These understand the Nonprofit
Success Pack schema (npo02__, npsp__) and produce human-readable donor
profiles — giving totals, gift history, engagement — that an LLM can reason
over directly. Optional affinity_score_fn injects an ML propensity score per
donor.
python -m venv .venv && source .venv/bin/activate
pip install -e packages/npsp-core[test] \
-e packages/haystack-salesforce-npsp[test] \
-e packages/mcp-server-salesforce-npsp[test]
pytest packagessalesforce-npsp-core first (the adapters depend on it), then the two adapters.