The rolling content calendar

Only the next three weeks hold dates — the planner refills empty publish-day slots every day from the live-ranked queue, and never moves a date a person set by hand.

What it is

A month-grid calendar over a 21-day planning horizon. Each day the planner finds publish-day slots inside the horizon that nothing occupies, takes the top unlocked posts off the queue and stamps them with a date and an auto_planned flag. Anything beyond the horizon stays deliberately open. Dragging a chip to a different day clears the auto flag, which makes that date permanent.

Also called: content calendar · publishing schedule · editorial calendar · blog planning

See it
The rolling content calendar
Apr
May
Jun
Jul
Gideon Alt — 40×64 Shop
Framing
Ivy Brubaker — Riding Arena
Concrete
Ivy Brubaker — Barndominium
Trim
Ronan Petsch — Barndominium
Framing
Gideon Alt — Barndominium
Concrete
Framing crewConcrete crewTrim crew
The month grid with wave-coloured chips, the horizon line after 21 days, and the 'Up next' queue above it. Rendered by src/components/platform/blog/ContentCalendar.tsx. Sample data — no customer information appears here.
How it works
  1. 1planContentWindow() runs daily from the SEO cron and needs no external data.
  2. 2Slots are publish days in the next 21 that no scheduled or published post already occupies.
  3. 3The backlog is ranked by rankQueue and filtered to unlocked posts only.
  4. 4Each fill writes scheduled_for and auto_planned = true, so the planner can identify its own decisions later.
  5. 5Dragging a post in the panel sets auto_planned = false — the planner and the implementer both refuse to move it after that.
  6. 6The pass is idempotent: it only ever fills empty days.
Why we built it

The migration behind it states the change: "The plan stops being fixed months ahead: keywords carry their 12-month search rhythm, the planner keeps only ~3 weeks scheduled, and everything else waits in a live-ranked queue." A fixed six-month calendar is wrong the moment demand shifts, and it was — the same migration pulled every far-future date back into the queue. The auto_planned flag exists so the machine can undo its own decisions without ever overriding a person's.

The problem
  • A fixed long-range calendar goes stale as demand moves.
  • Nothing distinguished a machine-set date from a human's deliberate one.
  • Empty publish slots went unnoticed until the week they arrived.
Sound familiar?
What you get
The next three weeks are always filled with the currently highest-priority work
A date set by hand is never moved by the machine
Re-planning is automatic and idempotent, not a meeting
What's inside

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →