Automated daily apartment hunting pipeline for mojcimer.si (Slovenian rental platform). Scrapes listings, filters by criteria (price, location, capacity, dates), analyzes with LLM, generates PDF reports, and delivers to Telegram. Use when user asks about housing listings, apartment reports, or the housing pipeline.
Automated daily scraping, analysis, and reporting for apartment listings on mojcimer.si (Slovenian rental platform).
Finds apartments matching specific criteria (price, location, capacity, dates), analyzes them with an LLM, and delivers formatted PDF reports to Telegram. Runs daily via cron at 8:00 AM Europe/Zagreb.
requests, yaml, Pillow (PIL)playwright-core (for PDF generation)~/.openclaw/openclaw.json)~/.cache/ms-playwright/)housing/
├── SKILL.md # This file
├── scripts/
│ ├── enrich.py # Scrape + fetch details + translate + download images
│ ├── score.py # Programmatic pre-filtering and ranking
│ ├── report.py # Generate HTML reports from template
│ ├── deliver.py # Send PDFs to Telegram
│ └── cron_daily.sh # Daily pipeline orchestration
├── lib/
│ ├── mojcimer.py # Scraper: fetch pages, details, images, translate
│ ├── parser.py # Parse and normalize listing data
│ ├── config.py # Scraper configuration (date ranges, etc.)
│ └── main.py # Main scraper pipeline (run_pipeline)
├── templates/
│ └── report.html # HTML report template (Mustache-style)
├── inquiries/
│ ├── summer-1p.yaml # Summer 1-person inquiry
│ └── school-year-4p.yaml # School year 4-person inquiry
├── data/ # Generated: enriched + filtered JSON
├── reports/ # Generated: HTML, PDF, analysis JSON
│ ├── images/ # Downloaded listing images (URL-hash filenames)
│ ├── report_*_YYYY-MM-DD.{html,pdf}
│ └── analysis_*_YYYY-MM-DD.json
└── logs/ # Pipeline logs
Heartbeat trigger (8:00-9:30 AM)
→ Sub-agent runs full pipeline:
→ scripts/enrich.py # Scrape all pages, fetch 40 details, translate, download images
→ scripts/score.py # Pre-filter (reject girls-only, wrong dates, over-budget), rank top 25
→ scripts/analyze.py # LLM analysis of top 25 per inquiry (Hunter model via OpenRouter)
→ scripts/report.py # Generate per-inquiry HTML reports (top 20)
→ Playwright → PDF # Convert HTML to PDF
→ scripts/deliver.py # Send PDFs to Telegram
Each YAML file in inquiries/ defines search criteria: