Skip to content

Search

Global search is one box over the whole workspace: press ⌘K (or Ctrl+K) anywhere, type, and Tessule searches every table you can read plus the titles of your tables, dashboards, charts and saved queries. Results appear as you type.

If you only remember one thing: search never widens what you can see — it only helps you find it. Every result is filtered through the same row and field visibility rules as the rest of the app, so a record can only be found, ranked and quoted by fields you are allowed to read. Two people typing the same query get different results, and that’s the feature working.


Open it with ⌘K / Ctrl+K, or the search box in the top bar (a magnifying glass on small screens). Then:

  • Before you type, the palette shows your recently visited records, tables, dashboards and sheets — often the fastest path back to what you were doing.
  • Results update as you type: the last word matches by prefix, so “acme cor” finds Acme Corporation.
  • Navigate with ↑ ↓, open with Enter, close with Esc.
  • Each record hit shows its title, a snippet with the matching text highlighted, and chips naming which fields matched — why it’s in the results.

The search box is hidden entirely for a role without records:read — there would be nothing it could return.


Records, in every table that qualifies:

  • The table is a real, active table (SQL views are excluded), and
  • the table hasn’t been opted out of search (each table has an Is searchable setting, on by default — an admin can keep a 10-million-row event log out of the index), and
  • you can read it.

Within a table, the text-bearing field types feed the search: text, long text, rich text, email, phone, URL, picklist, and auto-number (matched on its formatted value, so “INV-0042” finds the invoice). Stored computed columns with a text result are included too. Numbers, dates, and booleans are not searched — use queries or a view filter for “amount > 5000”. Individual fields can also be opted out of search by an admin (useful for a free-text field full of pasted email threads) without hiding the field itself.

Workspace assets, by title: alongside record hits, a Jump to section lists tables, dashboards, charts and saved queries whose names match the query — “pipeline” finds the Pipeline dashboard as well as any records mentioning it. Each kind appears only if you hold its read action (tables:read, dashboards:read, charts:read, savedQueries:read), and chart/saved-query hits are shown only to people with access to the builder area, where they open.

Comments, attachments (file contents), and the audit log are not covered by global search.

There is deliberately no operator syntax — no quotes, AND/OR, or field prefixes. Every word you type must match (an implicit AND), operator characters are treated as word boundaries, and the query is capped at 256 characters. Beyond that, the box is forgiving:

Behaviour Example
Prefix match on the last word “acme cor” finds Acme Corporation
Accent-insensitive “muller” finds Müller (and vice versa)
Typo tolerance, as a fallback “Jhon Smtih” still surfaces John Smith

The typo-tolerant pass only runs when the exact search finds nothing, and the palette says so — “No exact record matches — showing close matches” — with no highlighted snippets, so a near-miss never masquerades as an exact hit.


Your query ⌘K, as you type Tables you can read searchable, up to budget Your row filter scopes, ownership, shares Your field masking match, rank & quote only visible fields Results grouped by table, truncation reported
Every search runs inside your own permissions — the same row filters and field masking the record endpoints apply.

Concretely (the API is GET /search, gated on records:read):

  • Rows: on private-visibility tables you only find records within your record scope — your own, your group’s, or ones shared with you, exactly as on the record list.
  • Fields: a record that matches your query only in a field you cannot read is not returned. Titles and snippets are built exclusively from fields visible to you, so a hidden value can never leak through a result’s ordering, title, or highlight.
  • Assets: each kind is included only when you hold its read action.

Results are grouped by table, because relevance scores from different tables aren’t comparable — a flat merged list would be pretending they are. Hits are ranked within their group; groups are ordered by their best hit; a count chip shows when a table has more matches than the palette displays (the palette shows up to 5 per table; the API returns up to 10 by default, 50 at most).

Search is budgeted, and honest about it:

  • Tables per search — one search fans out across at most a set number of tables (default 50, adjustable per plan). In a workspace with more searchable tables than that, the palette prioritises the tables you’ve visited recently and tells you how many were skipped — “Searched 50 of 120 tables” — rather than silently covering part of the workspace.
  • Searches per day — a workspace-level daily allowance (generous; default 50,000) guards the platform against runaway automation, not people typing.
  • A table searched while its index is being (re)built is still searched correctly, just more slowly — the palette notes that results from it may be slow or incomplete.

Q: I can open a record from a link, but search doesn’t find it.

Check, in order: the table’s Is searchable setting may be off; the matching text may live in a field type search doesn’t cover (numbers, dates) or in a field an admin excluded from search; or the match is in a field hidden from you. Search only finds records by fields you can read — a colleague with wider field access may genuinely get a hit you don’t.

Q: Can I search inside comments or attachments?

No. Search covers record field text and asset titles. Attachment filenames are not indexed either.

Q: Why do my results look different from a teammate’s?

By design — see the diagram above. Row scopes, shares, and field visibility are all applied per person before anything is returned.

Q: Is there a way to search from the API or an AI assistant?

Yes: GET /search returns the same permission-filtered, grouped results (see API access), and the AI assistant’s record search goes through the same gate — see AI assistants.

Q: “No exact record matches — showing close matches”?

The exact pass found nothing, so the palette fell back to fuzzy matching to catch typos. Close matches carry no highlighted snippet, because there is no exact match to quote.

Open the app