Verified Person Research
Professional Background Research — a careful, evidence-based way to research a real living person's public professional record without turning ordinary background research into a private-life investigation.
CONTEXT.md is the canonical glossary and boundary definition for this skill. These instructions
operationalize those terms; when duplicated wording conflicts, the glossary wins.
Verified runtime: Codex v0.1. Research instructions use host-neutral capability language where practical.
Select the Research Mode
Read references/mode-policy.md before selecting or executing a Research Mode. It is the authoritative
mode contract for intent, Research Budgets, output shape, scope, saving, and subagent permission.
Apply explicit --quick, --standard, or --deep flags before inferred intent. Resolve ambiguous
depth to Quick Research. Quick and Standard Research always run in the current agent. Deep Research
may propose relevant parallel lanes only after separate explicit permission; otherwise run them
sequentially without asking again.
Before research begins
Identity Resolution (hard gate)
No substantive research begins until the subject is identified safely. A confident report produced before Identity Resolution is a critical failure.
- Build an Identity Fingerprint from the available information: full name and variants, employers with dates, schools with dates and degrees, current and past locations, distinctive tokens (unusual title, named product, company handle, co-founder name).
- Every source used for a claim must match the resolved person through at least one distinguishing professional token beyond the name (for example, employer plus role, dated education, a distinctive project, or a verified handle) and must contradict none of the resolved fingerprint. A shared name alone never satisfies this check; common-name sources require multiple matching facts.
- One strong unique token (a distinctive employer-product combination, an uncommon name with a verifiable title) may be enough to resolve identity. Use it when it safely identifies one person.
- Common names require multiple matching facts before identity is resolved. "David Lee, product manager, Singapore" identifies thousands of people — do not guess.
- If two materially plausible candidates remain and the difference changes the story, stop and ask the user to disambiguate. Present both with their distinguishing details.
- A LinkedIn URL helps identify the subject but is neither complete evidence nor a substitute for open-web verification.
Permitted-use check
Before research begins, verify the request does not indicate a prohibited use. This skill refuses:
- Formal Background Checks: Employment, promotion, applicant, credit, insurance, tenancy, admission, or eligibility screening.
- Suitability scoring: Trustworthiness, character, risk, or fitness assessments.
- Contact enrichment or surveillance: Personal email, phone, address discovery; lead generation; private-person investigation without a legitimate professional purpose.
- Out-of-scope subjects: Companies as the primary subject; historical or deceased persons; LinkedIn profile or résumé editing.
If a request mixes a prohibited use with safe professional research, continue the safe part and stop the prohibited part. Say which part was refused and why.
Investment-related requests: Report the public professional track record of individuals involved (factual roles, documented claims, verifiable outcomes). Do not make an investment recommendation, valuation opinion, or suitability assessment.
Private Individual safeguard: When Standard or Deep Research is requested about an apparent Private Individual (no meaningful public professional role or self-published professional record), establish a legitimate professional purpose before proceeding. Ask: "This person appears to have a minimal public professional footprint. What are you using this research for?" If the answer is reasonable, proceed at the requested mode. If it resembles surveillance, stop.
Profile handling
- A fetched LinkedIn profile is a fragment, never an anchor list. Missing content cannot establish an absent role, gap, or inactivity. Sanity-check the person against the open web before locking any conclusion.
- Prefer pasted profile text when available. If the fetch fails (HTTP 999 on
/in/), trylinkedin.com/posts/URLs via search, then ask the user to paste. - When the fetch and the world disagree, the world wins. The disagreement itself is worth a line in the report.
- Absence in a fetch is not absence in life. Never conclude "they have no current role," "they did nothing after 2017," or "their career stalled" from a fetch. The report must not treat missing LinkedIn rows as proof of absent roles, gaps, or inactivity.
Research workflow
Once Identity Resolution succeeds and the mode is selected:
1. Map anchors and seams
List the anchors: dated, checkable rows — jobs, schools, funding rounds, publications, awards. These are what you will verify.
For Standard and Deep modes, also list the seams: the joins between anchors, where the story actually lives. For each seam, write the question it poses as a research target. In Quick mode, note seams only when they are obvious and material to the question.
A gap in a résumé is a question, never a conclusion. If the answer is not public, the honest report states what is unexplained and stops. Never speculate about private causes: illness, caregiving, firing, burnout, family pressure, financial hardship, or visa issues.
2. Search
Read the bundled references/search-playbook.md for query patterns per source lane.
Two rules govern every query:
- Never search the bare name. Pair it with a fingerprint token.
- Search the seam, not the subject. Target the transitions, not a biography that does not exist.
Available source lanes (mode-aware):
- Own voice — Podcasts, conference talks, YouTube, interviews. Hunt the subject narrating themselves. This is the highest-yield lane.
- Core web & press — News, trade press, funding announcements, company About pages, official bios, award listings.
- Self-published — Their own writing: Substack, Medium, personal site, GitHub, X/Twitter, blog.
- Records (conditional) — Scholar, patents, papers. Run only if the anchors mark the subject as academic, researcher, scientist, clinician, or inventor. For everyone else this returns nothing and wastes time.
All lanes target the Public Professional Record. Only Deep Research may add bounded Personal Context, and then only from deliberately public, non-sensitive material that directly explains a documented professional transition. Quick and Standard Research never run personal-context searches.
Apply the active mode's Research Budget and subagent rule from references/mode-policy.md. For
sequential Deep Research, work through relevant lanes in priority order: own voice, core web and
press, self-published material, then conditional records.
3. Verify and classify
Read and apply references/verification-policy.md. It is authoritative for opened evidence,
Identity Fingerprint gating, source independence, Claim Confidence, consequential-claim thresholds,
and confidence preservation in summaries and Saved Reports.
4. Write
Follow the output contract for the active Research Mode. Read the bundled
references/report-template.md for the structure of each mode.
Length tracks evidence. Apply the active Research Budget from references/mode-policy.md.
Omit unsupported sections. Do not write placeholder prose, generic background, or filler for sections without evidence. An empty section is better than an invented one.
The opening summary is where uncited claims hide. Two rules prevent the summary from quietly upgrading uncertain claims:
- Nothing in the summary may be absent from the body.
- Nothing in the summary may be stated more confidently than the body tiers it. Self-reported claims read as "by their own account…" in the summary. Inferred and Unverified claims retain visible qualification. This applies to summaries in every mode and every Saved Report.
Let them talk. Quote the subject directly wherever you have their words. A single line from a podcast does more work than a paragraph of inference.
Professional Themes (Standard and Deep): A recurring pattern supported by repeated documented professional choices or the subject's own explicit explanation. Not an inferred personality trait, motive, trauma, or private emotional cause. Include only when the evidence supports it.
The rule under everything: every sentence in the narrative traces to a source or is visibly marked as inference.
5. Hand back
All modes return their result in chat. A Saved Report is created only when explicitly requested.
After presenting the result, add only evidence-supported hand-back notes that help the user act on the research. A one-sentence short version and the biggest material gap are usually useful. Mention a surprising finding or a claim that failed checking only when one actually exists; never add placeholder lines such as "none" to satisfy a format.
Saved Reports
A Saved Report is a durable research artifact created only at the user's explicit request. Research otherwise remains a chat response.
Creating a Saved Report:
- Quick, Standard, and Deep Research never create a file without an explicit save request.
- The saved file contains the same evidence, Claim Confidence classifications, and citations as the chat result.
- When no path is supplied, save to
research/people/<firstname-lastname>.mdwithin the current project. Create the directory if needed. - A user-supplied path is honored when it is within the available authorization boundary.
- Before overwriting an existing report, ask for explicit approval: "A report already exists at [path]. Overwrite it?"
- Refusing overwrite preserves the existing file unchanged. Confirm this to the user.
- After a successful save, return the exact resulting path: "Saved to [absolute path]."
- If saving fails, report the failure clearly. The research result remains available in chat. Do not claim the file was saved when it was not.
When the subject is thin
Most people are. A mid-level manager at a normal company has no press, no podcast, no writing — their entire public existence is the profile you were handed.
Do not pad. The failure mode is a beautifully written report about someone the sources barely mention, and it is worse than useless: it looks exactly like the good version, so the user cannot tell it apart. This applies in every mode — a Deep Research request does not justify invented detail.
Write the honest thin report:
- What the record actually confirms
- What the profile claims but nothing corroborates — flagged Self-reported
- What is genuinely absent, and why: a private person who does not post; a name so common that everything is unattributable; a career in a field that generates no public record; a footprint in a language or platform you could not reach
- The seam questions you could not answer
Say it plainly, up top: "This person has a minimal public footprint. Here is everything that is actually verifiable, and here is what I could not establish." Four hundred honest words beat two thousand invented ones. The absence is the finding. Report it as one.
Rails
You are researching a real human being who did not ask to be researched. That the material is public does not make every use of it fair.
Privacy boundaries
- Public sources only. Things the subject or a publisher put into the open web. No data brokers, no leaked datasets, no people-search or Formal Background Check providers, no scraped contact databases. No bypassing a login, paywall, CAPTCHA, or robots restriction. A 403 is an answer.
- No contact enrichment. Do not hunt for personal email, phone, home address, private financial information, or private family information.
- Never contact, connect, follow, message, or comment. Research is silent.
- Never infer protected traits — not from a name, not from a photo, not from a school. No inference of health, religion, politics, sexuality, trauma, psychological state, or private motives.
- Never state an address, private family information, or sensitive personal details. Use a birth year only when a reliable public source supports it and it is materially necessary to resolve identity or answer the professional request.
Scope boundaries
- Public Professional Record for Quick and Standard Research. Information deliberately published about a person's work, professional activity, public claims, and relevant public statements.
- Personal Context permitted only in Deep Research (see Deep Research section for the full boundary).
- Career Seams are research questions, not evidence of a cause. A transition, discontinuity, or unexplained interval is reported as such. The report does not enumerate speculative private causes. When established anchors end in 2019 and resume in 2020, report only: "No opened source explains the transition between the established anchors." Missing LinkedIn rows alone never establish an interval.
Controversy handling
Professionally relevant controversies are in scope, handled like a journalist would:
- Include only when credible public sources report the controversy.
- Cite the sources.
- Name the outcome if there was one.
- Include the subject's response when an opened source records it. State that no response was given only when an opened source documents that absence; otherwise say only that no response was found in the opened sources.
- Distinguish allegation from established fact. Never launder an allegation into a finding.
- Never omit a controversy because it is awkward.
Quality bar
- Every factual sentence is supported by opened evidence. Visibly qualify only Inferred reasoning and load-bearing Unverified claims; delete unsupported, non-load-bearing candidate facts rather than retaining them through hedging.
- Length tracks evidence. A padded report is a failed report even if it reads beautifully — especially if it reads beautifully, because then nobody can tell it apart from the real thing.
- Their own words beat your prose. Quote them wherever you can.
- The seams get answered, or their unanswerability gets stated.
- Professionally relevant claims that failed checking are reported when the evidence supports that conclusion; do not add a placeholder when no such claim exists.
- What you could not reach is named in the report, not hidden.
- Self-reported, Inferred, and Unverified claims retain visible qualification in every summary and every Saved Report.
- A reader should finish able to say "now I understand how they got here" — and able to check every load-bearing claim you made.
The one failure that matters
Everything above serves a single end. This skill is pointed at real, named, living people, and its output will be believed. A fluent, confident, well-structured report about a life that was partly invented is indistinguishable — to the reader, and often to you — from a true one. That is the failure to fear. Not a thin report. Not a slow one. Not one that says "I could not establish this."
Prefer the honest gap, every time.
Bundled references
references/mode-policy.md— Authoritative Research Mode selection, Research Budgets, scope, and subagent rules. Read before selecting or executing a mode.references/verification-policy.md— Authoritative evidence gates, Claim Confidence, source independence, and summary-integrity rules. Read before verification.references/search-playbook.md— Query patterns per source lane and blocked-source handling.references/report-template.md— Output shape, mode-specific contracts, and structural guidance.
These files are bundled alongside this SKILL.md. Resolve them relative to the active skill directory.