person_profile · git:20261020.49a1c46 · 2026-10-20 · sha256 8f1c612f017e1430
person_profile git:20261020.49a1c46A
Immutable. This exact content never changes and is served at /api/v1/blob/8f1c612f017e1430.
--- name: person_profile description: Generate individual profiles from an existing person roster, LinkedIn enrichment and dataset evidence, including founder-trait assessment for active founders. Use for selected people or the complete roster. --- # Person profile Generate standard individual profiles for use directly or by other skills. ## Inputs and outputs The async API accepts `dataset_name`, optional `names` (a string or list), and keyword-only `include_dataset_context=True`. Omitted names select everyone in the roster. `person_profile` returns `list[InsightFile]`; the `person_profile_as_person_objects` adapter runs the same workflow and returns populated `list[Person]`. Explicit unmatched names currently create sparse `Person` inputs for profiling; they do not change the roster. The roster remains required even for these calls. ## Workflow and dependencies Read the existing roster, resolve LinkedIn profiles and synchronize the dataset before selecting reusable individual profiles. On a cache miss, combine the resolved LinkedIn payload with `build_person_dossier` evidence when `include_dataset_context` is enabled, then synthesize the profile. The shared gatherer scans current parsed sources for full-word, ordered name combinations unique within the existing roster, or exact email/LinkedIn matches. Combinations require two words and eight letters; exact full names are exempt from the length requirement but still checked for ambiguity. The threshold lives in `config/people/dossier.json`. No discovery or NER call is needed. Personal documents are included once (up to the existing 20,000-character limit); other matches remain distinct chunks, excluding passages already in full documents. The profile prompt resolves attribution and ignores uncertain or unrelated evidence. The roster and retrieval settings participate in profile freshness, so new name collisions invalidate generated profiles; manual profiles retain precedence. Biographical and founder-trait instructions always belong to the standard prompt. Apply the trait assessment only to explicitly identified active founders; keep other people factual. [Shared profile standards](../standards_and_architecture/SKILL.md#standard-person-profiles) own identifiers, filenames, manual precedence and compatibility between consumers. Direct calls never discover people. Run [persons_in_dataset](../persons_in_dataset/SKILL.md) first when the roster is missing; bulk refresh declares that dependency. ## Side effects and failure behavior LinkedIn resolution can fetch profiles and update stored JSON and registry state. Resolution and synchronization occur even before a manual or reusable profile is selected. Expected LinkedIn/Apify acquisition failures are logged; profiling continues with successful enrichment and available dataset evidence. Newly generated profiles with unresolved LinkedIn retrieval carry a Markdown INCOMPLETE notice. The notice does not change reuse rules or manual precedence. Unexpected errors and synchronization failures still raise. Generation settings affect freshness metadata, not filenames. A missing or invalid roster raises. An empty roster with no explicit names returns `[]`. With no dossier, mentions or LinkedIn payload, generation saves a profile with a no-information note. Individual generation failures are collected: successful files remain, but the API raises instead of returning a partial list. ## Usage The harness requires a person; the direct CLI also supports the complete roster. ```bash conda run -n sictic-env python -m skills.harness /person_profile "<DATASET>" "<NAME>" conda run -n sictic-env python -m skills.person_profile --dataset "<DATASET>" conda run -n sictic-env python -m skills.person_profile --dataset "<DATASET>" --persons "<NAME_1>, <NAME_2>" ``` The direct CLI retains `--person` as an alias for `--persons`. ## References - [Implementation and adapter](person_profile.py) - [Profile prompts and query](../../config/person_profile/) - [LinkedIn resolution contract](../standards_and_architecture/SKILL.md#linkedin-retrieval-and-persistence)