Screening Manager
Transforms an approved protocol plus candidate pool into an auditable screening log.
Inputs
Required:
output/PROTOCOL.md
Candidate pool:
papers/papers_raw.jsonlpapers/papers_dedup.jsonl- or
papers/core_set.csv
Output
papers/screening_log.csv
Contract
Each row must include at least:
paper_idtitleyearurldecisionreasonreason_codesreviewerdecided_at
Script boundary
scripts/run.py should:
- parse protocol clauses
- choose the current candidate pool
- emit one deterministic row per candidate
It should not invent new protocol rules.
Acceptance
- output exists
- every candidate has one row
- every row has decision plus protocol-grounded reason code
Non-goals
- full-text extraction
- synthesis writing