DeepgramBacked by Deepgram Startup ProgramLearn more
Change Log

What we shipped,
ordered newest first

Every release, every fix, every quiet improvement — logged in chronological order. Each entry covers a single day or release window so you can see exactly what changed and when.

Thursday, May 14, 2026

Get User tool — four sources, Search By, and in-app support

Big rewrite of the Get User tool: enable any combination of URL, Webhook, API, and your own Database; pick which fields the agent can look users up by; and use the resolved fields as {{variables}} in your greeting and system prompt across both voice and chat. New in-app support widget on every dashboard page lets you call ThinnestAI without leaving the screen.

Get User — four sources, multi-select

agent
  • A single Get User modal replaces the old flat form. Toggle any combination of URL (Web Embed / dispatch metadata), Webhook (POST to your CRM), API (generic REST with method, headers, body template, JSONPath response map), and Database (run a pre-approved SELECT against your own Postgres).
  • Sources run in priority order — URL, then Webhook, then API, then Database. Later sources can reference earlier values, so an API URL like https://crm.example.com/users/{customer_id} works when the URL source supplied customer_id at call start.
  • Database source is read-only by design: agents never write SQL. You paste a parameterised SELECT once, and the agent can only bind values into it. Write keywords (INSERT / UPDATE / DELETE / DROP / …) and stacked statements are blocked, statement timeout is enforced, and results are capped.
  • Multi-query support — add as many query templates as you want (users, payments, orders, wallet…) and every eligible template runs in parallel on a lookup. Results are merged into one variable bag so your prompt can reference fields from any of them.

Search By — first-class lookup keys

agent
  • New Search By section in the Get User modal. Pick the fields the agent can use to identify a caller: Name, Contact Number, and any number of "Other" fields you label yourself (Customer ID, Account Number, Loyalty Number, anything).
  • Every enabled Search By key automatically registers as a {{variable}} in the greeting and system-prompt editors. Type {{ to autocomplete; the dropdown shows everything currently available.
  • Rename-aware editing — change a Search By key, and every place that references it gets updated. SQL templates have their %(old)s placeholders rewritten to %(new)s, URL allowed-keys pick up the new name, and the visual query builder rewires its bind columns.
  • Per-query validation in the Database source. A red border appears the moment a SQL template references a bind that no longer exists; an amber border flags queries whose binds don't match their declared Search By key (the bug that silently returns zero rows).

Variables in greetings and prompts — now in chat too

agent
  • Get User's resolved fields substitute into {{variables}} in your greeting and system prompt. "Hello {{name}}, your plan is {{plan}}" works on the very first sentence.
  • Variable substitution previously only worked for voice calls. It now also works for the chat widget and embedded chat — the same {{customer_id}} in a system prompt renders consistently across both modes.
  • Even with no DB / Webhook / API source configured, you can still use Search By keys as variables: pass them in via embed URL params, campaign merge fields, or the outbound-call API's custom_variables, and they substitute through.

Lookup timing — before the agent speaks, or mid-call

agent
  • New "Before agent speaks" toggle — the lookup runs during connection setup, so the greeting can address the caller by name from word one.
  • New "In call (by the agent)" toggle — keeps Get User available as a tool the LLM can call mid-conversation, useful when you also want it to look up additional users by name during the call.
  • Enable either, both, or neither. Most setups want both on.

Visual query builder for the Database source

agent
  • No need to hand-write SQL. Pick a table, multi-select columns, build WHERE conditions with a column dropdown / operator dropdown / Search By value picker, set an order-by and limit — the builder emits a parameterised SELECT live and validates it before save.
  • Power-user SQL mode is still there for anything the builder can't express. Switching from SQL back to Visual prompts you first so manual edits aren't lost silently.
  • Test Connection and Validate Query buttons run end-to-end checks against the configured database before you save — schema drift and forgotten binds are caught at edit time, not at runtime.

Modal redesign — sidebar + content + 50% wider

ui
  • The whole Get User modal grew 50% wider (max-w-6xl) and now opens as a sidebar + content view. Left rail holds Search By, the timing toggles, and the four sources; right pane is the editor for whatever you've clicked. Subtitles on each row show current state at a glance ("2 keys", "before speech + in-call") so you can scan the rail without opening each section.
  • Inside the Database source, the same pattern repeats one level deeper: left sidebar lists Connection + every query template with status dots (green = valid, amber = bind mismatch, red = missing bind); right side is a tabbed editor — Settings, Builder, SQL, Response map, Test. The old flat cards-with-toggles UI is gone.
  • Get User card and modal header now use the Lucide User glyph (was a generic Wrench fallback). Tool gallery list pins Get User to the top of the "Popular" sort.

Database — bulk-add tables, searchable everywhere

agent
  • New "Bulk" button next to "+ Add" in the Queries sidebar. Click it and the right pane swaps to a multi-select table picker with search + Select all. On apply, one query template is created per selected table — the first new query is auto-selected so you land on something useful.
  • Shared WHERE-clause builder above the Add button: pick a column (autocompletes from every column across your selected tables), operator, and Search By bind. A live coverage badge tells you how many of the picked tables have that column ("applies to 64 of 87 selected"); tables without the column get an empty WHERE you can fill in per-query.
  • Searchable pickers throughout the Database source: per-query Table picker has typeahead + column-count badges; Columns multi-select has a search input that filters the checkbox grid (and "Select all" respects the active filter — type "addr_" then Select all to grab every "addr_*" column at once).

In-app support widget

ui
  • A "Support" pill now sits in the bottom-right corner on every page under /app — theme-aware (dark pill in light mode, white pill in dark mode), with a phone icon, "Support" label, and trailing chevron. Click anywhere on the pill to start a call.
  • Click opens a compact in-page call panel — no popups, no new tab, no transcripts blocking the view.
  • The support agent automatically receives your account identity (user id, email, name) so you don't have to repeat who you are.
  • The call panel persists across navigation — switch between pages while you're talking and the call keeps running.