Homeschool Lesson Planner: AI-Powered Multi-Framework Curriculum Planning

A Claude Code skill that drafts weekly lesson plans across three simultaneous curriculum frameworks, wired directly into Notion databases.

Three Curricula, Three Kids, One Spreadsheet Meltdown

How do you plan a week of lessons when your family runs three curricula at once?

We homeschool our three children — Kindergarten, Grade 2, and Grade 4 — from our home in Bogor, just south of Jakarta. Each child follows three curriculum frameworks simultaneously: Indonesia's Kurikulum Merdeka (the national "freedom curriculum"), the IB Primary Years Programme (PYP), and New York State Next Generation standards. Every framework has its own scope and sequence, its own pedagogical philosophy, its own pacing.

I spent the first semester doing this by hand in Notion. It took hours every Sunday night. The structure was the same each week — five days, two teaching blocks per day, materials lists, anchor questions — but the content required real judgment. Which NYS standard aligns with which Merdeka competency this week? What read-aloud ties the PYP inquiry thread to the math concept? You can't template your way to answers like that.

So I taught Claude how to do it.

What the Skill Does

The homeschool-lesson-planner is a Claude Code skill — a prompt file, not compiled code — that drafts complete weekly lesson plans directly into our Notion workspace. I say "plan Week 3" or "draft the next unit," and Claude validates the unit context against prior weeks, creates structured Notion pages with five days of activities (materials checklists, anchor questions, differentiated paths for each grade level), wires up related database entries for Books, Materials, and Sensory Activities with proper Notion relations, and respects our pedagogical constraints without being reminded.

That last point is the important one. The skill doesn't just fill in boxes. It makes pedagogical decisions.

Pedagogical Design Decisions

These principles emerged from months of trial and error — mostly error. Early versions produced plans that were structurally correct but felt dead on the page. The rules that survived:

Day 4 is the conceptual high point; Day 5 is synthesis. The week builds toward a peak challenge on Thursday, then Friday consolidates with a family read-aloud closer. I tried putting the hardest material on Monday (the "rip off the bandaid" approach). It was a disaster. The kids need ramp-up time.

Indonesian context is not decoration — it's the default. Currency problems use Rupiah. Geography lessons reference Borobudur, not the Grand Canyon. Population data comes from BPS (Badan Pusat Statistik, Indonesia's statistics bureau), not the US Census. We live here. The curriculum should reflect that.

Per-day materials checklists only. Never dump a full week's materials list at the top. My wife Nurul preps materials morning by morning — a week-long list is just noise. Each day's section lists exactly what she needs to have ready for that day's sessions.

Body & Brain Ready warm-ups open every session. Three minutes of sensory regulation before academic work begins. Rolling playdough, balancing on one foot, clapping patterns. This came from our occupational therapist's recommendation and it works.

Database Schema

The skill operates across 11 interconnected Notion databases. The diagram below shows how they relate — from semesters down through units and weekly lesson plans to individual teaching sessions:

erDiagram
    Semesters ||--o{ Units : contains
    Units ||--o{ Lesson_Plans : "has weeks"
    Units }o--|| Theme_Ideas : "themed by"
    Units ||--o{ Lines_of_Inquiry : explores
    Units }o--o{ Books : references
    Units }o--o{ Materials : "needs"
    Lesson_Plans }o--o{ Lines_of_Inquiry : covers
    Lesson_Plans }o--o{ Books : "read-aloud"
    Lesson_Plans }o--o{ Materials : requires
    Lesson_Plans }o--o{ Sensory_Activities : "warm-up"
    Lesson_Plans }o--o{ Daily_Time_Blocks : "scheduled in"
    Lesson_Plans ||--o{ Sessions : "taught as"
    Lesson_Plans }o--o{ Lesson_Plans : "blocks / blocked by"
    Daily_Time_Blocks }o--o{ Sensory_Activities : uses
    Sessions }o--o{ Sessions : "blocks / blocked by"

    Semesters {
        title Name
        date Date_Range
        formula Code
    }
    Units {
        title Unit_Title
        select Status
        date Date_Range
        rollup PYP_Theme
        rollup Sem_Code
    }
    Theme_Ideas {
        title Theme
        text Summary
        select Status
        select PYP_Theme
        multi_select Curriculum
    }
    Lines_of_Inquiry {
        title Title
        text Big_Question
    }
    Lesson_Plans {
        title Lesson_Title
        number Week
        text Big_Question
        select Status
        multi_select Subjects
        date Date_Range
        rollup Teacher
        rollup Semester
    }
    Daily_Time_Blocks {
        title Block
        text Time
        multi_select Day_of_Week
        multi_select For_Whom
        person Teacher
        select Block_Type
        multi_select Subjects
    }
    Sessions {
        title Session
        date Date_and_Time
        person Teacher
        select Status
        select How_it_Went
        rollup Subjects
        rollup Unit
    }
    Books {
        title Title
    }
    Materials {
        title Name
        select Status
    }
    Sensory_Activities {
        title Activity
    }
    Milestones {
        title Milestone
        select Subject
        select Grade
        checkbox Merdeka
        checkbox PYP
        checkbox NYS
        formula Overlap
    }

Architecture

The whole thing is a single SKILL.md file that teaches Claude how to interact with our Notion workspace. No compiled code. No backend service. No API keys beyond what the Notion MCP server already provides.

The file carries three things: a reference mapping every Notion database ID, property name, and schema detail; a page skeleton defining the day-by-day structure Claude should follow; and a canonical example — Week 1, "Place Value Power-Up" — showing exactly what good output looks like. That canonical example turned out to be the most important piece. More on that in a moment.

Claude uses the Notion MCP tools to create pages, set properties, and wire up relations. The skill handles our Ibu-mornings / Ayah-afternoons teaching split, with my afternoon blocks (two 90-minute academic sessions) as the primary planning scope.

What I Learned

The hardest part was not the Notion integration. It was encoding taste.

Early versions of the skill produced technically correct but pedagogically flat plans. The activities checked every box — right standard, right grade level, right subject — but they felt like they'd been generated by a committee. No arc to the week. No moment where a kid would look up and say "wait, really?"

The breakthrough was the canonical example. I took one week that had gone beautifully in practice — the lessons landed, the kids were engaged, the materials flowed — and wrote it up in exact detail. Showing Claude a single week done exactly right taught it more than pages of abstract rules ever did. The model didn't need more constraints. It needed a worked example of what good looks like.

The three-framework constraint, meanwhile, turned out to be an advantage rather than a burden. When NYS, Merdeka, and PYP all point at the same concept from different angles, the resulting lesson is richer than any single framework would produce. The skill's job is to find those convergence points — and it does, reliably, in the time it takes me to type "plan next week."

Next I want to add retroactive feedback: after a week of teaching, tell the skill which lessons worked and which didn't, and let it adjust its model of what "good" means for our family. That loop isn't built yet. But the structure is ready for it.