The problem
Before a renewal or check-in call, a success manager needed account age, stores, integrations, health, usage and recent tickets. That context lived in different places, so prep took time and was often skipped.
What I built
- Gather. A widget button calls an n8n workflow that pulls the account, its stores, add-ons, health score and recent support tickets in one request.
- Normalize. Raw values become consistent labels: tenure tiers, regions, verticals, standard product names. The model reasons better on clean inputs.
- Recommend. Rules from the success team guide the output, such as inventory sync for multi-store accounts that lack it, or flagging accounts with fewer than five logins in a week.
- Write back. The structured result is saved as a note on the account, so it stays where the team already works.
What a success manager sees:
Summary
Established multi-store account with steady ticket volume. Logins dropped at two locations this month, and the newest store has no inventory sync.
Next best actions
- Offer multi-store inventory sync for the newest location.
- Check in on the login drop before the renewal window.
- Share the payments integration guide; they are eligible and not using it.
Risks
Engagement falling at 2 of 3 stores.
What broke, and what I learned
- The AI provider ran out of creditsSummaries stopped working mid-week. The workflow now falls back to a second provider automatically.
- Inconsistent inputs, inconsistent adviceFree-text fields produced uneven recommendations until everything was normalized first.
- Built, live, lightly usedA button people have to remember to press is easy to skip. The lesson: the next version should come to the user, not wait for a click.
Outcome
It is honest to call this a first version. What it proved is that the data and reasoning work; what it needs is delivery.
What I'd do next
Turn it into an account agent: weekly digests pushed to each success manager, triggered by usage drops and renewal dates, with the same reasoning behind every alert.