Every Message Goes Out Once
AssistJet stores one unique key before the first step of each run, so a retry stops right there.
Renewals and Retention
A renewal is usually lost months before the date. AssistJet reads usage and tickets for each account thirty days out, writes to the healthy ones, and brings the ones at risk to you with the reasons attached.
Your renewal dates are in a spreadsheet, and your usage numbers are in another tool. You pull the two together for your biggest accounts and hope the small ones renew. A customer who went quiet in the spring cancels in the fall, and that is the first you hear of it.
Each tool has one level for each seat, and your rules are enforced in code before the call. These tools are examples, and your own list comes from your app.
accounts_healthThe run reads usage and tickets.Readsubscriptions_getThe agent reads the plan.Readaccounts_tagThe run marks the risk.Autodiscounts_createYou approve any discount.Ask FirstTurn on classification, and each new thread gets a sentiment tag that your health tool can read.
Write the job in plain words, and the agent drafts these steps as a card. If you build apps for other people, ship the same steps as a recipe, and every customer gets the job with no setup.
[
{
"id": "renewal-check",
"name": "Renewal check",
"trigger_kind": "time",
"trigger": {
"collection": "subscriptions",
"field": "renews_at",
"offset_minutes": -43200
},
"steps": [
{
"kind": "tool",
"tool": "accounts_health",
"arguments": {
"id": "{{record.account}}"
}
},
{
"kind": "branch",
"field": "result.risk",
"op": "equals",
"value": "high",
"then": [
{
"kind": "agent",
"instructions": "List the reasons this account is at risk, from its usage and its tickets, in three lines."
},
{
"kind": "ask",
"text": "{{record.name}} renews in 30 days and looks at risk. {{agent}}"
}
],
"else": [
{
"kind": "agent",
"instructions": "Write a short renewal note that mentions what this account uses most."
},
{
"kind": "send",
"to": "{{record.email}}",
"subject": "Your renewal is coming up",
"text": "{{agent}}"
}
]
}
]
}
] AssistJet stores one unique key before the first step of each run, so a retry stops right there.
Each run is a thread in your inbox, and each tool call, model, and cost is stored in your database.
Set a cap on an automation, and it stops for the month once its model use reaches that amount.