Generate OpenReview dashboards without running a server
This package fetches venue data from OpenReview and writes fully self-contained HTML dashboards for review-phase and commitment-phase workflows. You open the output file directly in your browser โ no backend, no server, your credentials never leave your machine.
pip install -r requirements.txt
python generate_review_report.py \
--username "your@email.com" \
--password "yourpassword" \
--venue-id "aclweb.org/ACL/ARR/2026/January" \
--me "~Your_Name1"
Step 1
Install
Clone the repository and install Python dependencies. Python 3.9+ is required.
git clone https://github.com/mtreviso/arr-report-generator
cd arr-report-generator
pip install -r requirements.txt
Step 2
Authenticate
Pass credentials via flags, or set environment variables once so you never have to repeat them.
export OPENREVIEW_USERNAME='your@email.com'
export OPENREVIEW_PASSWORD='yourpassword'
export OPENREVIEW_ID='~Your_Name1'
Step 3
Choose the right script
Both entry points share the same credential flags, but target different phases and roles.
Review report
ARR venueUse during the ARR review phase. Default role is SAC; pass --role ac or --role pc for other scopes.
python generate_review_report.py \
--venue-id "aclweb.org/ACL/ARR/2026/January" \
--me "~Your_Name1"
Commitment report
ACL / EMNLPUse for the commitment phase. Use --role ac for an individual AC view.
python generate_review_report.py \
--venue-id "aclweb.org/ACL/2026/Conference" \
--me "~Your_Name1" \
--phase "commitment" \
--role "ac"
PC dashboard
ReviewFetches all papers across all SAC batches. Intended for PCs. Can take several minutes on large venues.
python generate_pc_report.py \
--venue-id "aclweb.org/ACL/ARR/2026/January" \
--me "~Your_Name1"
PC commitment
CommitmentPC-level commitment dashboard with decision breakdowns, award analytics, and AC progress. No SAC tab (commitment has ACs only).
python generate_pc_report.py \
--venue-id "aclweb.org/ACL/2026/Conference" \
--me "~Your_Name1" \
--phase "commitment" \
--linked-venue-id \
"aclweb.org/ACL/ARR/2026/January"
Common options
| Flag | Scripts | Meaning |
|---|---|---|
| --username | all | OpenReview username (or set via OPENREVIEW_USERNAME env var). |
| --password | all | OpenReview username (or set via OPENREVIEW_PASSWORD env var). |
| --venue-id | all | Full venue group ID, e.g. aclweb.org/ACL/ARR/2026/January. |
| --me | all | Your OpenReview tilde ID, e.g. ~Jane_Doe1 (or set via OPENREVIEW_ID). |
| --role | review | sac (default) / ac / pc โ scope of papers to fetch. |
| --phase | all | review (default) / commitment โ which phase to generate a report for. |
| --linked-venue-id | commitment | ARR venue ID that commitment papers link back to (e.g. aclweb.org/ACL/ARR/2026/January). When provided, linked ARR reviews are bulk-fetched โ significantly faster. |
| --comments-level | all | none / basic / full (default). Higher detail means slower runs and larger files. |
| --output-dir | all | Output directory for generated report files. Default: ./reports. |
| --append-date | all | Append today's date (YYYY-MM-DD) to the output filename to avoid overwriting previous reports. |
| --cache-dir | all | Custom directory for cache files. Auto-generated under .dev_cache/ if omitted (separated by report type, phase, venue). |
| --save-cache | all | Store OpenReview data to disk. Mutually exclusive with --use-cache. |
| --use-cache | all | Reload instantly on the next run. Mutually exclusive with --save-cache. |
| --impersonate [GROUP_ID] | review | Lets PCs inspect another SAC's view. Requires PC-level permission on the venue. Not available in generate_pc_report.py. |
Troubleshooting
No papers found
Double-check the venue ID, your tilde ID, and the role flag. In non-PC review mode the script only includes papers in your SAC batch. For commitment, use --role ac.
The run is slow
PC mode and full comment threading can be slow on large venues. Use --comments-level basic or cache the data with --save-cache. For commitment, --linked-venue-id significantly speeds up linked data fetching.
I want to edit the UI
All layout files live in templates/ as plain Jinja2 HTML. Add columns, change styling, or restructure tabs without touching any Python.
AC Progress table is empty
This can happen if the AC group data wasn't loaded. Ensure you're running with up-to-date cache (--save-cache again) or a fresh API call.
Low-confidence threshold
The default is 2. Edit the class variable near the top of arr_report_generator.py:
LOW_CONF_THRESHOLD = 2 # โ change this
AC Progress columns
| Late Rev. | Completed reviews < expected โ reviews still missing. |
| โก Emerg. | Papers where an emergency review has been declared. |
| โก Unmet | Emergency declared but no emergency reviewer assigned yet. |
For developers
Tools for iterating on templates and inspecting other users' views.
Fast local iteration (cache)
When tweaking templates, fetch once and save a cache. Subsequent runs skip all OpenReview API calls and complete in seconds, not minutes.
# Fetch + save (do once)
python generate_review_report.py ... --save-cache
# Iterate quickly from cache
python generate_review_report.py ... --use-cache
# Separate caches per venue or SAC
python generate_review_report.py ... \
--use-cache --cache-dir .cache_acl_feb
NOTE: If you omit --cache-dir, the tool creates an automatic cache path under
.dev_cache/ that is separated by report type, phase, venue, and role when relevant,
so review vs commitment and review vs PC runs do not collide.
NOTE 2: --save-cache and --use-cache are mutually exclusive.
Impersonation
Requires PC-level permission. Lets you view the report exactly as a target SAC would see it. Your own credentials authenticate; data is fetched under the target user's identity.
# Default: use the venue's Program Chairs group
python generate_review_report.py \
--me "~Target_SAC_Name1" \
--impersonate
# Or specify a group explicitly
python generate_review_report.py \
--me "~Target_SAC_Name1" \
--impersonate "aclweb.org/ACL/ARR/2026/January/Program_Chairs"
NOTE: Not available in generate_pc_report.py, which already fetches all papers anyway.
Based on the ARR Tool by Yiming Cui ยท Source on Github ยท MIT License