> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kalent.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Non-deterministic Results

> Understand why search results may vary between identical API requests and how to work with this behavior.

The Kalent search engine is a **live, AI-augmented system**. Search results are not guaranteed to be identical across requests, even when you send the exact same filters. This is by design and reflects how the platform continuously improves data quality and relevance.

## Why results vary

Three factors contribute to non-deterministic behavior:

<AccordionGroup>
  <Accordion title="Real-time profile refresh" icon="arrows-rotate">
    Talent profiles are enriched and updated **in real time** during each search. A profile that did not match a filter moments ago may match now (and vice versa) after a refresh. This means every search benefits from the latest available data.
  </Accordion>

  <Accordion title="AI-powered scoring" icon="brain">
    Result ranking uses AI models whose outputs can **vary slightly between calls**. The ranking reflects the best possible ordering at the time of the request, but small fluctuations are normal and expected.
  </Accordion>

  <Accordion title="Database updates" icon="database">
    New talents are **continuously indexed** and existing profiles are updated from external sources. The pool of matching candidates grows and evolves constantly.
  </Accordion>
</AccordionGroup>

## What this means in practice

* **Same filters, different results**: two identical requests sent minutes apart may return different talents or rank them differently.
* **Result counts may shift**: the `estimationCount` value can change between calls as new profiles are indexed or existing ones are updated.
* **No two pages are "frozen"**: when paginating with `relatedSearchTransactionIds`, each page reflects the live state of the database at the time of the request.

## What stays consistent

Despite the non-deterministic nature of results, the API provides strong guarantees:

<CardGroup cols={2}>
  <Card title="No duplicates in pagination" icon="clone">
    The `relatedSearchTransactionIds` mechanism ensures you will **never see the same talent twice** across paginated requests.
  </Card>

  <Card title="Filter accuracy" icon="check">
    Every returned talent **genuinely matches your filters** at the time of the request. Non-determinism does not affect accuracy — only ordering and pool composition.
  </Card>
</CardGroup>

## Recommendations

<Steps>
  <Step title="Don't rely on result ordering">
    Treat results as a set of matching candidates rather than a strictly ordered list. If you need a stable ranking, apply your own sorting logic after receiving results.
  </Step>

  <Step title="Use pagination correctly">
    Always accumulate `searchTransactionId` values across pages. This is the only way to guarantee non-overlapping results. See [Pagination](/api-reference/search-talents#pagination) for details.
  </Step>

  <Step title="Expect evolving counts">
    Use `estimationCount` as an approximation, not an exact figure. The count reflects a live, constantly updating dataset.
  </Step>
</Steps>
