Skip to content

Add people_search benchmark (scorer-based, provider-agnostic) - #12

Open
diya-kejriwal wants to merge 8 commits into
youdotcom-oss:mainfrom
diya-kejriwal:people-search-framework
Open

Add people_search benchmark (scorer-based, provider-agnostic)#12
diya-kejriwal wants to merge 8 commits into
youdotcom-oss:mainfrom
diya-kejriwal:people-search-framework

Conversation

@diya-kejriwal

Copy link
Copy Markdown

Summary

  • Adds a 240-query people_search dataset (enrichment + open search across 6 buyer personas) with no gold answers.
  • Scores structured people[] via deterministic field-fill / persona-field-fill scorers and optional LLM judges (overall + persona), using the shared eval_runner.py.
  • Introduces a generic http_people_search sampler: point PEOPLE_SEARCH_API_URL at any people-search HTTP endpoint that speaks the documented request/response contract.
  • Clarifies metrics: accuracy_score is blank for this dataset; primary signals are mean_field_fill / mean_judge_* and has_people_rate.

Test plan

  • pytest tests/test_people_search.py
  • Set PEOPLE_SEARCH_API_URL to an endpoint returning {people, person_count} and run:
    python src/evals/eval_runner.py --samplers http_people_search --datasets people_search --limit 5
  • Confirm raw results include field_fill / has_people (and judge columns when PEOPLE_SEARCH_LLM_JUDGES=1)
  • Confirm analyzed_results.csv has blank accuracy_score and populated mean_field_fill / has_people_rate
  • PEOPLE_SEARCH_LLM_JUDGES=0 run skips LLM judge columns

Made with Cursor

diya-kejriwal and others added 7 commits July 23, 2026 16:13
Ship a CSV dataset and Nyne/PDL/Exa people samplers that emit structured
people[] output, graded by field-fill scorers instead of gold answers.

Co-authored-by: Cursor <cursoragent@cursor.com>
Replace Nyne/PDL/Exa-specific clients with http_people_search so any
endpoint returning people[] JSON can run the shared dataset and scorers.

Co-authored-by: Cursor <cursoragent@cursor.com>
Port the Braintrust judge rubrics into local prompts scored via the
shared grader model; disable with PEOPLE_SEARCH_LLM_JUDGES=0.

Co-authored-by: Cursor <cursoragent@cursor.com>
Expand the README so outsiders can run the benchmark end-to-end from
the shared eval runner against any people[] endpoint.

Co-authored-by: Cursor <cursoragent@cursor.com>
Leave accuracy_score blank in analyzed results; emphasize mean_field_fill
and mean_judge_*; use has_people/no_people as the row evaluation_result.

Co-authored-by: Cursor <cursoragent@cursor.com>
Fix judge defaults, --clean True, Gemini env var, HTTP contract details,
metrics wording, and clarify that no provider clients ship in-repo.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Assemble scoring metadata from dedicated columns at dataset load time
so the runner and graders keep working without shipping gold strings.

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant