Overview
Four main workflows handle the automation:- Contribution Approved - Processes approved contribution issues
- Update READMEs - Regenerates README files from listings.json
- Validate Listings - Validates listings.json schema and data integrity
- Lint - Validates Python code quality
Contribution Approved Workflow
File Location
.github/workflows/contribution_approved.yml
Trigger
This workflow runs when anapproved label is added to any issue.
Process Flow
Update listings.json
The CLI tool:
- Parses the issue form fields
- Validates the data
- Adds or updates the entry in
listings.json - Generates a commit message
Commit changes
Commits the updated
listings.json with contributor attribution:- Author: Contributor’s GitHub username
- Email: Contributor’s GitHub email
- Message: Describes what was added/changed
Error Handling
If the workflow fails:- The action comments on the issue with error details
- The issue remains open for maintainer review
- Error messages indicate what went wrong (invalid data, duplicate, etc.)
GitHub Outputs
The CLI sets GitHub Action outputs:commit_message: Suggested commit messagecommit_email: Contributor email for git attributioncommit_username: Contributor username for git attributionerror_message: Error details if processing failed
Update READMEs Workflow
File Location
.github/workflows/update_readmes.yml
Triggers
This workflow runs when:-
listings.jsonis modified -
Manual workflow dispatch
- Can be triggered manually from GitHub Actions tab
- Useful for regenerating READMEs after template changes
Process Flow
Categorize internships
Groups internships by category:
- Software Engineering
- Product Management
- Data Science, AI & Machine Learning
- Quantitative Finance
- Hardware Engineering
- Other
Generate README tables
Runs
main.py readme update to create markdown tables with:- Company name (with 🔥 for FAANG+)
- Role (with 🎓 for advanced degrees)
- Locations
- Apply button
- Age (how long ago posted)
README Format
Generated README tables follow this structure:Validate Listings Workflow
File Location
.github/workflows/validate_listings.yml
Triggers
This workflow runs when:-
listings.jsonis modified on push -
Pull requests modifying
listings.json
Process Flow
What Gets Validated
- Schema compliance: All required fields present with correct types
- Data integrity: No duplicate URLs or IDs
- Timestamp validity: Dates not in the future
- Category validity: All categories match defined constants
- URL format: Valid URLs for job postings
Lint Workflow
File Location
.github/workflows/lint.yml
Trigger
Runs on changes to Python code:Process Flow
What Gets Checked
Ruff checks:- Code style (PEP 8 compliance)
- Import sorting
- Unused imports and variables
- Line length
- Code complexity
- Type annotations
- Type correctness
- Missing types
- Type inference issues
CLI Integration
All workflows use the CLI tool (main.py) for processing:
Contribution Processing
- Reads issue form data from event JSON
- Validates submission
- Updates
listings.json - Sets GitHub Action outputs
README Update
- Reads
listings.json - Categorizes and formats data
- Writes updated README files
Workflow Secrets
No secrets are required for these workflows. They use:GITHUB_TOKEN: Automatically provided by GitHub Actions- Event payloads: Standard GitHub event data
Monitoring Workflows
View workflow runs:- Go to the repository’s Actions tab
- Select a workflow from the sidebar
- View run history, logs, and status
Common Issues
Contribution Approved fails:- Invalid issue form data
- Duplicate internship URL
- Missing required fields
- Schema validation errors
- Malformed
listings.json - Missing required fields in entries
- Git conflicts
- Code style violations
- Type errors
- Import errors
All workflow failures are visible in the Actions tab and will prevent the merge/deployment until resolved.