back to projects

Sirene — real-time alerts

live · waitlist · Telegram bot · Pix payments

24/7 monitor that detects slot openings on a government portal within seconds and alerts subscribers on Telegram. Live, with a waitlist.

  • Python
  • asyncio
  • Playwright
  • SQLite
  • Telegram Bot API
  • Cloudflare
  • Mercado Pago

On a government portal where slots sell out within minutes, whoever gets there first wins. Sirene started as a monitor I built for myself and became a product: as soon as slots open, subscribers get the alert on Telegram. The service is live with a waitlist, and subscriptions open soon.

Architecture

  • Separate from the monitor: a standalone service reads the monitor’s state every 2 seconds and turns each change into an event (slots opened, slots closed, maintenance…). Not a line of the monitor changed, and the service makes no extra requests to the government website.
  • Nothing gets lost: each event is written to a SQLite outbox before delivery. If Telegram fails, delivery resumes later.
  • Pure, tested logic: deciding which events to emit doesn’t touch the network, the clock or the disk. There are 49 tests, plus an end-to-end drill with a test bot and channel.
  • Never confuses subscribers: monitor health problems go only to me. Subscribers never get “unreachable” disguised as “closed”.
  • No open ports: it runs on a free cloud VM. The public status page goes out through an outbound Cloudflare Tunnel, and the landing page is on Cloudflare Pages.

Product

  • Bot with button menus: plan selection, terms acceptance, email and Pix payment through Mercado Pago. Confirmation works by polling the payment status, with no webhook, precisely so the VM keeps zero open ports.
  • Channels: a free public channel and a private one for subscribers. The Pro plan adds critical alerts (Pushover) and a voice call (Twilio) to wake people up at 3 a.m. Payments and the Pro plan are ready and being tested before launch.
  • Operations: a daily automatic post on the free channel confirms monitoring is running, plus a live status page, visitor source tracking and a daily database backup with a tested restore.

// cv.pdf

Download resume

Before the download, tell me who you are, so I know who to follow up with.

Your data is never shared and can be deleted whenever you ask.