Project

Project plan: module, use case, feature, milestone

A roadmap slide lies once a week because it is not bound to tasks. Let module, use case, feature, and milestone be the tree above the task; let percent come from card count.

Planning desk and delivery checklist

August 14, 2026 · 7 min read

Four layers are enough

Four-layer project plan

A module is a large product slice: billing, field, docs, reports. A use case is who does what: “technician closes the job”, “client approves the draft”. A feature is the delivered cut: “passworded share link”, “delay list”. A milestone is the dated bundle: “client A live in October”. The task sits at the bottom. Upper layers are not copied onto slides; they are read from the tree.

Do not invent a fifth layer. Piles of “epic”, “theme”, and “initiative” turn the roadmap into a novel. Four layers explain why the card exists. Use cases keep the customer’s language; features do not drift into engineering slang. An empty feature is a warning on the roadmap: no work is bound yet, the percent is a manager’s hope. Do not open a task without a feature. An unbound task blinds the tree; at quarter-end you ask “which package did this belong to?”

  • An empty feature is a warning on the roadmap
  • Use cases keep the customer’s language
  • Milestone dates derive from tasks
  • Generate the slide from the plan, not the reverse
  • Do not open a task without a feature

Percent comes from the card

Feature completion percent

In Ontra you attach tasks to a feature. Completion percent comes from card count, not optimism. The milestone report shows that number weekly. If the exec deck updates Friday night and the board moves Monday, two truths are born. In Ontra the milestone report opens five minutes before the meeting; there is no separate “management truth.”

A required field is annoying. At quarter-end it kills the question “which package did this belong to?” When issue tracker, wiki, and slides are three sources, the sprint lies. Let feature, task, and doc be one tree. The backlog is not a graveyard; it is the line in front of a locked sprint. An infinite issue list is not a priority.

The goal sits at the top of the tree

Sprint work binds to goals. The month closes without a meeting. Goals do not stay on slides. “Ship faster” cannot bind to the tree; it wants a number and a date. Split the quarterly goal into sprints. Mark which feature counts in each sprint. Do not open a second OKR tool — dual records scatter again.

On a software team the PR lands on the card

If the decision stays in a GitHub comment, next quarter forgets it. Write the short decision on the task comment. The doc carries acceptance criteria, not the issue title. The pull request number sits on the task field. Review chat may stay on GitHub; the acceptance sentence lands in Ontra. Tech debt is tagged, not a secret list. Milestone dates come from the plan, not the code.

Sitting the tree on a quarter

Quarter start. Three goal sentences are written, each with a number and a date. Milestones sit under them. Features bind to the stone; empty features are not opened. Tasks are not opened without a feature. Use cases keep the customer’s language: “technician closes the job”, “client approves the draft”. A module is a large slice: billing, field, docs. A fifth layer (epic, theme, initiative) starts the novel. Four layers are enough.

Percent comes from card count. Manager optimism stays on the slide and does not enter the report. To kill the Friday-slide / Monday-board twin truth, open the milestone report five minutes before the meeting. A task without a feature births “which package did this belong to?” at quarter-end. A required field is annoying and kills that question. The slide is generated from the plan, not the reverse.

In software the PR number sits on the task field. The acceptance sentence lands on the card; a GitHub comment is forgotten next quarter. Tech debt is tagged, not a secret list. In an agency the campaign is a feature, the retainer is a list, the brief binds to the task. In both, the roadmap is not a slide. The sprint feeds the goal. Split the quarter into six sprints; do not wait for week twelve.

Keeping the quarter tree alive

Quarter start: three goal sentences with number and date. Milestones under them. Features bind to the stone; empty ones are not opened. Tasks are not opened without a feature. Use case is customer language. Module is a large slice. A fifth layer starts the novel. Percent is card count. Optimism stays on the slide. The report kills the Friday-slide Monday-board twin. A required field is annoying and kills which package did this belong to.

In software the PR is written on the card. Acceptance lands on the card. A GitHub comment is forgotten. Tech debt is tagged. In an agency the campaign is a feature, retainer a list, brief a task. In both the roadmap is not a slide. The sprint feeds the goal. Six sprints, do not wait for week twelve. The slide is generated from the plan.

An empty feature is a warning. An unbound task blinds. There cannot be a separate management truth. Five minutes before the meeting the milestone report is enough. If the tree does not live, the quarter is invented on a slide. Ontra reads the tree from the card.

In month one bind real tasks to three features. Do not open a fourth empty. A customer should be able to read the use-case sentence. Pick modules as the product’s real cut, not the org chart. This discipline looks slow. What is slow is updating the slide every Friday.

Slide lag

Roadmap and growth view

The exec deck updates Friday night; the board moves Monday. In Ontra the milestone report opens five minutes before the meeting; there is no separate “management truth”.

Do not open a task without a feature

An unbound task blinds the roadmap. A required field is annoying; at quarter-end it kills the question “which package did this belong to?”