You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Add volunteer roles table with links to VOLUNTEER_ROLES.md and new issues
- Add admin_report.py and admin-report.yml to project structure
- Fix \"How It Works\" to reflect single daily scrape (not 7AM + 7PM)
- Add Paystack + Ko-fi payment links and sponsorship offer
- Clarify direct-apply-link behaviour in feature list and lifecycle
Copy file name to clipboardExpand all lines: README.md
+70-35Lines changed: 70 additions & 35 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@
3
3
> An open-source Python bot that automatically scrapes the internet for opportunities for Nigerian students — scholarships, fellowships, internships, bootcamps, and more. It updates a shared Google Spreadsheet and emails a **weekly digest** to subscribers every Sunday.
@@ -26,12 +26,12 @@ No app, no login, no fee. Fill the form once and you're on the list.
26
26
27
27
## What ScoutBot Does
28
28
29
-
- 🔍 **Scrapes 8+ live feeds daily** — Google News RSS (Nigeria + International), YouthHubAfrica, Reddit
29
+
- 🔍 **Scrapes 8+ live feeds daily** — Google News RSS (Nigeria + International), YouthHubAfrica
30
+
- 🔗 **Direct application links only** — every link is extracted from the article's "Apply Now" button; items with no findable apply link are dropped before entering the sheet
30
31
- 📊 **Writes to two separate tabs**: Nigeria 🇳🇬 and International 🌍 — never mixed
31
-
- 🤖 **AI quality scoring** — every new item scored 1–10 by Gemini; low-quality items dropped before the sheet
32
-
- 🧹 **Auto-cleans daily** — opportunities removed when closed, past deadline, or older than 23 days
32
+
- 🤖 **AI quality scoring** — every new item scored 1–10 by Gemini 2.0 Flash; items scoring below 5 are dropped
33
+
- 🧹 **Auto-cleans daily** — entries removed when closed, past deadline, or older than 23 days
33
34
- 📧 **One email per week** — Sunday digest with only opportunities added in the last 7 days
34
-
- 🔗 **Direct application links** — links go to the actual apply page, not a blog post
(drop known) (score 1–10) (write to Nigeria/International tab)
47
+
(drop < 5)
48
+
(add AI blurb)
49
49
```
50
50
51
51
**The AI does two things:**
52
52
1.**Scores** each opportunity 1–10 for relevance to Nigerian students — items below 5 are dropped silently
53
53
2.**Generates a 2-sentence blurb** that appears in the weekly email so subscribers instantly know if an opportunity is for them
54
54
55
-
**Why Gemini and not GPT-4 or Claude?**
55
+
**Why Gemini and not GPT-4 or Claude?**
56
56
Gemini 2.0 Flash is available on a free API tier with 1,500 requests/day — enough for ScoutBot's daily volume (typically 5–15 new items) with zero cost.
@@ -64,60 +64,66 @@ Gemini 2.0 Flash is available on a free API tier with 1,500 requests/day — eno
64
64
```
65
65
Day 0: Opportunity posted on the web
66
66
Day 0–3: Spider picks it up (MAX_POST_AGE_DAYS = 3)
67
-
Day 1–3: Written to Google Sheet with Date Added stamp
67
+
→ follows article to find direct "Apply Now" link
68
+
→ Gemini scores it 1–10
69
+
→ if score ≥ 5: written to Google Sheet
70
+
Day 7: Included in Sunday weekly email digest
68
71
Day 23: Hard-removed from sheet by cleanup.py (STALE_DAYS = 23)
69
72
```
70
73
71
-
Every entry in the sheet is guaranteed to be **less than 23 days old** and from a **post no older than 3 days** when it was scraped. Nothing lingers.
72
-
73
-
---
74
-
75
-
## Why ScoutBot Exists
76
-
77
-
Opportunities for Nigerian students are scattered across dozens of websites with no single reliable source. ScoutBot runs quietly in the background, finds new opportunities as they appear, logs them into a shared spreadsheet, and delivers them straight to people's inboxes — once a week, clean and fresh.
78
-
79
-
**This is a bot, not a web app.** No dashboard, no login page, no frontend — just an automated Python system that works independently of any platform.
80
-
81
74
---
82
75
83
76
## How It Works
84
77
85
78
```
86
-
Every day at 07:00 WAT (GitHub Actions):
87
-
1. scrapy crawl opportunities → scrapes 8 RSS feeds → scores with Gemini → writes to Nigeria / International tab
79
+
Every day at 07:00 WAT (GitHub Actions — scoutbot.yml):
1st of every month 07:30 WAT (GitHub Actions — admin-report.yml):
88
+
4. python admin_report.py → sends monthly stats report to project lead
93
89
```
94
90
95
91
---
96
92
93
+
## Why ScoutBot Exists
94
+
95
+
Opportunities for Nigerian students are scattered across dozens of websites with no single reliable source. ScoutBot runs quietly in the background, finds new opportunities as they appear, extracts direct application links, scores them with AI, and delivers them straight to people's inboxes — once a week, clean and fresh.
96
+
97
+
**This is a bot, not a web app.** No dashboard, no login page, no frontend — just an automated Python system that works independently of any platform.
├── admin_report.py ← Monthly stats email to project lead
109
114
├── welcome.py ← Welcome email for new subscribers
110
-
├── announce.py ← One-time announcement emails
111
115
├── run.py ← CLI entry point
112
116
├── requirements.txt
113
117
├── .env.example ← Copy to .env and fill in credentials
114
118
├── docs/
115
-
│ └── AI_IMPLEMENTATION.md ← Full Gemini AI pipeline documentation
119
+
│ ├── AI_IMPLEMENTATION.md ← Full Gemini AI pipeline documentation
120
+
│ └── VOLUNTEER_ROLES.md ← Step-by-step guide for all volunteer roles
116
121
├── .github/
117
122
│ └── workflows/
118
123
│ ├── scoutbot.yml ← Daily 07:00 WAT scrape
119
124
│ ├── digest.yml ← Sunday 10:00 WAT weekly email
120
-
│ ├── welcome.yml ← Monthly welcome email
125
+
│ ├── admin-report.yml ← Monthly 07:30 WAT stats report
126
+
│ ├── welcome.yml ← Monthly welcome email to new subscribers
121
127
│ └── pytest.yml ← CI tests on every push/PR
122
128
├── CHANGELOG.md ← Full project history
123
129
├── CONTRIBUTING.md
@@ -127,6 +133,29 @@ ScoutBot/
127
133
128
134
---
129
135
136
+
## 🤝 Volunteer — Help Us Grow ScoutBot
137
+
138
+
ScoutBot is maintained by a small founding team and open-source contributors. Several roles are open to volunteers — no application required to get started.
139
+
140
+
**[→ Full volunteer guide: docs/VOLUNTEER_ROLES.md](./docs/VOLUNTEER_ROLES.md)**
141
+
142
+
| Role | Time/week | Skills needed | How to start |
@@ -177,11 +208,14 @@ Once secrets are set, the bot runs on schedule with **no Replit, no VPS, no cron
177
208
178
209
## 💛 Support ScoutBot
179
210
180
-
ScoutBot is open source and free for every user. We are Nigerian students building this with zero budget.
211
+
ScoutBot is open source and free for every subscriber. We are Nigerian students building this with zero budget.
212
+
213
+
**[→ Support on Paystack (₦1,000)](https://paystack.com/pay/scoutbot)**
214
+
**[→ Support on Ko-fi (international)](https://ko-fi.com/scoutbot)**
181
215
182
-
**Fundraising goal:** ₦2,000,000 (~$1,500 USD) for Twitter/X advertising to reach 4,000 Nigerian students.
216
+
Organisations can sponsor a featured placement in the Sunday digest for **₦5,000/placement** — reaches 500+ students directly. Email [kamsirichard1960@gmail.com](mailto:kamsirichard1960@gmail.com?subject=ScoutBot%20Sponsorship) to enquire.
- 🤝 **Volunteer** — see the [volunteer guide](./docs/VOLUNTEER_ROLES.md) for non-coding roles
207
242
208
243
**Ready to code?** Start with issues labelled [`good first issue`](https://github.com/TechHub-Extensions/ScoutBot/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22).
0 commit comments