Product updates

Changelog

Everything we ship to AbroadMate — new features, sharper workflows and the fixes in between.

14 Jun 20268 releases02 Sep 2026

v0.0.8 current · 275 documented changes

v0.0.8Latest

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 plans table 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.NotifyTenant path; 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_universities takes 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 portalled Dropdown menu 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 of null; db.Int no longer returns 0 for internally-built balance maps
  • Lead deletion now confirms, reports failures and refreshes counts; useSearchParams is 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 agents table is created before api_keys so a fresh database runs
v0.0.7

Messages that don't get dropped.

The reliability release

A reliability pass on billing and the messaging channels — prepaid credits, message coalescing, Facebook Page comments in the inbox, and faster, more accurate knowledge-base retrieval.

Highlights

  • Prepaid billing — credits release on payment, with frozen cycle windows
  • Facebook Page comments join the inbox alongside DMs
  • Rapid messages coalesced into a single AI reply
  • The AI stays aware of what human agents said while it was off
  • Faster, more accurate knowledge base retrieval
Full release notes40

Overview

New capabilities include prepaid billing, Facebook Page comments in the inbox, message coalescing, off-period backlog answering and human-reply awareness. CRM navigation was regrouped and retrieval was made lighter, while fixes cover webhook reliability, billing accuracy and message counting — backed by the first Go and Python test suites.

Added

16
  • Prepaid billing — credits are released only on payment and the AI stops (silently) once credits hit zero with an unpaid invoice; the prepaid invoice is issued 5 days before the cycle starts
  • On-demand invoices & plan changes that keep the cycle — per-invoice plan labeling, plan changes carry over the remaining credits, and invoices can be raised even when the prepaid columns are missing
  • Revert & delete billing records — an admin can revert a paid invoice back to unpaid and delete billing records
  • Daily payment-due banner on the tenant dashboard
  • Facebook Page comments in the inbox — Page comments and their AI replies now appear alongside DMs in the conversation view
  • Message coalescing — rapid WhatsApp/Messenger messages are debounced into a single AI reply instead of one reply per message
  • Off-period backlog answering — messages that arrive while the AI is off are answered together on the next AI turn
  • Human-reply awareness — the AI is now aware of human-agent replies sent from the dashboard while it was off, and captures consultant inbox replies via Messenger message_echoes so it knows what was already said
  • Per-channel Markdown formatting — agent Markdown is translated to each channel's native formatting (WhatsApp/Messenger/web)
  • Meta token reconnect prompt — expired Meta tokens surface as a reconnect badge instead of failing silently
  • Enrolled Students page — a dedicated, searchable page with a manual "Add Enrolled Student" button and a full student detail modal
  • Marketing page — Campaigns, Forms and Automations merged into one Marketing page
  • `crm_unlocked` master flag — a single admin Feature Access toggle plus a CRM Suite toggle in the clients-list edit modal
  • Facebook/WhatsApp data-deletion instructions section added for Meta app-review compliance
  • Strong-password enforcement when creating or editing a client in the admin console
  • Pending Payments → billing deep link — the admin overview Pending Payments card links to the pre-filtered billing list

Changed

4
  • CRM navigation regrouped — student pages grouped under a CRM sidebar section with an Enrolled tab; sidebar reordered to a headerless top-three (AI Agents, Growth, CRM, Settings) with the MAIN/TODAY headers dropped
  • The global time-range dropdown is hidden on pages where it does nothing (Universities, Finance, Business, Tasks)
  • The agent speaks its handled countries in prose instead of pipe-separated config
  • The agent no longer admits "no data" — negative tool outputs are reframed as positive consultant-routing directives, and the admin default prompt was synced to the same phrasing ban

Performance

3
  • Knowledge-base retrieval candidate pool cut 24 → 7 to reduce rerank latency on throttled prod CPUs
  • Reranker cold start no longer blocks a worker thread for 60s
  • Detected country facets are reused to avoid a second country scan per KB search

Fixed

13
  • Webhooks no longer abandon slow AI turns — comment and DM replies actually send even when the turn is CPU-throttled
  • Facebook comment replies no longer go silent via human handover on a public comment surface
  • A reply superseded while the AI was still generating is now dropped instead of double-sending
  • Billing accuracydb.Int returned 0 for internally-built balance maps; changing billing_start_day no longer wipes remaining credits; each invoice's cycle window is frozen so history survives a billing-day change; moving the billing date re-cuts the running cycle and keeps the gap usage; days stranded between two cycles are still charged; the messages card is scoped to the running cycle
  • Stats and the overview channel chart now count inbound student messages (and name what they show), not every row of chat history
  • Create-agent no longer times out into a bogus 502 + 409
  • The admin console acts on the selected client, not the cookie tenant
  • The conversations reply box explains why it's missing instead of hiding silently
  • Per-account browser storage is scoped to the tenant
  • Channel-list read failures surface instead of returning an empty list
  • Fire-and-forget DB write failures are logged instead of discarded
  • KB near-duplicate comparison strips the [Source:] header first; the normalized cache key is embedded so case variants share the right vector
  • Tailwind now scans src/lib so qualification badge colors render

Infrastructure

4
  • First Go unit tests (channel Markdown converters + db parse helpers) and Python regression tests for KB retrieval primitives (query expansion, Bangla synonyms, english_proxy, compress padding)
  • admin.go split into per-concern files; pure trace-serialization helpers extracted to functions/trace.py
  • KB retrieval tests moved into tests/ with a path conftest; the billing test suite removed
  • Ruff failures fixed (dropped unused INTAKE_DATA import, allow assert in tests); gofmt alignment; KB cache invalidation documented as process-local before scaling out
v0.0.6

From an AI inbox to a full agency workspace.

The CRM release

AbroadMate grows from an AI inbox into a full study-abroad agency workspace — pipeline, applications, documents, tasks, a university catalog, invoicing and a student portal — with both consoles rebuilt on themed UI kits.

Highlights

  • 11-stage student pipeline with a Kanban board and journey timeline
  • Applications and visa tracking, student documents, tasks, and automations
  • University catalog with AI matching — safe, target, ambitious
  • Agency invoices, payments, and commissions
  • Embeddable lead-capture forms and a passwordless student portal
  • Admin console and client dashboard rebuilt on themed UI kits
Full release notes46

Overview

This release adds the full agency workspace: an 11-stage pipeline, applications and visa tracking, documents, tasks, automations, a university catalog with AI matching, invoicing, commissions, campaigns, lead-capture forms and a student portal. Navigation was regrouped, knowledge-base recall and gating were fixed, the public widget gained a domain allowlist, and both consoles were migrated onto tokenised UI kits.

Added

21
  • Study-abroad pipeline — 11-stage student pipeline (leads is the student record) with stage history, board counts, a drag-free Kanban board with Back/Next buttons on each student card, a per-student journey timeline, and a board time-range filter
  • Applications & visa tracker — track university applications and visa progress per student, with status history
  • Student documents — upload, verify and reject student documents through a verification workflow, stored in a private bucket
  • Tasks — follow-ups plus exam and deadline reminders, with a dashboard task panel
  • Automation rules — auto-assign leads and create smart follow-up tasks; rules fire from both the Go API and the Python AI service
  • University & course catalog — universities and courses with entry requirements, tuition and intake windows
  • AI university matching — GPA/IELTS-based shortlist bucketed into safe / target / ambitious, exposed as an AI tool and a dashboard panel
  • Invoices & payments — agency invoicing with payment tracking and status refresh
  • Commissions — receivables from universities and payables to sub-agents, with a sub-agents panel
  • Campaigns — bulk outreach with WhatsApp template enforcement
  • Lead-capture forms — embeddable public forms with spam guards, served from a public route
  • Student portal — passwordless portal where students upload documents and track their applications
  • CSV student import — bulk import with de-duplication, plus a duplicate-merge flow
  • Business analytics — an agency-owner dashboard covering revenue, conversion and pipeline health
  • Internal team notes — private notes on conversations with a transfer trail and @mentions
  • Client dashboard UI kit--dsh-* semantic tokens plus Card/Button/Badge/StatCard/DataTable/Filters/Feedback/Modal/Toast/CommandPalette/LockedFeature primitives; every dashboard page migrated onto it
  • Admin UI kit--adm-* token layer plus shared buttons, badges, cards, tables, modals, toasts and a Ctrl+K command palette; every admin page migrated onto it
  • Richer admin Overview — trend deltas, a 6-month revenue chart and an activity feed
  • Admin billing cycles — billing-cycle date range in the table, month prev/next navigation, computed Next Billing Date, and a Billing Start day column
  • LockedFeature upsells — gated pages (bot control, knowledge gaps, knowledge base, playground) now show an upsell instead of an empty screen
  • Versioned webhook paths/api/v1/integrations/{channel}/webhook

Changed

7
  • Dashboard navigation regrouped around what the user is doing rather than by data type
  • Contacts folded into the Leads page as a tab, behind a single "Leads & Contacts" admin feature toggle
  • Page intros promoted into a reusable InfoCard
  • Contacts default to the last 24 hours; the pipeline time range defaults to the last 30 days
  • WhatsApp onboarding returned to the standard embedded-signup flow (coexistence requires Meta Advanced Access) and now registers the number for the Cloud API after signup
  • Facebook Messenger login moved to the redirect OAuth dialog (the JS-SDK flow always returned subcode 36008)
  • Status page: 12-hour times, UTC+6, outage duration in tooltips, incident banner above the navbar, and a "Powered by AbroadMate" footer

Fixed

11
  • Knowledge base recall — fixed a silent recall loss where the hard metadata filter hid records missing the field, and let the agent retry a missed lookup up to 3 times
  • Knowledge base gating — relevance gate recalibrated against the real (bimodal) cross-encoder and chunking made structure-aware, so answers are no longer cut away before they reach the model
  • Agency invoice tables renamed — they collided with the SaaS billing tables
  • Webhooks: all batched WhatsApp/Facebook events are processed (not just the first), the WhatsApp payload is parsed at changes[].value, inbound messages from null countries no longer 422, and the AI-boot retry window was extended so cold starts don't drop messages
  • Facebook: dashboard replies pick the HUMAN_AGENT tag only outside the 24-hour window, and send errors surface to the user
  • Contacts list: exact pagination, correct total, and a working channel filter
  • Admin billing shows the credit usage for the month selected in the filter, and the client name on every record
  • Status page: uptime bars no longer bleed an incident onto the following day, and component status tracks the incident lifecycle
  • Stat tiles no longer stretch to fill their grid row; the native focus ring is gone from the Ctrl+K palette input
  • Meta 36008 errors are now self-diagnosing (surface app_id and Meta's own message); the integrations banner no longer leaks META_* variable names to tenants
  • Proxy maxDuration raised to 60s so a slow Meta connect doesn't 502

Security

3
  • The public widget endpoints now enforce the allowed_domains allowlist
  • Tenants can no longer self-upgrade their plan via PATCH /auth/me
  • Lead-capture forms ship with spam guards

Infrastructure

4
  • Dropped the 700-line html.dark override block and dead component CSS in favour of tokenized classes
  • Gitleaks skipped on Dependabot PRs (its restricted token produced false failures); the deep code-review workflow was retired
  • Local HTTPS dev certificates git-ignored
  • Dependency bumps — fastapi 0.139, pydantic 2.13.4, aiohttp 3.14.1, requests 2.34.2, tiktoken 0.13.0, golang.org/x/crypto, and the frontend-deps group
v0.0.5

A public status page, multimodal chat, and first-party DeepSeek.

Status page, multimodal messaging & first-party DeepSeek

A public status page, multimodal messaging, and a first-party DeepSeek provider, alongside per-agent tool controls and Facebook comment auto-reply.

Highlights

  • Public /status page with 90-day uptime bars and incident history
  • Admin status management, driving the public page and dashboard banners
  • Multimodal messaging — image vision and document text extraction
  • First-party DeepSeek provider and per-agent tool toggles
  • Facebook Page comment auto-reply, with a per-page switch
Full release notes30

Overview

Additions include the public status page and its admin management, multimodal messaging, a first-party DeepSeek provider, per-agent tool toggles and Facebook comment auto-reply. Theme handling was centralised, per-message LLM cost was cut through caching and tighter prompts, Meta OAuth was hardened against subcode 36008, and a deep code-review CI pipeline was added.

Added

12
  • Public status page — Atlassian-Statuspage-style /status with a live overall-status hero, per-service 90-day uptime bars (colored by daily impact, with hover tooltips and computed uptime %), and a day-by-day past-incidents feed in UTC
  • Admin Status Page management — new admin tab to manage monitored services, report incidents, post timeline updates, and set component status; incidents auto-drive the public page
  • Auto incident banner — tenant dashboards automatically show a status banner whenever an incident is active and clear it once resolved (links to the public status page)
  • Direct DeepSeek provider — first-party DeepSeek selectable per agent in the admin console; new agents default to DeepSeek v4 Pro
  • Per-agent tool toggles — enable/disable save to CRM, qualify_lead, handover, and report_gap per agent
  • Multimodal messaging — vision image + document text extraction in the AI pipeline; chat-uploads storage bucket, widget/playground upload endpoints, image/file attach with preview, and inbound WhatsApp/Facebook media routed into the pipeline
  • Facebook Page comment auto-reply — AI replies to Page comments with a per-page toggle
  • Teach-the-AI gap resolution — knowledge-gap modal now takes a question and an answer
  • Markdown bot messages — bot replies render as markdown in the widget and conversations views
  • Admin navigation progress bar — instant progress indicator on admin page switching
  • Configurable AI limitsAGENT_RECURSION_LIMIT and IMAGE_INPUT_DETAIL env knobs
  • /chat page migrated to Next.js with server-side credential proxying

Changed

2
  • Centralized light/dark theme handling; all frontend UI is now required to render correctly in both themes
  • Admin overview revenue derived from paid billing records

Performance

5
  • Per-message LLM cost cut via OpenRouter prompt caching + a leaner default prompt
  • Agent output capped at 800 tokens; per-turn tool calls capped
  • Knowledge-base search loop bounded to stop a top cost blowout
  • Off-tool instructions gated out of the default prompt
  • Same-session turns serialized to prevent concurrent-message races

Fixed

6
  • Meta Embedded Signup OAuth hardened — code exchanged with no redirect_uri (resolves subcode 36008), FB user token upgraded to long-lived before deriving page tokens, no more double-spending the code on the FB page-picker, sturdier FB SDK loader and WA message listener
  • Playground channel excluded from inbox, conversations, and overview counts
  • Admin agent edit form shows the correct provider/model; llm_provider added to the admin update allow-list
  • OpenRouter provider auto-detected from a slashed model id; first-party DeepSeek forced with a curated provider allow-list
  • Admin "Revenue by Plan" chart — white tooltip value text, measured-container render, and readable axis labels in light mode
  • Sidebar active/hover styles applied to Link elements; instant progress bar with optimistic active state

Infrastructure

5
  • Deep code-review CI pipeline on push (complexity, maintainability, dead code, security, duplication, dependency and hygiene analyzers)
  • Python CI gates ruff security (S) and unused-argument (ARG) rules
  • Gitleaks gzip error fixed by fetching the latest release dynamically
  • Sub-agent usage policy documented in CLAUDE.md
  • Dependency bumps — zustand 4 → 5, the frontend-deps group, Supabase, uvicorn, langchain-openai, pytz, python-dotenv, and several GitHub Actions (checkout, setup-python, upload/download-artifact, github-script)
v0.0.4

Agents that learn, and retrieval that doesn't hallucinate.

OpenRouter, agent self-improvement & hybrid retrieval

Agents that learn from their own performance, hybrid knowledge-base retrieval to reduce hallucination, a second LLM provider, and a full CI/CD pipeline.

Highlights

  • Agent self-improvement — performance scored into a human-approved playbook
  • Per-student durable memory across channels and conversations
  • Hybrid KB retrieval (vector + BM25) with country filtering and a relevance gate
  • OpenRouter added as a second LLM provider
  • Multiple WhatsApp numbers and Facebook pages per agent
  • GitHub Actions CI/CD with Semgrep and Trivy scanning
Full release notes52

Overview

New work covers OpenRouter as a second provider, agent self-improvement, per-student memory, hybrid KB retrieval, client lifecycle management and billing automation. Performance was tuned for a 1-core deployment, six dead features and three unused tables were removed, 141 lint findings were cleared, and a full GitHub Actions CI/CD pipeline landed.

Added

18
  • OpenRouter LLM provider — second LLM provider option per agent with live model list from OpenRouter API; expanded OpenAI model selection
  • Multiple WhatsApp/Facebook connections — agents can now connect multiple WA numbers and FB pages, separated by channel_ref; per-agent admin connection limits
  • Meta Embedded Signup — first-party OAuth flow for WhatsApp Business and Facebook Messenger in the Integrations page
  • Per-student durable memory — cross-channel student memory keyed by (agent, contact) persists across conversations with auto self-learning
  • Agent self-improvement — reflection job scores performance metrics; human-approved learned playbook injected into the agent system prompt; edit/delete playbook entries with confirm modal
  • Per-agent performance dashboard — self-improvement scoreboard with conversation metrics and AI quality scores
  • Knowledge-gap learning loop — resolving a gap with an answer embeds it as learned KB into the agent's Pinecone namespace
  • Hybrid KB retrieval — vector + BM25 RRF fusion with hard country metadata filter and relevance gate to cut hallucination
  • Per-agent multilingual toggle — enable/disable multilingual responses per agent
  • Optimize Search button in admin Knowledge Base — triggers re-indexing and metadata backfill for all agent vectors
  • Country metadata backfill — accurate word-boundary country detection; backfills metadata onto existing vectors without re-embedding
  • Client lifecycle management — admin can set active/inactive/suspended status and delete a client (cascades Postgres data + purges Pinecone vectors)
  • Billing automation — auto-generate month-end invoices in admin ledger; send payment receipts to clients on mark-as-paid
  • Feature Access tool gatingqualify_lead, handover, and report_gap tools respect per-tenant and per-agent Feature Access flags
  • Playground history retention — auto-purge playground chat history older than 3 months; playground channel now passes schema CHECK
  • Per-tenant observability — request count, error rate, and latency metrics per tenant; /admin/metrics endpoint
  • Per-tenant rate-limit fairness — billing-plan-tiered ceiling ensures one tenant cannot starve others
  • GitHub Actions CI/CD — full pipeline with change detection, golangci-lint, Semgrep + Trivy security scanning, promotion gate, and production guard

Changed

5
  • Per-user AI on/off restyled as a toggle switch in the dashboard inbox
  • Meta channel config served from the Go API; NEXT_PUBLIC_* env vars removed from the frontend
  • Agent Logs admin page: clarified user counts, confirm-before-clear, and server-side pagination
  • .env.example synced with current env structure; removed obsolete DEFAULT_MONTHLY_CREDITS and DEFAULT_BILLING_START_DAY
  • Admin audit log: 12-hour am/pm timestamps (no seconds), readable action badges in light mode, 50 rows per page

Performance

7
  • Sidebar navigation switched from router.push to <Link> for prefetch-based instant transitions
  • Embedding LRU cache + KB-result cache + prompt_cache_key added to cut OpenAI cost
  • Webhook channel lookup cached and slimmed to one query per message
  • Next.js → Go internal hop gzip-compressed for large dashboard/admin reads
  • Lead/profile/gap tool DB writes moved off the async event loop (asyncio.to_thread)
  • Python AI and Go gateway tuned for 1-core / ~500 MB deployment
  • qualify_lead tier enforced as a Postgres schema enum for small-model accuracy

Fixed

13
  • Playground no longer reports false errors — timeout mismatch corrected and fallback response surfaced
  • Admin Country Data dropdown now shows all 29 countries (switched to summary endpoint)
  • llm_provider correctly threaded through process_message (resolved ruff F821/F841)
  • Channel config merge on upsert — toggling WA/FB no longer wipes tokens
  • agent_channels schema migration ordering — channel_ref and external_id columns added before referencing functions/views
  • Agent user-overrides upsert conflict target corrected (was 500ing on AI on/off toggle)
  • Handover DB writes moved off the event loop
  • Prompts made feature-consistent so the agent reliably follows tool instructions
  • Contacts: email backfilled on widget-created contacts
  • Performance dashboard guards against missing numeric fields
  • Agent Logs now shows the full assembled prompt
  • Bangla/Banglish country question handling corrected in KB retrieval
  • Go API: all 141 golangci-lint findings resolved; errcheck satisfied for cleanup paths

Removed

5
  • Six dead features removed from Go API: workflows, campaigns, white-label settings, SLA tracking, AI guardrails, custom actions
  • Three dead DB tables dropped: lead_history, team_notifications, agent_cooldowns
  • Dead WhatsApp/Facebook Python channel modules (channels/facebook.py, channels/whatsapp.py)
  • Deploy artifacts removed: DEPLOY.md, cloudbuild.yaml, backend/Dockerfile
  • 33 MB reranker model untracked from git (auto-downloaded by FlashRank at runtime / baked into Docker image)

Infrastructure

4
  • Go toolchain bumped; golangci-lint config added (.golangci.yml)
  • ruff.toml added to Python AI service
  • Dependabot enabled for Go, Python, and Node dependencies
  • Dependency updates: openai 2.44.0, fastapi 0.138.0, langchain 1.3.11, pinecone 9.1.0, @types/node 26.x, and several frontend packages
v0.0.3

Knowledge Gaps, Human Takeover, and real-time chat.

Knowledge Gaps, Human Takeover & realtime messaging

Knowledge Gaps and Human Takeover give the AI a way to escalate, real-time messaging replaces polling, and the embeddable website widget arrives.

Highlights

  • Knowledge Gaps — the AI logs every question it could not answer
  • Human Takeover — the AI flags a conversation for a person, with full reason history
  • Real-time SSE messaging replaces database polling
  • Realtime Agent Logs console for admins
  • Team invitations with verification links and role tiers
  • Embeddable website widget with lead capture and streaming replies
Full release notes33

Overview

Additions include Knowledge Gaps, Human Takeover, a realtime Agent Logs console, team invitations, profile pictures and real-time SSE messaging. The data layer moved to a typed API catalog and PostgREST, privileged proxy actions were put behind a signed session cookie, and reranker, SSE and message-ordering bugs were fixed.

Added

13
  • Knowledge Gaps — AI report_missing_knowledge tool logs unanswered questions to a new knowledge_gaps table; dedicated dashboard tab with AI-written title/description, open/resolved tabs, resolve & delete; list/resolve/delete API endpoints; per-client knowledge_gap_unlocked feature flag in admin
  • Human Takeover — AI request_human_handover tool flags conversations for a human; dashboard tab showing every flag reason (full history, not just latest), inbox needs_human filter/count and clear-flag, handover columns on conversation_assignment
  • Realtime Agent Logs console (admin) — per-tenant debug trail of messages, tool calls/queries, latency, tokens and errors written to DB; readable console with badges, copy, per-turn token/tool totals; driven by the navbar client selector; 30-day log retention job
  • Team invitation system — invite by email with verification link, team-member login, owner-driven password reset, professional invite email; password/team cards hidden for non-owners
  • Real-time SSE messaging — in-memory pub/sub replaces DB polling for two-way widget ↔ dashboard chat; per-user AI on/off toggle that pauses bot replies for a single user
  • Profile pictures — avatar upload for owner, team members, and admin-managed clients (with dark mode + custom upload fn); avatars rendered in navbars and client picker
  • Leads CRM — row action column with edit/delete + confirm modal, inline delete in detail panel, editable IELTS/TOEFL score field, merged academic custom fields
  • Data Manager — multi-file upload with country auto-detection from filename, multi-select bulk delete, delete-entire-country
  • Website widget — lead capture form, streaming responses, domain allowlist, dynamic embed URL, online/offline status with warm offline message, 12-hour timestamps with Today/Yesterday separators, profile-picture avatars, image upload + connected state in the Integrations modal
  • Billing — in-dashboard notification when a new billing cycle starts; explicit Credits Used cards on overview and admin billing scoped to the selected window
  • Browser password save/autofill via the Credential Management API
  • Rolling conversation summary — compacts old messages and persists across restarts
  • Configurable office/hotline agent variables and adaptive greeting; reset-to-default for the agent system prompt

Changed

4
  • Frontend data layer rebuilt on a typed API catalog + TanStack Query (conversations and hot paths routed through it)
  • Standardized the widget on the web channel and removed legacy widget-channel code
  • Database access moved fully to PostgREST — direct Postgres connection removed
  • Default both dashboards to light theme; refined dark mode to a neutral-slate palette

Performance

4
  • Server-side pagination + filters across admin Clients, Finance, Data Manager, and the inbox conversation list
  • gzip-compressed JSON (SSE-safe), TTL caches for agent config/status/overview/KB-stats, batched admin N+1 loops, parallel cold-start reads, and reduced Supabase egress on hot paths
  • Stopped minute-level timestamps from defeating OpenAI prompt caching
  • Widget loads lazily and pauses SSE/polling while closed; agent-logs & human-takeover polling pause on hidden tabs

Security

2
  • Privileged /api/proxy admin actions and tenant derivation now require a server-verified signed session cookie, never request-body or client state
  • Constant-time admin password comparison, agent-scoped API key enforcement, no trust of spoofable proxy IP headers for rate limiting, baseline security + clickjacking headers

Fixed

7
  • Reranker failure no longer blacks out the knowledge base — falls back to vector order
  • SSE: restored Flusher in logging middleware (was flooding widget /history and surfacing 500s on reconnect)
  • Chat/widget message ordering — user always precedes bot at equal timestamps; stable message IDs; newest-first reload; no memory loss on cold session load
  • Agent schedules apply immediately on server start, including off-only schedules
  • Contacts: stop creating anonymous/web-visitor and playground contacts; resolve duplicates and missing academic data
  • Numerous nil-DB guards across handlers to prevent startup panics
  • Overview avg-response-time, audit log readability, knowledge-base search ranking, and many light/dark-mode contrast fixes

Infrastructure

3
  • New tables for knowledge gaps, agent debug logs, and team invitations (all additive migrations)
  • Docker Go builder bumped to 1.25-alpine; reranker model pre-downloaded in the AI image
  • Comprehensive integration test suite across services
v0.0.2

One line of script, a chat widget on any site.

The embeddable website widget

A one-line embeddable chat widget for any website, plus redesigned admin Knowledge Base and Data Manager tooling.

Highlights

  • Embeddable website widget injected by a single script tag
  • Public, no-auth widget config and chat endpoints
  • Website Widget setup modal — name, colour, avatar, embed code
  • Admin Knowledge Base and Data Manager fully redesigned
  • Country Data → Pinecone push flow in the admin KB
Full release notes15

Overview

The embeddable website widget arrives with public config and chat endpoints and a setup modal, alongside redesigned admin Knowledge Base and Data Manager screens and a Country Data → Pinecone push flow. Fixes cover light-theme contrast, an xlsx import error and a pagination bug; the insecure pre-SaaS demo chat page was removed.

Added

10
  • Embeddable website widget — one-line <script> embed that injects a floating iframe chat on any external site (/widget/widget-loader.js)
  • Widget iframe page (/widget/[agent_id]) — self-contained chat UI served inside the iframe, picks up bot name, color, and welcome message from config
  • Public Go API endpoints (no auth): GET /pub/widget/{id}/config and POST /pub/widget/{id}/chat
  • db.GetAgentByIDOnly helper for public endpoints that derive tenant_id from the agent record
  • Website Widget modal in Integrations — clicking Connect opens a modal to set bot name, profile image URL, and widget color; reveals embed code after saving
  • bot_name column added to widget_settings table (additive migration, DEFAULT 'Support Assistant')
  • Admin Knowledge Base redesigned — full dual light/dark theme, popup modals for edit/view, server-side pagination, quick-add, file upload, paste zone
  • Admin Data Manager full UI redesign — KPI cards, tabbed upload/manual entry, drag-drop zone, hover actions, consistent admin style
  • Country Data → Pinecone section in admin KB — select country, preview Q&A pairs, push to agent vector index
  • Dashboard Knowledge Base — popup modals for edit/view (replace inline expand), cancel button fix in light mode

Fixed

4
  • Data Manager: unreadable text in light theme (gray-600/700 replaced with gray-400/500)
  • Data Manager: xlsx dynamic import used .default ?? module to avoid read is undefined error
  • Admin KB: pagination double-slice bug causing empty pages
  • Knowledge Base: uploaded file now parsed client-side to populate Q&A rows before training

Removed

1
  • Pre-SaaS demo /chat page (756 lines) — had a hardcoded Supabase anon JWT, public Supabase REST URL, and external Cloud Run endpoint in source; never linked from navigation, superseded by the widget and dashboard flows
v0.0.1

The first tagged build.

First light

The first tagged build — a multi-tenant CRM/AI platform routing WhatsApp, Facebook and web chats through Next.js and Go to a Python AI service.

Highlights

  • Multi-tenant platform — Next.js dashboard, Go API gateway, Python AI service
  • WhatsApp and Facebook Messenger webhooks with per-agent verify tokens
  • LangChain + Pinecone RAG with hot / warm / cold lead qualification
  • Admin console, agent playground, knowledge base, and lead CRM
  • Credit system with monthly allocation, rollover, and usage tracking
Full release notes22

Overview

The initial platform: a Next.js dashboard, an 80-endpoint Go API gateway and a LangChain + Pinecone AI service, all multi-tenant with row-level security. It ships the webhooks, credit system, admin console, playground, knowledge base and lead CRM on a 35-table Supabase schema.

Added

18
  • Full Next.js 14 SaaS dashboard (15+ pages: Overview, Agents, Knowledge Base, Playground, Inbox, Leads, Contacts, Team, Integrations, Bot Control, Billing, Settings)
  • Go API gateway with 80+ REST endpoints across 20+ feature domains
  • Python AI service with LangChain, Pinecone RAG, and lead qualification (hot/warm/cold)
  • Multi-tenant architecture — every table isolated by tenant_id; RLS on all tables
  • WhatsApp & Facebook Messenger webhooks with per-agent verify tokens
  • Credit system — monthly allocation, rollover, usage tracking, nightly auto-allocation job
  • Admin console (/web_adminpro_secure) — client management, billing, finance, audit log, notifications, agent management, data manager, vector DB
  • Agent Bot Control — per-agent on/off toggle with Bangladesh-time schedule
  • Agent Playground — test chat and side-by-side model comparison
  • Knowledge Base — PDF/DOCX/TXT/XLSX upload, URL scraping, manual text/FAQ entry
  • Lead CRM — pipeline stages, assignment, qualification badges (hot/warm/cold)
  • Team management with 6 role tiers (Owner → Viewer)
  • Conversation inbox, assignment, tags, round-robin routing
  • Broadcast campaigns (WhatsApp/Facebook)
  • Notifications, audit logs, API usage logs
  • Billing & subscription tables, white-label settings, GDPR compliance endpoints
  • Workflow automation engine, AI guardrails, custom actions, SLA tracking
  • SSE real-time event stream for dashboard clients

Infrastructure

4
  • Supabase PostgreSQL with 35+ tables, full RLS, and performance indexes
  • billing_period_start() SQL function for flexible billing cycle calculation
  • Per-agent Pinecone namespace auto-set on INSERT via trigger
  • Rate limiter, CORS middleware, JWT + API key auth

Where the story begins.

Put these updates to work

Spin up an AI agent, connect WhatsApp and Messenger, and run your whole student pipeline in one place.