Two consoles, rebuilt from the ground up.
The workspace release
Both consoles were redesigned on shared UI kits, billing became fully dynamic, and the CRM, Knowledge Base and Inbox each gained a significant new workflow.
Highlights
- Admin console and client dashboard redesigned on shared UI kits
- Fully dynamic billing — editable packages and self-service plan changes
- New follow-up desk, shareable student tracking links, and a CRM home dashboard
- Knowledge Base unified into one tabbed workspace; Human Takeover moved into the Inbox
- WhatsApp coexistence onboarding, typing indicators, and real contact identities
Full release notes37
Overview
Additions span dynamic billing packages, self-service plan changes, a follow-up desk, student tracking links, a support ticket desk, a unified notification funnel and WhatsApp coexistence onboarding. The admin console and client dashboard were then redesigned page by page; fixes target dark-mode colours, plan-change timing and transient select errors; and the frontend moved to Next 15, React 19 and TypeScript 6.
Added
19
- Dynamic billing packages — an admin-editable
planstable drives pricing, the plan picker and invoice line items; each invoice freezes its own credits so edits land on the next cycle - Self-service plan changes — a client can change their own plan, which raises an invoice, releases credits on payment, carries the remaining credits over, and keeps a visible history; admins see client-initiated changes with a full audit trail
- Admin Reset Billing — a single control to undo billing state; no credits are granted before the first invoice is paid, first cycle included
- Follow-up desk — a dedicated Followups page backed by
followup_logs; closing a follow-up logs an outcome and books the next touch, with a New Follow-up button and student picker - Student tracking link — a shareable, read-only
/track/{token}status page, separate from the single-use portal magic link - CRM home dashboard — an agency's daily queue on one page, with Reports folded in and CSV export of students and enrolled students
- AI Profile Summary & AI Business Review — per-lead profile summaries and an agency-level review with improvement suggestions
- Finance tracking — income and expenses by category, invoice types (tuition / application / service fee, deposit, commission), and hand-entered commissions on the Receivable tab
- Support ticket desk — client-to-admin tickets with live SSE updates and Resend email notifications
- Unified notification funnel — every tenant notification is emailed through a single
db.NotifyTenantpath; admin notifications can target multiple clients, open full detail, and paginate - Tabbed Knowledge Base — Universities and Knowledge Gaps merged into one workspace with a new Training Data tab; entries filter by country, type, document and status; knowledge gaps gain an 8-week ask-trend chart, a list/grid toggle, answers scoped by country/document, and a pulsing badge when gaps are open
- University catalog controls — a per-agent toggle for recommending from the catalog (off by default for new agents), adding a university with just a name and country, and editing its name/country/city/website
- Human Takeover in the Inbox — the standalone page is gone; takeover rows are flagged and sorted to the top, the AI auto-pauses for a contact on handoff, and a "Teach the AI this answer" CTA sits in the handover panel
- Real contact identities in the Inbox — cached, compressed profile photos, synced names, and name-initial avatars with channel badges
- WhatsApp coexistence onboarding — phone and AI share one number with no migration, plus chat-history and contact import, typing indicators, real contact names, a per-agent reply-wait delay, dashboard message-template management, and quality-ban protection for connected numbers
- Three-hostname routing — the marketing site, client dashboard and admin console are each served on their own hostname, with the folder prefix dropped from dashboard and admin URLs
- Public playground share link — publish an agent as a public chat, with a session-only Live tools switch and a settings panel; live-tools test students expire after 7 days
- Admin Accounts module — platform Finance moved into its own Accounts nav section with filter-aware, cached summary stats
- Shared `Dropdown` component — a portalled popover replacement for native
<select>in toolbars, rolled across both consoles; credits remaining now show in the dashboard header
Changed
7
- Admin console redesign — a new shell nav bar and sidebar matching the client dashboard, plus a full redesign of Overview, Clients, Agents, the Agent edit page, Billing, Finance, Data Manager, Notifications, Support, Status, Audit Log and Settings on the
--adm-*UI kit - Client dashboard redesign — the CRM dashboard, Leads, Enrolled Students, Tasks, Followups, Finance, Business, Support, Team, Billing, Performance, Knowledge Base and Playground rebuilt on the
--dsh-*UI kit; Performance gains an AI health score - Navigation regrouped — collapsible Students, To-Do and Money nav groups; a student opens as a full page instead of a slide-over; Conversations is now Inbox and Students is now Leads
- CRM currency is Bangladeshi Taka (৳) —
money()and the schema default are now BDT - Marketing workspace removed — Campaigns, Forms and Automations, their backend and their tables are gone
- Billing calendar runs on Bangladesh time — cycles chain off their own start day so they never gap, each invoice owns its cycle window, and changing the billing day re-cuts only the running cycle
recommend_universitiestakes a country and nothing else; the catalog switches off for agents whose tenant has no universities
Fixed
6
- Dark-mode-blind hardcoded colors audited and fixed across the dashboard, the admin console and the Knowledge Base page
- Transient
<select>errors no longer false-fail agent settings saves; the portalledDropdownmenu can no longer hide under a card - A late-settled plan change lands on the live cycle; an invoice with no payments serialises as
[]instead ofnull;db.Intno longer returns 0 for internally-built balance maps - Lead deletion now confirms, reports failures and refreshes counts;
useSearchParamsis wrapped in Suspense so the production build prerenders - The typing indicator holds open for the whole AI turn; Messenger treats a missing profile-access approval as a normal state
- The AbroadMate support widget stays off student tracking links; a solved ticket is closed to new messages
Infrastructure
5
- Upgraded to Next 15 + React 19, ESLint 9 and TypeScript 6; the frontend compiles with Turbopack
- Inter, Sora and Plus Jakarta Sans are self-hosted so the build never calls Google Fonts
- Major dependency bumps are grouped so they arrive together, alongside routine Dependabot updates across the Go, Python and frontend trees
- The billing cycle engine and prepaid rules are pinned under
backend/go-api/tests - Schema fix: the
agentstable is created beforeapi_keysso a fresh database runs
