Turn sparse people lists into enriched profiles, then search across those profiles with one-off searches or reusable rubrics.
Workspace status
DatasetsLoading
PeopleLoading
What is People Search?
It has two core jobs: enrich arbitrary people inputs, then search over the profiles it builds.
1. Enrich arbitrary inputs
Start with a sparse list: names, emails, orgs, LinkedIn URLs, notes, or messy Airtable fields. People Search connects rows to public LinkedIn profiles, websites, papers, and other attributable evidence, then saves the result as a profile.
2. Search across enriched profiles
Ask one-off questions with Single Search, or define reusable rubrics for structured scoring. Feedback becomes rules and examples that Claude Haiku uses when it reads profiles and assigns scores.
1
Import
Upload CSV/JSON, map columns, and choose whether LinkedIn URLs are trusted.
Drop a CSV or JSON of people. You will map columns and review the cost before enrichment starts.
Nothing paid happens on file drop. The app first reads a sample, guesses column meanings, then asks whether to enrich all profiles, test a random sample, or build cards without enrichment.
Drop a file here or click to browse
CSV or JSON with name, email, LinkedIn URL, notes, or any other fields
1
Map columns
2
Review cost
3
Enrich
4
Done
Map columns
Identity fields help find the right person. Searchable content is what Single Search and rubric scoring will read. Metadata is stored for filtering and context.
Choose enrichment scope
Enrichment finds public LinkedIn profiles and builds richer candidate cards. You can test a sample first or skip it entirely.
Enrich allBest when the import is trusted and you want full search/rubric quality.
Random sampleBest for smoke tests. Imports the dataset, then enriches only the sample limit.
Skip enrichmentBest when your file already has enough notes or bios. Skips LinkedIn lookup, but still fetches any Twitter, website, and resume URLs on each row so cards have first-party content.
Enriching profiles
Starting...
0%
Upload complete
The dataset is now available in People, Datasets, Single Search, and Rubrics.
Library
Datasets
Imported source lists. Open one to inspect rows, retry failed enrichment, re-run all enrichment, rename, or delete.
Library
People
Merged people across every dataset in this account. Use this to inspect identity matches and public evidence before running searches.
Step 4
Rubrics
Run structured assessments over enriched people when you need axis scores, must-have filters, review notes, and CSV export.
Use Single Search for one-off fuzzy discovery. Use Rubrics for slower, reviewable scoring against explicit axes like location, vetting, technical depth, or policy judgement.
Set up a rubric run
Pick a rubric and who to score it over. The optional evidence steps below are slower and paid.
Proposed rubric changes
Add evidence — optional, slower and paid
Assessment runs
Results
Assessment results
Results
Step 3
Single Search
Score enriched profiles against one natural-language property or brief. Ratings and rules make the next run sharper.
1 Pick or create2 Describe target3 Score profiles4 Rate and re-score
How Single Search Works
Each search runs an LLM (Claude Haiku) over your dataset and scores every profile 0–100. The score depends on what you give it and what's in each profile.
What the judge sees per profile
A profile card stitched together from fields you marked as content on upload — LinkedIn experience, notes, bios, written pitches. Metadata fields (tags, dates, internal categories) are NOT shown to the judge. If a useful column got classified as metadata during ingest, go to Datasets → click the column header → reclassify as content.
Query vs. Rules — when to use which
Query (the chat box): a free-text description of who you're looking for. Use it for fuzzy criteria the judge can interpret with context — "someone who could run operations at a fast-growing AI safety org". The judge weighs everything together.
Rules (the "Add rule" list): explicit constraints that override the judge's discretion. Use rules when you mean something specifically — "Must be DC-based", "Exclude consultants", "Prioritize DARPA / ARPA-H program managers". Rules become part of the system prompt; the judge is told to honor them.
Rule of thumb: if you'd reject every profile that doesn't satisfy it, it's a rule. If you'd just prefer it, leave it in the query.
Global rules
Apply to every search in your account — for things that are always true ("Reject candidates currently in academic teaching"). Mark a feedback note as "global" when giving feedback to suggest it as a global rule.
Feedback loop
★ / ✓ / ✗ / ✗✗ ratings on each result. ★ and ✗✗ become positive/negative exemplars — the judge sees these verbatim as "examples of what good/bad looks like." Add a Why? reason to make exemplars sharper. Click Re-score with feedback to (a) synthesize new rule proposals from your ratings, then (b) re-score everything.
When the judge re-reads rules
The system prompt is built once at the start of a scoring run. Rules added mid-run don't apply to in-flight scoring. You'll get a toast when saving — hit Re-score with feedback after the current run finishes to apply the new rule.
If a result looks wrong
Open the profile card — what fields is the judge actually seeing?
If a useful field is missing: re-classify it as content in Datasets, then re-run.
Give negative feedback (✗ or ✗✗) with a reason — that becomes a negative exemplar.
If a class of people keeps being wrong, add an explicit rule.
Saved single searches
Open a prior search to review results, or create a new one from a fresh brief.
Global Rules
i
Apply across all searches. Format: "When [condition], [rule]."
Write rules the AI can understand. Before each search, AI reads all global rules and only injects the ones relevant to that specific search. Good: "When evaluating 'practitioner,' look for shipping real programs — publications alone don't count." Bad: "Prefer operators" (too vague), "This person is fluff" (search-level, not global)
New single search
Choose the search scope, name the run, then describe the person you want. The assistant may ask clarifying questions before scoring starts.
Scoring profiles...
Scores are a snapshot. Editing rules or giving ratings does not change the table until you click Re-score with feedback.
Search brief
Rules for the next score run
Proposed changes from feedback
API Usage
Per-provider spend and call volume for the last 30 days.
Wired APIs
Total spend
—
API calls
—
Errors
—
Remaining credits / balance
Loading…
By provider
Provider
Spend
Calls
Errors
Avg cost / call
Loading…
Recent errors (last 25)
Costs are estimated from a local rate table. The daily reconciliation cron polls provider APIs (EnrichLayer, Anthropic, OpenAI, Brave) and writes the authoritative number to a separate api_usage_reconciliation table — drift between the two is your fast canary that a wrapper is missing or a rate is stale.
Library
DC Event Intelligence
Find the rooms where relevant people will be, decide what to attend, and keep the resulting network history.
Read-only review using events extracted from the supplied July LIST digest. Attendee lists are empty because the digest publishes events, not guest identities.
0upcoming events
0people observed
0marked attend
0watchlist matches
Ingest a listserv digest
Repeat announcements update the existing event.
No events yet. Ingest a digest to begin.
Search people associated with events.
No watches yet.
Admin
Settings
Integration setup, platform API-key status, and outreach templates.
API Keys
The platform manages enrichment keys centrally. Per-account overrides are disabled — contact the admin to rotate keys.
Airtable Integration
Import profiles from an Airtable base. Optionally push enrichment results back.
Personal access token from airtable.com/create/tokens
Email Outreach
Template for the "Reach Out" button in search results. Opens Gmail with a pre-filled draft.
Variables: {name} = their name, {my_name} = your name, {my_org} = your org, {topic} = from the search query
How your data is handled
Your data is stored securely in your account. Each account's data is isolated — other accounts cannot see your datasets, searches, or rules.
When you enrich: Names and emails are sent to Brave Search to find LinkedIn profiles. LinkedIn URLs are sent to EnrichLayer to pull public profile data. That's it.
API keys: Platform defaults are managed centrally. This page shows status so users understand whether enrichment and scoring are available.
Loading...
What is People Search?
People Search turns arbitrary lists of people into searchable, reviewable profiles. It has two main components.
1. Enrich arbitrary inputs
You can start with sparse or messy data: a name and org, an email, a LinkedIn URL, Airtable fields, notes, bios, or a CSV assembled from different sources. That raw list is often not enough to answer questions like “who here is conservative and has good takes on AI?”
Enrichment connects each row to public evidence that appears attributable to that person: LinkedIn, websites, papers, resumes, and other open-web sources. The app saves that evidence as a profile so later searches are reading a richer record than the uploaded row.
2. Search across enriched profiles
Once profiles exist, you can search over them in two ways. Single Search is for one-off natural-language criteria: “people who could run operations at an AI safety org,” “likely conservative AI-policy people,” or “technical founders with policy judgement.”
Rubrics are for reusable, structured scoring. They let you define axes, must-have thresholds, and review notes, then export selected candidates.
How feedback improves searches
When you rate results or add reasons, People Search turns that feedback into rules and examples. Claude Haiku uses those rules when it reads profiles and assigns scores, so repeated searches can get closer to what you mean.
Data options
This hosted app stores account data securely. There is also an open-source/local version for data you have but do not want to share with a hosted service.
Welcome to People Search
Upload databases of people, enrich them, and search across them.
Your data is stored securely in your account. The only external calls are to enrichment APIs (Brave Search, EnrichLayer) — and only when you choose to enrich.
API keys are managed by the platform — nothing for you to configure here.
Feature request
Send product feedback or a bug report. This is saved to the workspace and emailed to Jonah.
Edit rubric
Define the axes the AI scores candidates against, plus rubric-wide rules.
Name
Description
Settings
Rubric rules
Apply to every axis. Format: short imperative sentences.