Benchmarks
On 28 August 2026, the project ran a small paired benchmark comparing Kestrel’s three-provider fanout with Codex’s native Web Search. Both arms received the same eight technical web-research tasks and ran each task three times, producing 24 trials per arm and 48 trials in total. Kestrel searched DuckDuckGo, Bing, and Yahoo concurrently. The native arm was required to use Codex Web Search at least once.Results

Answer quality

- Correctness and grounding of at least 1 each.
- A total score of at least 6 out of 8.
- No material contradiction from a cited source.
Reviewed failures
In this run, native Web Search’s two failures involved source reconciliation. The answers identified Python 3.15 as the future development release, while the current official development guide identified Python 3.16 as the future main-branch release. Kestrel’s three failures were synthesis errors involving PyPI publishing guidance. The retrieved material contained the relevant publisher page, but the answers substituted the mandatoryid-token: write permission for PyPI’s
strongly recommended GitHub Environment setting.
Retrieval provenance
All 24 Kestrel retrieval artifacts recorded fanout mode with DuckDuckGo, Bing, and Yahoo configured. Across retained-result provenance:- DuckDuckGo appeared 107 times.
- Yahoo appeared 88 times.
- Bing appeared 84 times.
Limitations
- This was a small, developer-focused suite: eight tasks with three trials per task. Treat it as a project benchmark, not a universal performance claim.
- Retrieval was live and uncached. Search results, source availability, network conditions, and model behavior can change between runs.
- Kestrel used three-provider fanout. The run does not isolate provider quality or measure ordered fallback behavior.
- The workflows differ. Kestrel retrieves a bounded result set before answer synthesis, while native Web Search can search iteratively. The comparison is between complete user-visible paths, not isolated search engines.
- Semantic scoring is evidence-based but still involves reviewer judgment. A stale Python-version fixture was recorded rather than treating current official information as incorrect.
- An interrupted two-record fallback run was excluded from every reported number and visual.