What is this? A concrete recipe for wiring an AI customer-success agent against Salty’s CRM. The agent maintains an account health score, logs every touchpoint, surfaces at-risk accounts, and drives QBR prep — all over MCP or REST.
The scenario
You sell SaaS to 50–500 customers. You can’t afford a CSM headcount per account. An LLM agent watches product usage signals, conversation transcripts, and ticket data; logs touchpoints; and when health drops, alerts you with the receipt of why. Salty is the system of record. Native objects map cleanly to the CS workflow.Data model
| Salty object | Your concept |
|---|---|
company | Customer account |
person (with primary_company_id) | Stakeholder at that account (champion, exec sponsor, end user) |
deal | Renewal opportunity (one per account per renewal cycle) |
activity | Touchpoint — call, QBR, email, in-product nudge |
note | Free-form context (call notes, exec change, competitive intel) |
task | Follow-up items (REST/CLI only — no MCP write tool in v1) |
custom_attributes on company | health_score, arr_cents, tier, last_qbr_at |
Set up the schema
Extend thecompany object once at start-of-life:
What the agent does on a typical week
| Task | Tool calls | Why |
|---|---|---|
| Pull the at-risk list | search_companies with filter custom_attributes.health_score < 60 | Daily standup feed |
| Update health after weekly review | update_company setting custom_attributes.health_score | Recalculated from usage + sentiment |
| Log a CSM call | log_activity parent: company, type: csm_call, payload includes notes + duration | Audit trail |
| Add a context note from Slack | add_note parent: company | Surface non-meeting signal |
| Move renewal deal forward | update_deal stage transition | Track $$$ at risk |
Driving it from Claude Desktop
Conversational prompt:“Pull every company with health score below 70 and tell me who their primary contact is and when we last logged a touchpoint.”Claude will:
search_companieswith{filter: {custom_attributes: {health_score: {lt: 70}}}}(the filter syntax)- For each company,
search_peoplewith{filter: {primary_company_id: <id>}} search_activitieswith parent filters to find the most recent activity per company- Surface a ranked table you can act on
React to churn signal via webhooks
When your usage-monitoring system pushes a low-engagement event, your agent can update Salty and Salty fires a webhook to your alert channel:data.custom_attributes.health_score and pages you if it dropped below threshold. Salty does the persistence + signing + retry; you just react.
Reporting
Get a CSV-ready dump of every company with health, ARR, and last activity:Volume guidance
A 100-account CS practice with weekly check-ins makes ~10,000 API calls/month (~25 calls per account per week). The Solo ($20/mo, 100k calls) plan has 10× headroom. Pro ($99/mo, 1M calls) if you have hundreds of accounts.
Related
- Schema engine — custom_attributes with enum/reference/json types
- Webhooks — react to state changes in real time
- Concepts → Authentication — sk_live_ vs OAuth for human-and-agent flows
- Concepts → Rate limits — per-plan ceilings + burst