Module 03 / Projects

Roadmaps that stay honest.

Live Part of Atlas

A roadmap is only as good as the data behind it. Projects pulls live progress from Tasks, deploys, docs, and meetings. Milestones move when work moves. You stop maintaining a slide. You start trusting the date.

What it does

The forecast you can actually ship.

Projects is not another slideware container. It is a live Gantt that does the math, names the risks, and tells you which milestones will slip eleven days from now.

Five capabilities, in order of leverage

  • Auto-rollup

    Milestone state is a function of the tasks beneath it. No status field, no syncing meeting, no maintenance ritual.

  • Forecast with intervals

    Every milestone has a 50% and 90% completion date, derived from the team's actual velocity, not a guess.

  • Dependency math

    Cross-team dependencies are first-class edges. If team B slips, team C's milestone shifts the same day.

  • Burn forecast

    Cost projection per milestone tied to engineer-days plus compute. The CFO gets the same view as the EM.

  • Narrative status

    The board narrative writes itself every Monday. Drawn from real shipped work, real slipped tasks, real reasons.

Sample forecast · M-318 Read replica migration
scope11 tasks · 86 pts
velocity (4w)19 pts/wk
p50 finishDec 04
p90 finishDec 18
committedDec 01
top riskSEC-318 review
actionre-sequence M-320
How it works

Roadmap as a function.

The roadmap is not a document you maintain. It is a live function over the work graph. Three steps, no rituals.

STEP 01M-318 Read replica migrationENG-1276 (4d)ENG-1280 (6d)SEC-318 (2d)DOC-44 (1d)milestonerolls up

Compose milestones from tasks

A milestone is a set of tasks plus a target date. State, scope, and burn are derived. You never edit the milestone directly.

STEP 02ptstodayp50 Dec 04p90 Dec 18OctNovDecJan

Forecast with confidence intervals

Velocity is computed per team, per work-type, over a rolling window. The forecast updates the moment a task closes.

STEP 03Weekly board narrative"M-318 forecast moved out 9 days,because SEC-318 review is waitingon procurement. M-320 was rescoped."+ 14 milestones on track- 2 at risk · 1 slippingnext decision: hire or descope?

Write the narrative, not the slide

Monday morning the assistant drafts the board update from the week's real events. You spend the meeting deciding, not summarizing.

Key features

Six things, all live.

Each capability below is in production today. None require a separate plan or a new product to install.

Multi-team views

Roll up across orgs without losing per-team detail. Engineering, design, GTM, and ops in one frame.

Burn and budget

Engineer-days and inferred compute spend tracked per milestone. Tag a budget cap, get a warning at 80%.

Dependency graph

If a blocking task slips, every downstream milestone updates in the same write with a recomputed p50.

Replanning

What if Mia is out for two weeks? The replanner runs in seconds. It produces the new dates and the new risks.

Doc and meeting attach

Every milestone has the latest review doc, design spec, and the last two related meetings inline.

External shareable view

Read-only links for execs, board members, or customers. Field-level masking. Watermarked exports.

Connected

Six modules feed the roadmap.

Projects does not own the data. It composes it. That is why the forecast stays honest.

Roadmap is downstream of the work

Projects reads tasks, meeting decisions, doc revisions, deal commits, analytics events, and form submissions. It never invents progress. If the work did not happen, the milestone does not move.

Tasks → status & burnMeetings → decisionsDocs → review stateCRM → committed datesAnalytics → KPI gatesForms → intake
API

Programmatic roadmaps.

Replan, fork, and export milestones with one call. Python shown.

replan.py
# Run a what-if: pull Mia off the team for two weeks. See the slip.
from wrxstack import Wrx

wrx = Wrx(token=os.environ["WRX_TOKEN"])

baseline = wrx.projects.get("PJT-Q4-reliability")
print(baseline.milestones["M-318"].forecast_p50)  # 2026-12-04

scenario = wrx.projects.replan(
    project="PJT-Q4-reliability",
    constraints=[
        { "who": "mia@acme.com", "unavailable": ["2026-11-18", "2026-12-02"] }
    ],
    optimize="least_slip"
)

for ms in scenario.changed_milestones:
    print(f"{ms.id}: {ms.forecast_p50} ({ms.slip_days:+d}d) reason={ms.reason}")

# M-318: 2026-12-13 (+9d) reason=critical_path=ENG-1280
# M-320: 2026-12-22 (+6d) reason=dependency=M-318

# Accept the scenario and ship it to Slack #leads.
wrx.projects.adopt(scenario, broadcast="slack:#leads")
Comparison

Projects vs. Asana.

Asana is a tracker plus a timeline view. wrxstack Projects is a live forecast over a live work graph.

wrxstack Projects vs. Asana

CapabilityAsanawrxstack Projects
Milestone stateManual updateDerived from task graph
Forecast intervalsSingle target datep50 and p90 with reasons
Cross-team depsDependency linksFirst-class graph + reflow
What-if planningNot availableReplanner runs in seconds
Burn / cost trackingWorkload onlyEngineer-days + compute $
Board narrativePM writes weeklyAuto-drafted Monday 7am
External shareable viewPublic linkPer-field masking, watermarked
FAQ

Common questions.

Six things heads of engineering ask before adopting Projects.

Where does velocity come from? Is it story points?

Velocity is computed per team and per work-type from completed Tasks. We support story points, T-shirt sizes, hour estimates, or no estimates at all. With no estimates, we use historical task count and lifespan as a base.

How are dependencies modeled across teams?

Each task has a typed edge to another task: blocks, blocked-by, parent-of, child-of, related-to. Milestones inherit those edges. If team A's task slips, team B's milestone recomputes its p50 in the same write. There is no cron, no batch, no overnight rebuild.

Can we import from Jira or Asana without losing history?

Yes. The importer preserves issue history, comments, attachments, and links. Cycle time and lead time charts are backfilled. The first run imports in a single pass, even for a workspace with 100k issues.

Do executives need their own seats to view roadmaps?

No. The external shareable view requires no seat. You can publish a read-only board to anyone with the link, with field masking on cost, headcount, or named individuals. The view is watermarked with the viewer's email if they authenticate.

How do you keep the AI from inventing milestones or progress?

Every assertion in the narrative is grounded in an event in the work graph and shows the source on hover. The narrative model is constrained to facts that exist in the last seven days of the project's event log. If we cannot ground a sentence, we do not write it.

What does the replanner cost to run?

It runs in our managed compute layer. A scenario over 200 milestones and 6,000 tasks completes in seconds on a warm cache. There is no per-run charge.

Related

Pairs well with.

Projects shines once Tasks, Docs, and Analytics are live in the same workspace.

Honest limits

Who this is not for.

Projects keeps roadmaps honest against the work underneath them. If you manage construction schedules or capital programs that need critical-path Gantt math, earned-value tracking, and resource leveling across a deep dependency tree, a dedicated project-controls tool will serve you better. Projects plans software and operations work, not building sites.

Get started

Stop maintaining the roadmap slide.

Free to start, no credit card. Import your Jira or Asana in a single pass. The first honest forecast lands the same afternoon.