Skip to main content

autoPlan

An automated meal-planning loop that drafts the week, surfaces it for vetoes, and lands it in a finished grocery cart — quietly, on a Thursday-night cron.

Visit autoPlan
  • Product Strategy
  • Full-Stack Engineering
  • Automation
  • Workflow Design
autoPlan weekly proposal landing in a Telegram group with inline accept and veto buttons.

The problem

Every household runs a tax on Thursday night: what are we eating next week, and who’s going to the store. The conversation drains an hour and rarely produces a plan that survives Monday. The work isn’t hard — it’s recurring, judgment-based, and ripe for automation, but the existing meal-planning apps optimize for ad-revenue scrolling rather than getting dinner on the table.

The approach

autoPlan runs the loop on a Thursday-night cron. A Python job on GitHub Actions pulls the household’s recipe library, generates a balanced week, and posts the proposal to a Telegram group. The household votes via inline buttons — accept, swap, or veto — and the plan locks in. A Cloudflare Worker holds state across the loop in D1; Supabase stores the recipe library.

autoPlan architecture diagram: GitHub Actions cron, Cloudflare Worker, D1, Supabase, and the Telegram bot.

Telegram as the interface

Telegram is where the household already lives. Proposals land as inline-keyboard messages — one tap to accept, swap, or veto a meal. The Worker handles the webhook traffic, persists votes to D1, and edits the message in place as the plan evolves. No new app, no new login, no new place to remember to check.

Cart as the output

Once the plan locks, a Playwright job translates each meal into a multi-store Instacart cart — Costco for bulk proteins, Kroger for produce, Aldi for pantry, Sprouts for organic, Target for household. The cart is ready before the conversation about ordering starts. The output is the meal, not the spreadsheet.

autoPlan web dashboard showing the locked weekly plan and cook-history feedback.

Where it stands

autoPlan v1 is single-household — a private system running for one family of two. The Thursday loop runs unattended every week, with the recipe library, household preferences, and cook-history all stored as the system’s memory. Next phases on the roadmap: multi-household support and a recipe-discovery layer that adapts to cook-feedback over time.