Context
After every scrape, ScoutBot has all the data it needs to answer useful questions: how many new opportunities were found? How many were removed as expired? Which sources produced the most results? Currently none of this is reported — it just runs silently.
Task
Add a short admin summary email sent to kamsirichard1960@gmail.com after each full scrape cycle.
Contents of the summary
- Total new opportunities added (Nigeria + International breakdown)
- Total entries removed (expired/closed)
- Top 3 sources by new entries this run
- Total subscribers (pulled from the Subscribers tab)
- Any hard bounces that occurred this run
Implementation notes
- Add a
notify_admin() function in notify.py or a new admin_report.py
- Call it from
run.py at the end of full_pipeline()
- Keep it simple: plain text or minimal HTML, no batching needed (1 recipient)
- Subject:
ScoutBot Admin — Scrape Report [date]
Files to touch
notify.py or new admin_report.py
run.py
Context
After every scrape, ScoutBot has all the data it needs to answer useful questions: how many new opportunities were found? How many were removed as expired? Which sources produced the most results? Currently none of this is reported — it just runs silently.
Task
Add a short admin summary email sent to
kamsirichard1960@gmail.comafter each full scrape cycle.Contents of the summary
Implementation notes
notify_admin()function innotify.pyor a newadmin_report.pyrun.pyat the end offull_pipeline()ScoutBot Admin — Scrape Report [date]Files to touch
notify.pyor newadmin_report.pyrun.py