VoucherBot v2.0.0
v2.0.0 — VoucherBot Notifications: No Self-Hosting Required 🎉
This release is all about one thing: you no longer need to set up or host anything yourself.
We heard your requests — so VoucherBot can now be added directly to your Discord or Telegram, and it will alert you the moment a certification voucher is found. No cloud setup, no .env files, no deployment, no code.
Head over to voucherbot-preview.pages.dev/#notifications to learn all about it and get set up in minutes.
✨ Highlights
🚀 New: Bot Notifications — No Setup Required
- VoucherBot now POSTs voucher alerts to a bot server (Discord / Telegram) the moment a legitimate voucher is detected — at the same time it sends the email alert (for email, self hosting is required).
- No self-hosting needed: instead of forking the repo, filling in five API keys, and deploying to Render, you just add the bot to your server and get notified.
- The webhook is authenticated with a shared secret (
Authorization: Bearer ...) configured via the newNOTIFICATION_BOT_SERVER_URLandWEBHOOK_SECRETsettings. - Best-effort by design: a bot webhook failure never fails the ingestion pipeline, never blocks the email outbox, and never affects the database transaction — the webhook fires only after the outbox is committed.
- Notifications are sent for new offer posts and possible matches (never for auto-merges or routine updates), matching the existing email behavior.
- Config options documented in
.env.exampleand the Configuration reference.
🤖 AI Model Change & New 50/50 Split
- Removed
llama-3.3-70b-versatilefrom the Groq rotation. - Primary extraction is now split evenly 50/50 across the two gpt-oss models:
openai/gpt-oss-20bandopenai/gpt-oss-120b. qwen/qwen3.6-27bjoins as a dedicated reasoning tier: any gpt-oss result with confidence below 0.6 is re-analyzed by qwen before the pipeline sees it — catching borderline posts that a single pass might misjudge. If qwen is unavailable or fails, the original result is kept, so confidence never drops.- Qwen runs a tuned profile (2048-token completion budget, hidden reasoning, forced JSON output, temp 0.6) that also resolves the
failed_generationvalidation error we hit with the previous 1024-token budget. - DB safety preserved: qwen escalation resolves before the pipeline commits, so no post is ever written with an un-escalated answer.
What changed since v1.1.1
Pull requests and commits landing in this release:
- feat: send voucher alerts to bot webhook alongside email
- AI model update — 50/50 gpt-oss split + qwen reasoning escalation
- mypy test updates
- README update — announce bot notifications
Testing
- Full suite: 371 passed, 15 skipped.
- All CI quality gates pass:
ruff format --check,ruff check,mypy voucherbot tests, and the fullpytestsuite. - New tests:
tests/test_bot_notification.py(payload shape, auth, skip-when-unconfigured, HTTP failure) and analyzer escalation tests (routes low confidence to qwen, keeps high-confidence results, qwen unavailable / fails). - All new AI calls are mocked — no live API traffic in tests.
Full Changelog: v1.1.1...v2.0.0