Skip to content

VoucherBot v2.0.0

Choose a tag to compare

@Devathmaj Devathmaj released this 16 Aug 07:01
· 8 commits to main since this release

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 new NOTIFICATION_BOT_SERVER_URL and WEBHOOK_SECRET settings.
  • 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.example and the Configuration reference.

🤖 AI Model Change & New 50/50 Split

  • Removed llama-3.3-70b-versatile from the Groq rotation.
  • Primary extraction is now split evenly 50/50 across the two gpt-oss models: openai/gpt-oss-20b and openai/gpt-oss-120b.
  • qwen/qwen3.6-27b joins 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_generation validation 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:


Testing

  • Full suite: 371 passed, 15 skipped.
  • All CI quality gates pass: ruff format --check, ruff check, mypy voucherbot tests, and the full pytest suite.
  • 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