Person Semantic Search is currently in beta on
POST /person/search.
Request fields, ranking behavior, and query-constraint extraction may evolve
based on feedback. To share input or request access, write to
support@crustdata.co.search.query to
Person Search. Crustdata uses the query to
rank matching people by profile context such as title, skills, company history,
education, location, and summary text. You can also combine semantic ranking
with structured filters.
Where semantic search is available
| API | Request field | Notes |
|---|---|---|
| Person Search | search | Add a natural-language query to rank and recall people semantically. |
| Person Search | mode | Optional top-level recall mode: managed (default) or exact. |
At a glance
| Detail | Value |
|---|---|
| Endpoint | POST https://api.crustdata.com/person/search |
| Auth | Authorization: Bearer YOUR_API_KEY |
| API version | x-api-version: 2025-11-01 header |
| Beta request field | search.query |
| Retrieval modes | search.mode: hybrid (default), lexical, or semantic |
| Recall modes | top-level mode: managed (default) or exact |
| Response | Same paginated Person Search shape: profiles, next_cursor, total_count |
| Pricing | Same as Person Search: 0.03 credits per result |
| Rate limit | Same as Person Search: 30 requests per minute |
The problem: rigid filter-only search
Structured filters are precise, but they force you to know the exact fields, operators, and indexed values before you search. That works for narrow queries, but it breaks down when your intent is broader:- Persona searches - “founding engineers at developer tools startups.”
- Skill-heavy searches - “backend engineers with Golang and distributed systems experience.”
- Job-description searches - paste the most important parts of a role and find similar profiles.
- Exploratory recruiting - start with a plain-language role description, then tighten with filters.
The solution: natural-language ranking
Add asearch object to a Person Search request:
search.query is used to find and rank people whose profiles match the
meaning of the query. You can send search by itself, or combine it with
structured filters.
Do not send
sorts with semantic search. Semantic results are already
rank-ordered by relevance.Retrieval modes
The nestedsearch.mode field controls which retrieval signals are used for
the natural-language query.
search.mode | Meaning | Use when |
|---|---|---|
hybrid | Combines lexical keyword matching and semantic vector search. | You want the best default for natural-language people search. |
lexical | Uses keyword matching only. | You want exact terms, acronyms, names, or IDs to dominate. |
semantic | Uses vector similarity only. | You want concept matching even when profiles use different words. |
hybrid is the default. Use it unless you have a specific reason to isolate
keyword-only or vector-only behavior.
Recall modes
The top-levelmode field controls how Crustdata combines your natural-language
query with explicit filters.
mode | Behavior | Use when |
|---|---|---|
managed (default) | Crustdata can extract extra constraints from the query and union them with your filters before reranking. | You want better recall and are comfortable with adaptive results. |
exact | Only your explicit filters define the hard result set. The query still ranks results inside that set. | You need filters enforced as hard constraints or reproducible counts. |
Example: search from a natural-language query
This request finds people who match a plain-language recruiting query.Response shape
The response above shows shape only. Actual profile values depend on the
query, requested
fields, and account permissions.Example: semantic ranking inside hard filters
Usemode: "exact" when your filters must be enforced. This example limits the
result set to people in San Francisco, then uses the natural-language query to
rank the best machine-learning profiles inside that set.
Request
When to use each approach
| You want to | Use |
|---|---|
| Find people from a natural-language role or persona | search.query with search.mode: "hybrid" |
| Match concepts even when profiles use different wording | search.mode: "semantic" |
| Match exact terms, acronyms, names, or IDs | search.mode: "lexical" |
| Keep explicit filters as hard constraints | top-level mode: "exact" |
| Maximize recall and let Crustdata improve query parsing | top-level mode: "managed" |
| Build a fully deterministic filter query | Filter-only Person Search |
| Discover exact filter values before filtering | Person Autocomplete |
What to do next
- Search with filters - see Person Search for the standard filter workflow.
- Look up operators and fields - see Person Search reference.
- Discover filter values - use Person Autocomplete.
- Feedback - Person Semantic Search is in beta; send ranking or query-parsing feedback to support@crustdata.co.

