Every system, one ranked answer.
Search returns one ranked answer with citations across every system your team uses. Docs, mail, code, tickets, decks, transcripts, contracts, the warehouse. Permissions are enforced at query time, so the person asking sees only what they are entitled to.
Five capabilities, all permission-aware.
Most enterprise search returns a list of links and hopes for the best. Search returns one grounded answer, with rank, with citations, with ACL enforcement at query time.
Every document is re-checked against the asker's ACLs at query, not at index. A revoked share stops appearing as soon as the change propagates. No stale index leak.
The model writes the answer using only retrieved spans. Every sentence has a citation. If the corpus does not support an answer, we say so.
40+ connectors. Salesforce, Notion, Confluence, Drive, GitHub, Linear, Zendesk, Slack, the warehouse, and more. Same ranker, same answer.
For sensitive sources we can run retrieval without copying source data into our index. The connector returns spans on demand, verified per query.
Every query, every retrieved span, and every ACL decision is logged. Export the audit log for legal hold and eDiscovery.
Three passes, in series.
Search runs three passes for every query, in series, with most of the cost paid by the cache.
Hybrid retrieval
BM25 + dense vectors run in parallel across every source. The top candidates surface from every source at once. Per-source ACL pre-filter happens here.
Rerank with cross-encoder
Top 30 finalists get a cross-encoder rerank tuned on your workspace clicks. The output is the snippet ranking you see.
Synthesize with citations
The model composes from the top spans only. Every sentence has a citation. Ungrounded sentences are filtered before display.
Nine more, all shipping.
Each is in the base product. None requires a separate connector marketplace charge.
40+ connectors
Slack, Notion, Confluence, Drive, SharePoint, Gmail, Outlook, GitHub, Linear, Zendesk, Intercom, Salesforce, HubSpot, the warehouse, more.
ACL at query time
No stale index leaks. A revoked share stops appearing as soon as the change propagates. Permission diffs are audited.
Multilingual
Query in EN, retrieve in 24 languages. The answer composes in your preferred language with sources hovered in original.
Question history
Per-user history with smart redaction of sensitive queries. Shared history available for team learning, opt-in.
Federated for sensitive
Some sources never copy data into our index. The connector returns spans on demand, verified per query, audited per access.
Filter and facets
Filter by source, date, author, type, language, project. Saved filters per role (engineering, legal, sales).
Inline at every surface
Cmd-K from any wrxstack module. Browser extension. Slack slash. Same ranker, same ACLs.
Click-through learning
The reranker fits on your clicks, per workspace, so results sharpen as your team uses it.
DLP and redaction
Sensitive tokens (secrets, PII) masked in retrieved spans and in the answer. Logged per access.
Search reads every surface.
Search is the reading half of the platform. Every other module both feeds it and is searchable from it.
Six native sources plus 40+ external
Search is the reading half of the platform. The other six modules feed structured content with rich edges, and the 40+ external connectors fill in the rest of the stack. Same query, same ranker, same ACL enforcement.
Programmatic retrieval.
Run grounded queries from any backend. Pass an "as_user" header to enforce that user's ACLs.
# Ask a question with a specific user's ACLs, return cited answer. from wrxstack import Wrx wrx = Wrx(token=os.environ["WRX_TOKEN"]) answer = await wrx.search.ask( query="what did we tell Acme about how their data is secured", as_user="sandra@acmerobotics.com", # enforce that user's ACLs sources=["docs", "meetings", "contracts", "inbox"], cite_style="inline", fail_if_ungrounded=True ) if answer.grounded: for sent in answer.sentences: print(sent.text, sent.cites) else: print("corpus did not support an answer; do not invent.") # Or fetch retrieval-only, no synthesis, for your own RAG pipeline. spans = await wrx.search.retrieve(query="...", top_k=20, as_user="...")
Search vs. Glean.
Glean is a strong enterprise search. wrxstack Search is enterprise search that lives inside the work graph and shares ACLs with the rest of the platform.
wrxstack Search vs. Glean
| Capability | Glean | wrxstack Search |
|---|---|---|
| Cited answer mode | Available | Default, ungrounded sentences dropped |
| ACL freshness | Hourly | Query-time enforce, near-instant revoke |
| Federated retrieval | Limited | First-class for sensitive sources |
| Inline at every surface | App + extension | Cmd-K from every wrxstack module |
| Native object types | Generic blob | Docs, Tasks, Contracts as types |
| Per-tenant model | Shared infra | Per-tenant rerank, per-tenant index |
| Audit log | Available | Query + spans + ACL diff, exportable |
Common questions.
Six things buyers ask before adopting Search.
How is ACL enforcement actually done at query time?
Each candidate span carries the source ACL hash. At query time we resolve the asker's permissions against the source system (cached briefly) and prune any span the asker is not entitled to. A revoke event invalidates that cache promptly, so access changes take effect on the next query.
What is the cost of running many connectors at scale?
Connectors are included, and indexing scales with the number of sources you connect. Large, high-volume deployments run under a fair-use bandwidth cap. Pricing is set inside the product, shown when you are ready to grow.
How does first indexing work?
We index in priority order, recently edited content first, so the most-searched part of your corpus becomes available while the long tail keeps indexing in the background. Progress is visible per source as it runs.
Can we use our own LLM or embedding model?
Yes. Embedding models can be swapped per connector. The synthesis model is configurable per workspace (Anthropic, OpenAI, Cohere, or self-hosted). The rerank model is per-tenant by default and fine-tuned on your clicks.
What happens for queries the corpus does not answer?
By default we return "the corpus does not support an answer" and show the top 3 retrieval results. The synthesizer is constrained to grounded sentences; ungrounded ones are filtered. We do not let the model fall back to its training corpus.
Do you support warehouse and structured data?
Yes. The warehouse connector supports Snowflake, BigQuery, Redshift, and Databricks. Tables are searchable by schema and by sampled content. Joins with documents (find me deals tagged "enterprise" plus the doc that defines the discount policy) are supported in a single query.
Does it search across all my company's apps at once?
Yes. One query runs across everything you have connected, your docs, tasks, CRM records, meetings, inbox, and the 60+ integrations, and returns a single ranked answer with the source attached. You do not search each app on its own and stitch the results together. Access controls are respected, so a person only ever sees what they are already allowed to see.
Pairs well with.
Search is sharpest with Docs, Meetings, and Documents live.
Who this is not for.
Search returns one ranked answer across your Atlas modules and connected apps. If you need to index millions of documents across hundreds of external systems, or tune a relevance engine over a large outside corpus, a dedicated enterprise-search platform will fit better. Search is built to answer across your workspace, not to run as standalone infrastructure.
Stop hunting across systems.
Free to start, no credit card. Connect five sources in under 20 minutes. The first cited answer lands the same day.