| name | school-research-ops |
| description | Use when operating the school research queue for kaoyan program_variant work: submit school batches, inspect queue status, interpret gap reasons, and decide whether to resume, lower rpm, or close out. |
School Research Ops
Use this skill for repo-local operations around school_research_api.
What This Skill Covers
- Submit CSV/JSONL batches into a school research queue
- Read queue status and explain
gap_reason distributions
- Decide whether to
resume, lower rpm, lower max_workers, or stop and close out
- Read school-level JSON/Markdown reports after a queue run
Commands
Submit a batch:
python3 scripts/school_research_api.py submit \
--queue-id <queue_id> \
--input-file <schools.csv|schools.jsonl>
Run a queue:
python3 scripts/school_research_api.py run \
--queue-id <queue_id> \
--rpm <rpm> \
--max-workers <workers> \
--llm-transport gate|direct|off \
--resume
Inspect status:
python3 scripts/school_research_api.py status --queue-id <queue_id>
Write batch report:
python3 scripts/school_research_api.py report --queue-id <queue_id>
Cancel a queue:
python3 scripts/school_research_api.py cancel --queue-id <queue_id>
Interpreting Gap Reasons
rate_limited: Prefer lower rpm or stop and resume later.
login_gated_pagination: Rerun only when candidate growth still matters.
query_split_exhausted: Prefer report-first closeout or explicit review.
resolver_fetch_failure: Mark for review before more reruns.
Operating Rules
- Default to
--resume once a queue has started.
- Do not promote or export from this workflow.
- Treat
rpm as the hard upstream request budget; raising workers does not bypass it.
- If
rate_limited keeps growing while login_gated stops falling, stop and report instead of brute-force rerunning.