Client engagement & retention agent
About this agent
A console-driven retention specialist for insurance advisors: it turns unstructured interaction notes into a structured risk profile, drafts renewal outreach ahead of a policy's 60/30/15-day windows, flags birthdays, anniversaries and expiring unused benefits, translates carrier policy updates into plain English, and quietly banks anonymised lessons from one client's dispute or documentation challenge so another advisor's client can benefit from it later. Every draft โ a renewal message, a milestone touchpoint, a benefit alert, a policy summary โ is filed as a pending action card and only ever reaches a client once an advisor approves, edits, or rejects it by hand; nothing in the codebase sends a message unattended. Individual client risk profiles and firm-wide carrier knowledge are kept in separate zenmem project buckets so a semantic search for one client's history can never surface another client's details, and the cross-client insight extractor is built to strip identifying detail by construction โ it never even accepts a client_id as an argument. It has not been run against a live zenmem deployment; it's written to the SDK's documented contract, and connectivity is meant to be verified before first use. It has no live scheduler, no real CRM feed, and no compliance controls โ encryption at rest, RBAC, audit logging โ built in; those are explicitly out of scope for this MVP.
What changed with Zenmem?
The same agent, built twice against the same contract โ once on Zenmem, once on MongoDB + LangChain/LangGraph.
Before โ after
Before With Zenmem
What the team gained
- Client profiles and anonymised cross-client insight are two separate project buckets rather than one tagged pool, so an insight can never surface inside a named client's semantic search results.
- The anonymised bucket carries no client id field at all, which makes the separation structural instead of a redaction rule applied at read time.
- Carrier perks and policy updates sit in company scope, shared by every advisor without being copied per client.
- A logged meeting is parsed in session scope and only what matters is promoted, so raw notes do not accumulate in the client record.
- A life event becomes a durable fact on the client's profile without a schema that had to anticipate which life events exist.
How memory is scoped
Four scopes. `scope="session"` holds one client interaction โ a meeting or a logged note โ for as long as it's being parsed, then ends. `scope="project"` splits into two entirely separate buckets rather than one tagged pool: CLIENT_PROFILES, holding one client's own life events and coverage gaps, tagged by client_id; and CROSS_CLIENT_INSIGHTS, holding anonymised operational wisdom with no client_id field at all. Because projectId is a per-call override, the two can never bleed into each other's semantic search results. `scope="company"` holds firm-wide, non-client facts โ carrier perks, policy updates, reward schedules โ the same for every client and advisor.
How it works
From a raw note to an approved message.
Parse the interaction
A meeting note or chat log is parsed for life events and coverage gaps, written to the client's risk profile and to memory in one atomic step.
Watch renewal windows
Clients whose policy ends in 60, 30 or 15 days get a personalised renewal draft, pulling their own profile context into the prompt.
Schedule engagement
Birthdays, anniversaries, claim milestones and expiring unused benefits each draft their own touchpoint; carrier notices get translated into plain English.
Bank cross-client wisdom
A non-PII lesson from one client's dispute or documentation challenge is extracted and banked for any advisor facing something similar later.
Hold for advisor approval
Every draft, of every type, queues as a pending action card โ approved, edited or rejected by an advisor before anything reaches a client.
Commands
The console menu โ nine options, no hidden product logic.
Commands
- Add / update a client โ the local CRM record: policy type, coverage summary, renewal and anniversary dates.
- Log an interaction note โ life-event extraction into the client's risk profile, plus cross-client insight capture from the same note.
- Run renewal scan โ drafts outreach for every client newly inside the 60/30/15-day windows.
- Run milestone scan โ birthdays and policy anniversaries falling today.
- Run benefit-expiration scan โ unused perks expiring this calendar year.
- Draft a policy-enhancement summary โ a carrier notice, translated into plain English for one client.
- Consult cross-client insights โ search banked wisdom for a challenge type and situation.
- Review pending action cards โ approve, edit, or reject each draft before it sends.
- Show Data Completeness KPI โ the parse success rate of logged interaction notes.