ARR Report Generator

ARR Report Generator

How to use the package

GitHub โ†—
Local-only dashboard generator

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 venue

Use 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"
๐Ÿ“„ reports/review_report.html

Commitment report

ACL / EMNLP

Use 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"
๐Ÿ“„ reports/commitment_report.html

PC dashboard

Review

Fetches 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"
๐Ÿ“„ reports/pc_report.html

PC commitment

Commitment

PC-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"
๐Ÿ“„ reports/pc_commitment_report.html

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.
โšก UnmetEmergency 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