markdown in git · a board on top · invite only

Keep writing markdown. Read it as a board.

One file per work item, kept in git where your team already writes. cardstock reads the sheets in, the review moves them into lanes and puts a priority and a size on them, and the export writes those decisions back into the same files. Markdown owns the narrative. The app owns the margin.

Ask for an inviteSee how it worksinvites go out in small batches

a board, mid review

Unsorted

3
#61

Someone asked for a weekly digest

forgotten
raised Jun 2
#58

Duplicate cards after a failed import

forgotten
raised May 19
#44

Rename the archive lane

raised Apr 30

Now

3
#42

Round trip loses the target date on export

Epic Round tripwip
raised Aug 1P1L
raised Aug 1etlbug

Reproduced on the client board. The exporter writes the lane and the rank and drops target when the card has no planned start.

#37

Filter by tag from the card itself

Epic Board
raised Aug 7P2M
raised Aug 7board
#35

Migrations run twice on a cold deploy

Epic Platformblocked
raised Jul 28P1H
raised Jul 28

Next

2
#29

Search by id from anywhere on the board

Epic Board
raised Aug 11P3M
raised Aug 11board
#24

Per-project card template

Epic Docs
raised Aug 14P2L
raised Aug 14

Building

1
#18

Epic cockpit reads an empty effort column

Epic Planningbuiltoverdue
raised Jul 9P2M
raised Jul 9

Shipped

1
#12

Lane names are yours to rename

shipped
raised Jul 2L
raised Jul 2

one work item

1 .md

lanes, named by you

6 lanes

import and export

450 ms

every corner

2 px

01 · the round trip

The file keeps the story. The board keeps the decisions.

You write the item: what it is, who asked for it, why it matters. The board records what the review decided about it, and the export writes those lines back into the same file. The folder in git stays the copy you can read on a train with no network.

the file in git

---
id: 42
title: Round trip loses the target date
epic: Round trip
raised: 2026-08-01
tags: [etl, bug]
---
Reproduced on the client board. The exporter
writes the lane and the rank and drops target.
+ lane: now
+ rank: 3
+ priority: 1
+ effort: L
+ target: 2026-09-15

added by monday’s review, not by a person typing

the same item, filed

#42

Round trip loses the target date on export

Epic Round tripwip
raised Aug 1P1L
raised Aug 1etlbug

Reproduced on the client board. The exporter writes the lane and the rank and drops target when the card has no planned start.

markdown ownsid · title · epic
tags · the body
the board ownslane · rank · priority
effort · target

02 · the drawer

The unsorted drawer ages in public.

Anything filed without a decision lands in one drawer, oldest at the top. A card that has sat there a month says so on its own face, so the pile cannot quietly become the backlog.

Unsorted

4
#61

Someone asked for a weekly digest

forgotten
raised Jun 2
#58

Duplicate cards after a failed import

forgotten
raised May 19
#44

Rename the archive lane

raised Apr 30
#40

Board export should include the archive

raised Apr 12

“The oldest stuff is the hardest for me to prioritize.”

the review this drawer came out of

It replaces the monthly scroll through a list nobody has opened since March, looking for the thing you already know is in there.

3 forgottenoldest 34d4 in drawer

03 · folders and binders

A folder holds binders. A binder holds sheets.

A project is a folder and a board is a binder, so a shelf of work reads as a shelf: how many cards each one carries, who owns it, and which one you meant to open.

13 cards filed · 2 binders · 3 unsorted · 1 blocked

04 · epics

Every epic carries its own outlook.

An epic is a promise with a date on it. The cockpit says how much of it is delivered, how much is stuck and whether the target still holds, so nobody has to build the slide that says the same thing.

round trip · joao

Round trip

A file that leaves the folder comes back with the same id.

2 of 5 delivered · 1 blocked

at-risk
board and cards · joao

Board and cards

Everything a review does, done by dragging.

4 of 6 delivered · on target

on-track
docs and onboarding · unassigned

Docs and onboarding

A new person gets productive without a call.

0 of 4 delivered · no target

planning

filters, tags and the pen

etlboardbugdocs
PriorityP1P2P3
EffortLMH

Pen is what the app recorded. Highlighter is your own hand, and it only ever lands on tags.

05 · the calendar

Target dates, pinned to a month.

Drag a card onto a day and it has a rough date. Drag it off and it has none. The tray beside the month holds everything with no date yet, which on most boards is most of it.

September 2026

6 dated · 3 in the tray
Mon
Tue
Wed
Thu
Fri
Sat
Sun
1
2
3
#207
4
5
6
7
8
#202
#97
9
10
11
12
13
14
15
#96
16
17
#216
18
19
20
21
22
23
24
#200
25
26
27
28
29
30

Rough dates dragged onto days. Nobody is drawing a gantt chart here.

invite only

Ask for an invite.

Leave the address you would sign in with. Invites go out in small batches while the beta is small enough that one person answers all the mail.

06 · the honest list

Not built yet

What the tool cannot do today, in plain words, so you can decide before you ask for a seat rather than after.

  • offSpring-loaded lanes. They were built, then switched off: they fired while you were only passing over a lane on the way somewhere else.
  • v1.1Attachments. The schema holds them. The interface for adding one does not exist.
  • desk onlyA phone. The board assumes a pointer and a wide screen, and the calendar assumes both.
invite
only

invite only

Tell us what you would file first.

Two lines is plenty. The request that gets a seat quickest describes a real backlog you already keep somewhere worse.

one address, one email to the owner, no list