Foresight, not reporting. Agency voice, not chatbot.
A major version — the AI perspective shifted from client-facing to staff-facing, and the widget started telling you what to do instead of waiting to be asked.
- ●Agency-staff AI perspective — every outbound AI call now sends
admin_context: true, flipping the system prompt from "you are talking to the client" to "you are advising agency staff about the client". Call scripts now speak in the agency's voice. Payment reminders are drafted from the right side of the relationship. Upsell scans give strategic advice instead of customer-service deflection. This single change fixed subtly-wrong AI output across every feature.
- ●Numeric invoice + contract fields in client context —
get_client_context() now returns unpaid_invoices, unpaid_total, overdue_invoices, overdue_total, and contracts_expiring as separate counters alongside the existing formatted string. The staff-facing AI branch needs these to avoid short-circuiting on "no data" for clients with real outstanding balances.
- ◆Portfolio health dashboard — clickable cards showing at-risk, watch, healthy, and dormant client counts. Filter the list, drill into any band, back to overview with one click.
- ◆Outcome action buttons — contextual one-click actions per client: payment reminder, call script, renewal proposal, upsell scan. Prompts built from real client data. The right action for the right moment.
- ◆Dormant client detection — clients with no invoices in 12 months and no active contracts are separated from the at-risk list and shown in their own bucket. At-risk stops being polluted by accounts that stopped buying years ago.
- ◆Health score rebalancing — no-contract clients no longer score artificially high from the "not expiring" component. Absence is no longer rewarded.
- ◆Memoized portfolio health — the full categorized client list is cached in CI session for 5 minutes, so card clicks no longer re-run the N+1 scoring loop.
- ●Streaming responses uncapped — no longer cut off mid-sentence at the 500-token limit. Bumped to 1,500 tokens for
/v1/chat/stream.
- ●Mode persistence — brief and action buttons survive Portfolio BI ↔ Client tab switching. No more losing your place.
- ◆Widget version badge — current module version visible in the panel header at all times.