Search
The Search endpoints let you find relevant past jobs, outcomes, and intake records by describing what you’re looking for in natural language. The platform uses hybrid search, combining meaning-based matching with keyword retrieval, to surface relevant results even when terminology differs.POST /search/outcomes
Search across AI-enriched job outcomes. This is the primary search endpoint for finding jobs by what happened, what was done, or what the result was. Request body:POST /search/outcomes/enriched
Semantic search over job outcomes with relationship enrichment from the intelligence layer. Same request body and filters asPOST /search/outcomes. Adds related_works grouped by job type, engineer, and site for each hit set.
Request body:
Response fields:
- Fault resolution: Find similar past fixes and see completion patterns for that job type.
- Engineer fit: Check whether engineers on matched outcomes have history with the customer or fault class.
- Site risk: Surface repeat failures at the site alongside semantically similar outcomes.
- Slower than
/search/outcomesdue to relationship enrichment (~500ms–1s additional). related_workskeys are derived from returned hits only, not the full matching corpus.- Returns
502if semantic search or enrichment fails.
POST /search/intake
Search across raw job intake text, the original fault descriptions as entered by dispatchers or customers. Request body:POST /search/intake/enriched
Semantic search over job intake text with relationship enrichment, returns richer context by joining linked records to each result. Request body:GET /search/autocomplete
Fuzzy / phonetic / email-aware lookup across contacts, persons (site contacts and account holders), engineers, jobs, and taxonomy entities. Returns results grouped by entity type plus a flatresults[] array for back-compat.
Query parameters:
Search capabilities:
- Name / phonetic:
SmythfindsSmith;PureGymfindsPure Gym - Email: type a full or partial email (
ric@vezzahub.com,ric@) to find the matching person directly. Results carrymatchedVia: "email". - UUID / personId: paste a standard UUID to resolve the person directly
via their
idsarray. ReturnsmatchedVia: "person_id"with score 1.0. - Postcode: UK postcodes with or without a space (
NN10 5AB/NN105AB) - Reference: job reference or order number prefix
- Numeric id: bare integer resolves
contactId,resourceId, orjobId
groups.contacts, groups.people,
groups.engineers, groups.jobs, groups.jobTypes, groups.jobCategories,
groups.contactGroups, and groups.resourceGroups. Each result includes a
matchedVia field indicating why it was returned (name, email,
person_id, postcode, phonetic, reference, id, site_bridge, etc.).
Use cases:
- Typeahead UI: Power customer, site, and job pickers in dispatch or ingest review screens.
- Email entity resolution: Resolve portal payloads to
contact_idandsite_keybeforePOST /ingest/email/portal. - Connie grounding: Disambiguate names or postcodes before semantic search or graph queries.
- Minimum query length is 2 characters. Accepts any entity Id such as contact, job, job_group_id, reference, resource etc
- Use
GET /search/autocomplete/diagnosewhen all groups return empty (index health).
GET /search/autocomplete/diagnose
Health check for the autocomplete index pipeline (always returns 200; inspectmissing, populating, advice).
Query parameters: