Features of the program management software

Everything below exists in the product today. Each section says what the feature does, what data it stores or shows, and gives a concrete example.

Program overview

The overview page is the first screen after you log in. It lists every program with its readiness, the number of open and critical blockers and the milestones that are at risk, so you can see where to look first.

Data: Reads programs, milestones, blockers and the freshness of each connected source. It stores nothing of its own.

Example: A program shows "at risk" with two critical blockers and one milestone due in nine days. You open it from the list and land on its detail page.

Cross-project dependency graph

Work items from Jira and Asana are shown as one graph. Links are hard, soft or informational, and each link is marked as verified or suggested, so a guess is never presented as a fact. The critical path is highlighted.

Data: Stores each link with its type, direction, source system, who asserted it and whether a person verified it.

Example: A Jira issue "Auth service rework" blocks an Asana task "Launch site go-live" with a hard link. The path to the launch milestone is drawn in red until the issue is done.

Milestone risk and impact preview

Every milestone keeps a baseline date and a forecast date. The impact preview takes a delay on an upstream item and walks it along the verified hard dependencies, using plain date arithmetic with the assumptions listed. It never writes anything.

Data: Stores baseline, planned and scenario dates per milestone.

Example: If "Payments API" slips by 6 days, the preview shows that "Payments GA" moves by 6 days and "Q4 launch" by 9 days, with the chain of items that causes it.

Blockers, risks and escalations

A blocker moves through eight states: new, triaged, assigned, waiting external, mitigating, verifying, resolved and waived. Each blocker has an owner, a due date and the milestones it holds, and can be shown as a board or a table.

Data: Stores state, priority, owner, due date, the linked work items and milestones, and the activity history of the blocker.

Example: A vendor review blocks the auth service. It is triaged, assigned to the platform lead and shows that it holds two milestones until it is resolved.

Decision log

Record a decision with its options, the rationale, the approver and a follow-up deadline. Decisions link to the milestones and blockers they affect and move through open, pending approval, decided and implemented, or are withdrawn.

Data: Stores the question, the options considered, the chosen option, the approver, the deadline and the status history.

Example: The decision "Use the vendor SDK or build in-house" lists both options, names the approver and links to the milestone it affects. It shows as overdue once the deadline passes.

Approvals for agent proposals

AI agents can propose a dependency link or a Slack escalation. The proposal waits in the approvals queue with the exact payload, a payload hash and an expiry time. A person approves or denies it, and only an approved action can be executed.

Data: Stores the proposed payload, its hash, who requested and who decided, the expiry and the result of the execution.

Example: Claude proposes a Slack message to the platform lead about the auth blocker. You read the exact text in Approvals, approve it, and the message is posted once.

Weekly review report

The weekly review collects the state of a program in six sections: source freshness, changes since the last review, open blockers, upcoming milestones, overdue decisions and unresolved dependencies. It prints cleanly from the browser, and it has ready-made prompts for Claude and ChatGPT.

Data: Reads live program data when you open it. The page itself stores nothing.

Example: On Monday you open the report for the launch program, see that the Jira source was last synced 26 hours ago, and print the page to PDF for the status meeting.

Jira Cloud and Asana sync

Connect Jira Cloud with an Atlassian API token and Asana with a personal access token. You choose which projects belong to a program, and the sync reads their issues or tasks, status and due dates. The connection is read only.

Data: Stores synced work items, the selected projects and sync timestamps and errors. The token is kept in a table that the browser cannot read.

Example: You select three Jira projects and two Asana projects for the "Atlas" program. After the first sync their items appear in the graph, each labeled with its source.

Slack escalations

Connect Slack with a bot token that has the chat:write scope. The product posts escalation messages to the channel you choose, and only after a person has approved the exact text. Nothing is read from Slack.

Data: Stores the connection status and the approved messages with their approval record.

Example: An approved escalation about the auth blocker is posted to the platform channel, and the audit log records who approved it and when.

MCP server

The workspace exposes ten tools over the Model Context Protocol, so Claude, ChatGPT, Claude Code or Cursor can read programs, dependencies, milestones and blockers. Access uses workspace tokens created in Settings. See the MCP page for setup.

Data: Stores only a SHA-256 hash of each token with its name, creator and last use. The full token is shown once.

Example: You ask Claude "Which dependencies threaten the Q4 launch?". It calls get_dependency_graph and analyze_milestone_impact and answers from your workspace data.

Audit log

Consequential actions are written to a log of who did what, to which resource and when. This covers approvals, connection changes, token creation and billing events.

Data: Stores the action, the resource type and id, the actor and the time.

Example: The log shows that an owner revoked an MCP token on Tuesday and that an escalation was approved by a PMO lead the day before.

Sample portfolio

Before you connect real sources, you can load a sample portfolio of six programs with work items, milestones, dependencies and blockers. It is marked as sample data and can be used to try every view.

Data: Stores sample rows flagged as demo data in your workspace.

Example: You load the sample portfolio, open the dependency graph and try the impact preview with a 6 day delay before you connect Jira.