Chapter Actions

The internal action board that replaces Productive. Every piece of work for every client, from idea to live — tagged, tracked, and fed automatically by the rest of the Chapter Tools family.

i.

The pipeline

Every card moves left to right across five statuses. Drag between columns or change status in the modal.

  • IdeasRaw opportunities, captured but not committed. Newsbeat picks land here automatically.
  • PlannedCommitted work — we've decided to do it. Strategise briefs and the Productive import land here.
  • In ProgressActive work. Newsroom outreach lands here when you log a pitch. Vision-flagged coverage too.
  • In ApprovalWith the client. Grid batches sent for approval mirror here automatically.
  • LiveShipped. Stays on the board for 30 days, then moves to the Archive view.
ii.

Tagging

Three axes on every card — filter the board by any combination.

Client
One of the seeded clients. Edit in the action modal or via filters. Drives the retainer view.
Channel
PR, Social, Email, Digital, Partnerships, Events, Content, Internal. Multi-select.
Month
Loose calendar anchor — for planning when work belongs. Not a deadline (that’s the due date field).
iii.

Keyboard shortcuts + UI affordances

On the board, when no modal is open and no input is focused.

/Focus the search input
nOpen the inline composer in Ideas
?Show the in-page cheatsheet
escClose the open modal or composer
⌘ ↩Submit the inline composer
▾ / ▸Collapse / expand a column (click the arrow in the column header)

Only mine — chip in the filter bar that scopes the board to cards owned by whoever is set in the user picker (top right). Pick yourself once and use this chip to triage in seconds.

Filters persist in the URL — bookmark a filtered view (Syon-Park-only, channels=PR…) and you’ll land on the same scope next time. Share the URL with a colleague to point them at exactly what you’re looking at.

iii.b

Card visual states

The board surfaces priority at a glance — no scanning required.

  • Overdue — red left-edge stripe + “Overdue” pill. Due date is in the past and the card isn’t Live yet.
  • Due today — amber left-edge stripe + “Today” pill.
  • Stalled — small grey pill on cards that have been In Progress for 14+ days without an update. Nudge to either ship or move.
iv.

Time logging

Lightweight — log after the fact, not as a daily timesheet.

Open any card. Scroll to the Time loggedsection. Enter hours and a one-line note (“Drafted press release”, “Pitched to four outlets”) and hit Log. The entry is stamped with whoever’s set in the user picker (top-right). Aggregates roll up to the client retainer view.

v.

Pages

What lives where.

/BoardThe kanban. Default view. Drag cards between columns. Live cards >30d are hidden — see /archive.
/clientsClientsOne tile per client showing pipeline counts.
/clients/[slug]Client retainerPer-client deep view: hours used vs allocation, deliverables shipped this month, full pipeline.
/digestWeekly digestPer-client 7-day snapshot — printable for client retainer reports.
/activityActivityCross-card timeline of every edit, time-log and creation. End-of-day standup view.
/archiveArchiveLive cards older than 30 days. Restore or permanently delete.
/helpHelpThis page.
vi.

How cards arrive automatically

Other Chapter Tools push into Actions via the integration endpoint. You don't have to create most cards by hand.

  • Newsbeatlands inIdeas

    The 9am digest pushes its single Today's pick as an ideas card under the matched client. Triaged from the Ideas column.

  • Gridlands inIn Approval

    When a post batch is sent for client approval, a mirror card appears here with a link back to the approve page.

  • Newsroomlands inIn Progress

    Logging an outreach on a journalist creates a card titled 'Pitched {journalist}: {subject}'.

  • Strategiselands inPlanned

    Each 90-day recommendation in a generated brief becomes its own card under the brand's client slug.

  • Visionlands inIn Progress

    Clicking 'Flag for action' on a clipping creates a card so coverage gets the follow-up it needs.

vii.

Integration token

If you ever need to wire a new tool, here's how.

POST to /api/integrations/actions with Authorization: Bearer <INTEGRATION_API_TOKEN>. Body: { source, title, client_slug, status?, source_ref, source_url?, channels? }. Idempotent on (source, source_ref) — same key on a re-run returns the existing action instead of creating a duplicate. Adding a new source value requires extending the Postgres enum (see supabase/migrations/).

viii.

Who you are

Set the active user (top-right) to attribute edits, time entries, and activity correctly.

No staff login in v1 — just a cookie-stored name. Pick from the dropdown or type a new one. Persists for a year.