IOH Student Survey — Multi-machine Fill

5913 Under-Graduation responses, split across as many machines as you have. Each machine takes up to 100 students and no two machines ever claim the same row.
The one command every teammate runs
After the one-time setup is done, this is literally all a worker machine needs:
.\filler.exe -type student -count 100 -tabs 5 -headless
Rows total
5913
Per machine
100
Parallel Chromes / machine
5
Machines needed
~60

Download these files

filler.exe needed on every machine
17 MB · worker, zero dependencies
↓
monitor.exe one place that watches
13 MB · dashboard at localhost:8080
↓
upload.exe
14 MB · one-time Mongo seeder (one machine only)
↓
student_needed.csv
2.2 MB · needed only by upload.exe
↓
student_answer_pool.json
31 KB · needed only by upload.exe
↓
Worker machines only need filler.exe. Nothing else. Put it anywhere and run it.

One-time setup — one person, one machine

1

Allow MongoDB access

Atlas → Security → Network Access → Add IP → Allow access from anywhere (0.0.0.0/0). Already done? Skip.

2

Seed the 5913 rows into Mongo

Open PowerShell in the folder that has upload.exe, student_needed.csv, and student_answer_pool.json:

.\upload.exe -type student

Expected: inserted 5913 student docs inserted 6 answer-pool questions done

This drops and rebuilds the ioh.student collection. Do it only once.

3

Open the live dashboard (keep this terminal open)

.\monitor.exe -coll student

Browser opens at http://localhost:8080. You'll see counts update as each worker machine joins and submits.

Every worker machine — the only thing they do

1

Install Chrome

Any recent Chrome build. That is literally the only prerequisite.

2

Download filler.exe (from the top of this page)

Save it anywhere — Desktop is fine. No companion files needed.

3

Run it — 100 students per machine, headless

.\filler.exe -type student -count 100 -tabs 5 -headless

Takes roughly 20 min at 5 parallel tabs. The worker claims 100 rows atomically from Mongo — no two machines will ever grab the same student.

Prefer visible Chrome so you can watch? Drop -headless. Running on a laptop? Drop -tabs to 3.

4

Done — close the terminal. Move to the next machine.

If you want that machine to do another batch of 100, just run the same command again. It picks up where the queue left off.

Variants

You want to…Command
Dry-run one row to see Chrome drive the survey .\filler.exe -type student -count 1 -dry
Submit just 10 to spot-check .\filler.exe -type student -count 10 -tabs 2 -headless
Human pacing: 15–20 min per response .\filler.exe -type student -count 100 -tabs 5 -headless -pace-min 15m -pace-max 20m
Take whatever's left (no 100-cap) .\filler.exe -type student -tabs 10 -headless

If something fails

Reason in the monitorWhat to do
stuck on page N or page N not advancingClick Retry on the row — a different random answer may land cleanly.
timeout (Xm exceeded)Retry. Chrome or Zoho was slow.
Submit rejected: N field(s) still flaggedRare consent-page race. Retry.
JS inject failed - page likely crashedTransient Chrome crash. Retry.
A machine was unplugged mid-runClick Reclaim stale (>15m) in the monitor — the rows go back to pending so another machine can pick them up.