Jeremy Badder
← All work
My own product · live since July 2026

Weekly Lesson Planner

A subscription app that turns a homeschool teacher guide into a printable weekly plan for each child. weeklylessonplanner.com

16paying families, counted from Stripe on Oct 7, 2026
~770changes shipped in the first three months
0duplicate emails when 22 scheduled jobs moved servers
Narrated walkthrough coming soonFrom a teacher guide to a printed week, in about four minutes.
The Weekly Lesson Planner home page
The public home page at weeklylessonplanner.com

The problem

Homeschool families already own their curriculum, and the daily lessons are already inside the teacher guide. Turning that into a week-by-week plan for each child means hours of copying, every week.

What I built

Families pick their curriculum from the library, or upload their teacher guide once. The app reads the schedule that's in the guide and lays it into a weekly grid: subjects across the top, days down the side, one plan per child, ready to edit and print.

  • Monthly ($9.99) and yearly ($59–79) plans through Stripe.
  • A back office where I see families, open issues and support threads.
  • A support inbox where AI drafts each reply and I approve it before it's sent.
  • Nightly backups, and scheduled jobs on a small Linux server I run.

How I directed the agents

Claude Code did the building. My job was to set the rules, give it the right context, and check what came back against reality.

The rule that shaped everything: copy from the guide, never make a lesson up. Every lesson in a family's plan has to trace back to a page in their book.

That rule is easy to say and hard to keep. When pages are scanned, notes printed at the edge of a page can sneak into the lesson text. When that happened, I had the agents trace each lesson back to its source page, fix the library, and check the fix against what families had actually typed into their own plans before calling it done.

What broke, and what I learned

  • The app over-counted paying customers by 27%. A cancelled customer was never marked as cancelled, so a "power user" we were studying had actually cancelled two days after paying. Now paying customers are counted from Stripe, where the money actually is.
  • A scheduling bug cost 20 families a lesson every week in subjects that didn't run all five days. Found it and fixed it.
  • A forced server move. The old host was shutting down, so I moved the back end to a new server first: 22 scheduled jobs cut over with no duplicate emails to customers.

Built with

Claude CodeCloudflare WorkersCloudflare D1StripeLinux server (cron)