Files
AtAnyRate/BACKLOG.md
T
ilia b2e1c25b37
CI / skip-ci-check (push) Successful in 10s
CI / secret-scan (push) Successful in 8s
CI / python-ci (push) Successful in 39s
Mark Gitea push and Beszel done in handoff (#2)
2026-07-12 10:26:17 -05:00

3.7 KiB

Backlog

Epic: Automated Airbnb Event Pricing

Story 1: Event Data Ingestion

As a host, I want to fetch upcoming Toronto events from public APIs so I can identify dates with high accommodation demand.

Task Status Notes
1.1 Integrate Ticketmaster Discovery API Done src/providers/ticketmaster.py, major-venue filter
1.2 Integrate SeatGeek API Done src/providers/seatgeek.py, score threshold
1.3 Normalize events to common model Done NormalizedEvent in src/models.py
1.4 Deduplicate events across providers Done src/dedup.py — date + fuzzy venue + fuzzy name

Story 2: Telegram Notification System

As a host, I want to receive a Telegram message containing the flagged dates so I can review findings before automated pricing kicks in.

Task Status Notes
2.1 Build Telegram bot alerter Done src/notifications/telegram.py (httpx, Bot API)
2.2 Format message with grouped dates Done MarkdownV2, grouped by date

Story 3: Browser Automation (Playwright)

As a host, I want a script to log into Airbnb and change prices on specific dates so I don't have to do it manually.

Task Status Notes
3.1 Handle authentication & session state Done src/airbnb/auth.py, scripts/airbnb_login.py
3.2 Automate calendar UI updates Done src/airbnb/calendar.py (selectors need live verification)
3.3 Add retry/fallback on UI failure Done Retries in update_price; runner skips dates on failure

Story 4: Scoring & Filtering

As a host, I want events scored by likely pricing impact so I only adjust prices for meaningful demand drivers.

Task Status Notes
4.1 Define venue size/type scoring rules Done src/scoring/impact.py (VENUE_CAPACITY)
4.2 Filter by date window (lookahead) Done filter_by_window in src/main.py, lookahead_days in config

Story 5: Orchestration & Deployment

As a developer, I want to orchestrate the pipeline and deploy via Docker on cron.

Task Status Notes
5.1 Main CLI runner with modes Done src/main.py--dry-run, --alerts-only, full
5.2 Dockerfile for Playwright Done Dockerfile (Chromium + deps)
5.3 Cron configuration guide Done See README.md
5.4 Deploy on automationlab Done /opt/atanyrate, ansible make deploy-atanyrate
5.5 Secrets in Ansible vault Done vault_atanyrate_* keys

Outstanding (continue here)

Priority Task Status Notes
P0 Refresh Airbnb state.json Blocked (manual) April session on server; price panel timed out — re-run airbnb_login.py on Mac
P1 Verify calendar price update E2E In progress Calendar loads; PriceInput-basePrice not appearing — UI or stale session
P2 Optional stealth browser Done (code) AIRBNB_STEALTH=1 + invisible_playwright; try if Airbnb blocks Chromium
P2 Push repo changes to Gitea Done dfed038 on Gitea / guest
P3 SeatGeek client ID on server Done Both providers 200 OK
P3 Beszel agent on automationlab Done Beszel automationlab @ .45
P3 Dedicated Docker LXC Deferred Only if isolation/disk allows
P3 Tune MIN_ALERT_SCORE / scoring Todo Observe real Telegram alerts first

Future ideas (not scheduled)

  • Eventbrite integration
  • PredictHQ integration (paid, but powerful)
  • Web scraping fallback for niche events
  • Historical price tracking (SQLite)
  • Multi-listing support
  • Smarter pricing model (base + multiplier per event score)
  • Slack/Discord notification channel
  • Dashboard/web UI