AtAnyRate/BACKLOG.md
ilia dfed03897d
All checks were successful
CI / skip-ci-check (push) Successful in 4s
CI / secret-scan (push) Successful in 3s
CI / python-ci (push) Successful in 32s
Improve Airbnb browser automation and calendar updates.
Adds browser helper, expands calendar sync, and documents handoff status.
2026-06-04 13:08:32 -04: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 Todo calendar.py, auth, browser.py, main.py
P3 SeatGeek client ID on server Done Both providers 200 OK
P3 Beszel agent on automationlab Todo ansible beszel-install-agents.sh
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