Use case
Regulatory and compliance research
Teams in finance, legal, pharma and the public sector who must defend a retrieval decision.
The problem, and the approach
The problem
- The question after an answer is not "what did you find" but "what did you miss, and can you show it was not material".
- No amount of ranking quality answers that, because ranking says nothing about what was excluded.
- Reproducing a retrieval decision months later requires knowing what the index held at the time, not what it holds now.
The approach
- from and to bound the crawl-time window, reconstructing the evidence base as it stood at a point in time.
- authority restricted to governmental and educational sources removes an entire category of noise in one parameter.
- why_not explains any specific exclusion — present, removed with a typed reason and replacement, or never admitted.
- assemble_context attaches a reason to every included passage, making the selection itself auditable.
The parameters that matter
| Parameter | Value | Why |
|---|---|---|
from / to | the period under review | Reconstructs the evidence base at that time. |
authority[] | gov, edu | Institutional sources only. |
min_independent_sources | 2 | A documented threshold applied uniformly. |
why_not?url= | any challenged document | A substantive answer to "why was this not in scope". |
curl -H "x-api-key: $UNLOB_API_KEY" \
"https://api.unlob.com/search?q=disclosure+requirement&authority[]=gov&from=1735689600&to=1738368000"
curl -H "x-api-key: $UNLOB_API_KEY" \
"https://api.unlob.com/why_not?url=https://example.gov/guidance/2026-04"Defensibility is about the exclusions, not the hits
In regulated work nobody doubts that a search happened. The question asked afterwards is what it missed, and that is a question about the excluded set — which most retrieval stacks cannot describe at all, because exclusion happens implicitly through ranking and the cut-off at k.
Making the exclusions explicit is what turns a search into a record. A uniform corroboration threshold, an authority filter and a bounded time window are all statements about what was not considered, applied identically to every query in a review rather than tuned per question. The uniformity is the part that matters: a threshold varied by hand across a review produces a set of results nobody can characterise afterwards, which is worse than a stricter threshold applied consistently.
An answer about absence, and its boundary
The strongest thing this workload gets is a substantive answer about a URL that did not appear: present, removed with a stated reason and a timestamp, or never admitted. Against an append-only ledger that is a reconstructable claim rather than an assurance, and it is the difference between “we searched the web” and a description of what was considered and what was set aside.
Two boundaries should be stated to whoever relies on it. History windows are bounded by plan, so a review that needs to reach back years has to be on a plan that reaches back years — discovering that mid-review is expensive. And a technical answer about index membership is not a legal one: whether it satisfies a particular obligation is a question for your compliance function, and the honest position is to hand them the mechanism rather than a conclusion.
Where this is not the right tool
- History windows are plan-bounded: 30 days on Free, one year on Build, five years on Scale, and the full index on Archive.
- why_not is a substantive answer, not legal advice. Whether it satisfies a specific obligation is a question for your compliance function.
- Query strings leave your infrastructure. Treat the query itself as disclosed.
Frequently asked questions
Can I reproduce a search from six months ago?
You can reconstruct the evidence base by bounding the crawl-time window, provided your plan reaches that far back. Ranking may differ as the index evolves, so log the returned passage ids at the time.
What should I log for an audit trail?
The query and every filter verbatim, the timestamp bounds, the corroboration threshold, the passage ids returned with their reasons, and the result of any why_not call about a document later raised.
Build it on the free tier
10,000 credits a month, no card. Every parameter above works on every plan.