This repository automates scholarship reminder pushes (lunch, evening, weekend) via GitHub Actions and optional Telegram/Slack/Discord notifications. It also supports scholarship search (Rust + web scraping), application scheduling (Go), and progress tracking (Go).
| Workflow | Local time | UTC cron | Frequency |
|---|---|---|---|
| Reminder (Lunch) | 12:10 | 10 4 * * 1-5 |
Weekdays |
| Reminder (Evening) | 21:10 | 10 13 * * 1-5 |
Weekdays |
| Reminder (Weekend) | 10:00 | 0 2 * * 6,0 |
Weekends |
| Search | 21:10 | 10 13 * * 3 |
Wednesday |
| Schedule | 12:10 | 10 4 * * 1 |
Monday |
| Track | 21:10 | 10 13 * * 5 |
Friday |
The workflow always runs on the default branch with the latest commit, as required by GitHub Actions scheduled events.
Configure secrets in Settings → Secrets and variables → Actions.
TELEGRAM_BOT_TOKENTELEGRAM_CHAT_ID
SLACK_WEBHOOK_URL
DISCORD_WEBHOOK_URL
The workflow can create daily issues to trigger GitHub mobile notifications. This is controlled by CREATE_ISSUE in the workflow.
Daily reminders at lunch (12:10), evening (21:10), and weekend (10:00) Asia/Taipei time.
Weekly scholarship search via web scraping (Rust). Runs every Wednesday 21:10 Asia/Taipei.
- Searches university websites, government sites, and third-party databases
- Filters by eligibility criteria with advanced profile matching
- Multi-dimensional sorting by ROI, urgency, and source reliability
- Updates
tracking/leads.json - Generates multi-format reports (HTML, Markdown, TXT) in
scripts/productions/YYYY-MM-DD_HH-MM/ - Automatically commits report folders to repository
- Sends summary notifications via Telegram/Slack/Discord
Weekly application scheduling suggestions (Go). Runs every Monday 12:10 Asia/Taipei.
- Analyzes upcoming deadlines
- Suggests applications to prioritize
- Reads from
tracking/applications.jsonandtracking/leads.json
Weekly progress tracking report (Go). Runs every Friday 21:10 Asia/Taipei.
- Calculates statistics (total, in progress, completed, upcoming deadlines)
- Generates progress report
- Tracks D-7, D-14, D-21 deadlines
.github/workflows/remind.yml: reminder workflow (Python).github/workflows/search.yml: search workflow (Rust).github/workflows/schedule.yml: schedule workflow (Go).github/workflows/track.yml: track workflow (Go)scripts/remind.py: Python reminder scriptscripts/search_scholarships/: Rust scholarship search projectscripts/schedule_applications/: Go scheduling applicationscripts/track_progress/: Go progress tracker
tasks/daily_2026-01-18_to_02-10.yml: daily plantasks/phases_2026-02-11_to_06-01.yml: phase-based cadence through 2026-06-01tasks/deadlines.yml: upcoming deadlines for D-21 style reminders
tracking/applications.json: application tracking (JSON)tracking/leads.json: potential scholarships list (JSON)tracking/criteria.yml: search eligibility criteria (YAML)tracking/sources.yml: manually maintained scraping targets (YAML)
scripts/productions/YYYY-MM-DD_HH-MM/: Date-based report folders containing:report.html: HTML format with styled tables and responsive designreport.md: Markdown format with tables and detailed informationreport.txt: Plain text format for easy reading
- JSON: Used for
applications.json,leads.json(efficient for program processing) - YAML: Used for
criteria.yml,sources.yml,tasks/*.yml(easy manual editing) - Dual format support: Go/Rust programs can read/write both formats
The search workflow automatically generates comprehensive reports in three formats:
- HTML: Styled reports with tables, color-coded urgency indicators, and responsive design
- Markdown: Formatted reports with tables and detailed scholarship information
- TXT: Plain text reports for easy reading and processing
Reports are saved in date-based folders (scripts/productions/YYYY-MM-DD_HH-MM/) and automatically committed to the repository. Each report includes:
- Complete list of qualified scholarships (no truncation)
- Multi-dimensional sorting scores (Match + ROI + Urgency + Source Reliability)
- Detailed eligibility information and match reasons
- Deadline urgency indicators (D-7, D-14, D-21)
- Filtered out scholarships summary
- Error reports for failed scraping attempts
- Daily changes: Edit the YAML files under
tasks/and push. - Weekly: Update
tasks/deadlines.ymlwith new confirmed deadlines. - Scholarship search: Update
tracking/sources.ymlto add new scraping targets. - Application tracking: Update
tracking/applications.jsonmanually or via scripts. - Search criteria: Update
tracking/criteria.ymlto modify eligibility requirements and profile information.