Decision. For my wine app, all heavy batch work — scraping a dozen shops with Playwright, deduplicating a 100k+ bottling catalog (a full O(n²) similarity pass), and LLM enrichment — runs in Docker on a Mac Mini M4 at home. Cloud Run hosts only the thin API.
Because. Cloud Run kills any request at 60 minutes; these jobs run for hours. And local hardware changes the economics: Ollama does the free extraction tier, the canonical Postgres catalog sits on the same machine (no egress, no Cloud SQL bill), and the paid model only sees what the free tiers couldn’t fill.
Instead of. Contorting long pipelines into serverless functions with checkpointing and queue glue — complexity that exists only to work around a platform limit I don’t have at home.