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.jsonFull-fidelity project exchange. Preserves all data including dependencies, resources, and critical path info.
iCalendar
.icsImport into Google Calendar, Apple Calendar, Outlook, and any calendar app that supports iCal.
CSV Export
.csvOpen in Excel, Google Sheets, or any spreadsheet. Perfect for reporting and analysis.
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) |
| meta | Export metadata |
| project | Project definition |
| tasks | Array of tasks |
| dependencies | Task relationships |
| resources? | Team members |
| assignments? | Task assignments |
File Info
application/vnd.ppx+json.ppx.jsonUTF-8Task Schema
Core Fields
| id | Unique identifier |
| projectId | Parent project |
| parentId? | For hierarchy (WBS) |
| name | Task name |
| status | Task status |
| priority | Priority level |
| progress | 0-100 percentage |
Status Values
not_started → backlogin_progress → doingcompleted → doneblocked → blockedcancelled → archivedDependency Schema
Fields
| id | Unique identifier |
| taskId | Successor task |
| dependsOnId | Predecessor task |
| type | Dependency type |
| lagDays | Delay in days |
Dependency Types
finish_to_startstart_to_startfinish_to_finishstart_to_finishExample 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"
}
]
}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 Parse JSON and validate
format === "ppx" - 2 Check version compatibility (semver)
- 3 Map tasks, dependencies to your data model
- 4 Store extensions in metadata for round-trip
Exporting PPX
- 1 Generate unique documentId for deduplication
- 2 Include generator info in meta
- 3 Use ISO 8601 for all timestamps
- 4 Put custom data in extensions field
Want to add PPX support to your tool? We'd love to help.