Automate your Area Chair (AC) workflow for OpenReview conferences. This tool retrieves all papers assigned to you as an AC, extracts review scores and discussion activity, and organizes everything in a Google Sheet for easy tracking and management.
- Automatic Paper Retrieval: Fetches all papers assigned to you as an Area Chair
- Review Tracking: Extracts review scores (initial and final ratings)
- Discussion Monitoring: Counts rebuttals, comments, and AC letters
- Google Sheets Integration: Writes all data to a structured spreadsheet
- Multi-Conference Support: Works with ICLR, NeurIPS, ICCV, and ICML
- Incremental Updates: Can update existing sheets without clearing previous data
- ICLR 2026
- NeurIPS 2025
- ICCV 2025
- ICML 2025
Additional conferences can be easily added by extending the CONFERENCE_INFO dictionary (see Adding New Conferences).
- Python 3.11 or higher
- OpenReview account with Area Chair role
- Google Cloud project with Sheets API enabled
- Google service account credentials
-
Clone the repository:
git clone https://github.com/coallaoh/OpenReviewAC.git cd OpenReviewAC -
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
Create a .env file in the project root (use .env.example as a template):
cp .env.example .envEdit .env and add your credentials:
OPENREVIEW_USERNAME=your_email@example.com
OPENREVIEW_PASSWORD=your_password
GSHEET_CREDENTIALS_PATH=your-service-account-key.json
Note:
- The script automatically loads these values from the
.envfile usingpython-dotenv - Keep your
.envfile secure and never commit it to version control - The
.envfile is already in.gitignoreto prevent accidental commits
To write data to Google Sheets, you need a service account:
-
Create a Google Cloud Project:
- Go to Google Cloud Console
- Create a new project or select an existing one
-
Enable the Google Sheets API:
- Navigate to "APIs & Services" → "Library"
- Search for "Google Sheets API"
- Click "Enable"
-
Create a Service Account:
- Go to "APIs & Services" → "Credentials"
- Click "Create Credentials" → "Service Account"
- Fill in the service account details and create
- Click on the created service account
- Go to the "Keys" tab
- Click "Add Key" → "Create new key" → "JSON"
- Download the JSON key file
-
Save the credentials:
- Move the downloaded JSON file to the project directory
- Rename it to something memorable (e.g.,
gsheet-credentials.json) - Add the filename to your
.envfile asGSHEET_CREDENTIALS_PATH
-
Share your Google Sheet:
- Open the JSON credentials file
- Find the
client_emailfield (looks likexxx@xxx.iam.gserviceaccount.com) - Create a new Google Sheet or open an existing one
- Click "Share" and add the service account email as an editor
Edit config.py to customize your settings:
# Choose your conference
CONFERENCE_NAME = "ICLR2026" # Options: "ICLR2026", "NeurIPS2025", "ICCV2025", "ICML2025"
# Name of your Google Sheet
GSHEET_TITLE = f"{CONFERENCE_NAME} AC DB"
# Worksheet name (tab)
GSHEET_SHEET = "Sheet1"
# Set to True to clear the sheet and start fresh, False to update existing data
INITIALIZE_SHEET = FalseImportant: The GSHEET_CREDENTIALS_PATH is now configured in your .env file (see step 1).
Once configured, simply run:
python main.pyThe script will:
- Connect to OpenReview using your credentials
- Retrieve all papers assigned to you as an Area Chair
- Extract review scores, comments, rebuttals, and other activity
- Write/update the data in your Google Sheet
The Google Sheet will contain the following columns for each paper:
- paper_title: Title of the submission
- paper_number: OpenReview paper number
- paper_url: Direct link to the paper on OpenReview
- num_reviewers: Number of assigned reviewers
- avg_score: Average initial review score
- reviewer1_score through reviewer5_score: Individual reviewer scores
- avg_final_score: Average final review score (if applicable)
- reviewer1_final_score through reviewer5_final_score: Final scores
- review_count: Number of official reviews
- rebuttal_count: Number of author rebuttals
- discussion_comment_count: Number of reviewer-author discussion comments
- other_comment_count: Number of other comments
- ac_letter_author_count: Number of AC letters from authors
- ac_letter_ac_count: Number of AC letters from ACs
- withdrawn: Whether the paper has been withdrawn
To add support for a new conference:
- Add an entry to the
CONFERENCE_INFOdictionary inconfig.py:
"YourConf2026": dict(
# Required: Conference ID from OpenReview
CONFERENCE_ID = 'yourconf.org/2026/Conference',
# Required: Function to extract paper number
PAPER_NUMBER_EXTRACTOR = lambda paper: paper.number,
# Optional: Function to extract rating from review
RATING_EXTRACTOR = lambda review: (
int(review.content["rating"]['value'])
if "rating" in review.content and "value" in review.content["rating"]
else None
),
# Required: Dictionary of note type extractors
NOTE_EXTRACTORS = {
'review': lambda note: any(
invitation.endswith('Official_Review') for invitation in note.invitations
),
'rebuttal': lambda note: any(
invitation.endswith('Rebuttal') for invitation in note.invitations
),
# Add more note types as needed
}
)-
Update
CONFERENCE_NAMEto match your new conference key -
Test thoroughly with a small number of papers first
- Verify that
CONFERENCE_NAMEmatches the conference where you're an AC - Check that you're logged in with the correct OpenReview account
- Ensure your AC assignment is active in OpenReview
- Verify that the service account email has editor access to the Google Sheet
- Check that the service account JSON file path is correct
- Ensure the Google Sheets API is enabled in your Google Cloud project
- Make sure you've activated the virtual environment
- Run
pip install -r requirements.txtagain
- Check the sheet name in
GSHEET_TITLEmatches exactly - Verify the worksheet tab name in
GSHEET_SHEETis correct - Look at the console output for error messages
Contributions are welcome! We especially appreciate:
- Support for new conferences
- Bug fixes and improvements
- Documentation enhancements
- Feature requests and ideas
Please see CONTRIBUTING.md for detailed guidelines on how to contribute. For major changes, please open an issue first to discuss what you would like to change.
This project is licensed under the MIT License - see the LICENSE file for details.
- Built using the OpenReview Python API
- Google Sheets integration via gsheet-manager
If you find this tool helpful, please consider:
- ⭐ Starring the repository
- 🐛 Reporting bugs via GitHub issues
- 💡 Suggesting new features
- 🤝 Contributing code or documentation
If you use this tool in your research or workflow, please cite:
@software{openreview_ac_workflow,
author = {Oh, Seong Joon},
title = {OpenReview AC Workflow Automation},
year = {2025},
url = {https://github.com/coallaoh/OpenReviewAC}
}For questions or issues, please open an issue on GitHub.