Screening Manager (title/abstract screening)
Goal: produce an auditable screening log that can be traced back to the protocol.
Inputs
Required:
- output/PROTOCOL.md
Optional candidate pools (choose one if available):
-
papers/papers_raw.jsonl
-
papers/papers_dedup.jsonl
-
papers/core_set.csv
Outputs
- papers/screening_log.csv
Output schema (recommended)
Columns (minimum viable):
-
paper_id
-
title
-
year
-
url
-
decision (include|exclude )
-
reason (short, protocol-grounded)
-
reason_codes (protocol clause IDs, e.g., E3 or I2+I4 )
-
reviewer (HUMAN|CODEX )
-
decided_at (ISO date/time)
-
notes (optional)
Workflow
Read output/PROTOCOL.md and extract:
-
inclusion criteria
-
exclusion criteria
-
time window
-
any mandatory outcomes/metrics
Choose a candidate list
-
If a papers/*.jsonl or papers/core_set.csv exists, use it as the row source.
-
Otherwise, ask the user for the candidate list format and load it into the workspace first.
Screen each candidate deterministically
-
Decide include only when the title/abstract clearly satisfies inclusion and does not trigger exclusion.
-
If information is insufficient, decide exclude and state the missing requirement explicitly in reason .
Write papers/screening_log.csv
-
One row per candidate.
-
Reasons must cite protocol clause IDs from output/PROTOCOL.md (e.g., reason_codes=E3 ).
-
Avoid generic reasons like “not relevant”; state the missing requirement explicitly.
Quick QA
- Check every row has decision
- reason .
- Spot-check that include rows satisfy the protocol.
Definition of Done
-
papers/screening_log.csv exists and covers all candidates.
-
Every row has a decision + protocol-grounded reason.
Troubleshooting
Issue: you do not have a candidate pool file
Fix:
- Import/export the candidate list into one of: papers/papers_raw.jsonl , papers/papers_dedup.jsonl , or papers/core_set.csv , then rerun screening.
Issue: too many borderline cases
Fix:
- Tighten output/PROTOCOL.md with more operational inclusion/exclusion rules (then re-screen for consistency).