Open Standard v1.0.0

PPX — Project Plan Exchange

The first AI-native open standard for exchanging project plans between modern software tools. Built for interoperability, designed for the future of collaborative project management.

Why We Need a Standard

Project data is trapped in proprietary formats. PPX breaks down those walls.

Universal Compatibility

Move your project plans between any tool that supports PPX. No vendor lock-in, no data loss.

AI-Native Design

Built with AI agents in mind. Clear semantics, predictable structure, easy to parse and generate.

Complete & Extensible

Supports tasks, dependencies, resources, and assignments. Extend with custom metadata as needed.

Export Formats

Export your project data in multiple formats for different use cases

PPX Format

.ppx.json

Full-fidelity project exchange. Preserves all data including dependencies, resources, and critical path info.

Complete Data Re-importable JSON

iCalendar

.ics

Import into Google Calendar, Apple Calendar, Outlook, and any calendar app that supports iCal.

VTODO Calendar Apps RFC 5545

CSV Export

.csv

Open in Excel, Google Sheets, or any spreadsheet. Perfect for reporting and analysis.

Spreadsheets Reports Universal

PPX Specification v1.0.0

The complete schema for the Project Plan Exchange format

Document Structure

Root Fields

format"ppx" (required)
version"1.0.0" (semver)
metaExport metadata
projectProject definition
tasksArray of tasks
dependenciesTask relationships
resources?Team members
assignments?Task assignments

File Info

MIME Type application/vnd.ppx+json
Extension .ppx.json
Encoding UTF-8

Task Schema

Core Fields

idUnique identifier
projectIdParent project
parentId?For hierarchy (WBS)
nameTask name
statusTask status
priorityPriority level
progress0-100 percentage

Status Values

not_started → backlog
in_progress → doing
completed → done
blocked → blocked
cancelled → archived

Dependency Schema

Fields

idUnique identifier
taskIdSuccessor task
dependsOnIdPredecessor task
typeDependency type
lagDaysDelay in days

Dependency Types

FS finish_to_start
SS start_to_start
FF finish_to_finish
SF start_to_finish

Example Document

{
  "format": "ppx",
  "version": "1.0.0",
  "meta": {
    "documentId": "abc123xyz",
    "exportedAt": "2024-12-06T10:00:00Z",
    "generator": {
      "name": "Critical Path AI",
      "version": "1.0.0"
    }
  },
  "project": {
    "id": "proj_1",
    "name": "Website Redesign",
    "status": "active",
    "startDate": "2024-01-15",
    "targetEndDate": "2024-03-30",
    "createdAt": "2024-01-10T08:00:00Z",
    "updatedAt": "2024-01-15T10:30:00Z"
  },
  "tasks": [
    {
      "id": "task_1",
      "projectId": "proj_1",
      "name": "Design mockups",
      "status": "completed",
      "priority": "high",
      "progress": 100,
      "startDate": "2024-01-15",
      "endDate": "2024-01-25",
      "isMilestone": false,
      "isCritical": true,
      "slack": 0,
      "createdAt": "2024-01-10T08:00:00Z",
      "updatedAt": "2024-01-25T17:00:00Z"
    },
    {
      "id": "task_2",
      "projectId": "proj_1",
      "name": "Frontend development",
      "status": "in_progress",
      "priority": "critical",
      "progress": 45,
      "startDate": "2024-01-26",
      "endDate": "2024-02-20",
      "isMilestone": false,
      "isCritical": true,
      "slack": 0,
      "createdAt": "2024-01-10T08:00:00Z",
      "updatedAt": "2024-02-10T14:00:00Z"
    }
  ],
  "dependencies": [
    {
      "id": "dep_1",
      "taskId": "task_2",
      "dependsOnId": "task_1",
      "type": "finish_to_start",
      "lagDays": 0,
      "createdAt": "2024-01-10T08:00:00Z"
    }
  ],
  "resources": [
    {
      "id": "res_1",
      "name": "Alice Designer",
      "email": "alice@example.com",
      "role": "UI/UX Designer",
      "availability": 1.0,
      "createdAt": "2024-01-10T08:00:00Z",
      "updatedAt": "2024-01-10T08:00:00Z"
    }
  ],
  "assignments": [
    {
      "id": "assign_1",
      "taskId": "task_1",
      "resourceId": "res_1",
      "allocatedHours": 40,
      "createdAt": "2024-01-10T08:00:00Z"
    }
  ]
}

Export Your Projects

Go to the Projects workspace to export your data in any format

Ecosystem Vision

PPX enables a world where your project data works everywhere

Gantt Charts

Timeline visualization with dependencies

Kanban Boards

Status-based task management

Calendar Apps

Deadlines and milestones

Team Tools

Resource allocation

For Developers

Implement PPX support in your application

Importing PPX

  1. 1 Parse JSON and validate format === "ppx"
  2. 2 Check version compatibility (semver)
  3. 3 Map tasks, dependencies to your data model
  4. 4 Store extensions in metadata for round-trip

Exporting PPX

  1. 1 Generate unique documentId for deduplication
  2. 2 Include generator info in meta
  3. 3 Use ISO 8601 for all timestamps
  4. 4 Put custom data in extensions field

Want to add PPX support to your tool? We'd love to help.