# Founder-history screening code

The [classifier](classify.py) contains the exact sentence splitting, six cue predicates, role/work predicate, generic-product exclusion and deduplication used for the 1,586-row screen. It recomputes each candidate label and rule ID from descriptions, checks the saved description hashes, and compares every row against the [public ledger](https://mudpie.ai/research/yc-founder-history-screen-2026-09-18.json).

Run with the archived roster and downloaded ledger:

```sh
python3 classify.py --roster yc-company-rosters.json --ledger yc-founder-history-screen-2026-09-18.json
```

Expected result: 1,586 rows, 114 candidate rows and 1,472 no-cue rows, with every recomputed label and rule ID matching. The required original input SHA-256 is `e18917eb02e8338ba579c7cf2d974d68a97e41781a0d5f0f1f0a523bbf2fb406`.

The original full descriptions are retained in the research archive and are not redistributed here. **The compact public ledger alone cannot independently reclassify the descriptions.** Reproduction of this exact snapshot requires that archived input. A fresh directory scrape can differ. The code is published so the predicates and procedure can be inspected; passing this screen does not verify employment or founder quality.

The separate model-assisted review selected 50 illustrative cases; it is not a random sample. No cue means unknown, not no prior experience.
