Demo with a fictional team and goals · independent portfolio project, not affiliated with any company.
Founder OS · OKR → Linear Planner
Monthly goals in, a capacity-checked Linear plan out

API

Both endpoints are plain JSON so the planner can run from a Zapier/Make/n8n schedule, for example on the first Monday of each month, reading the goals from Notion.

POST /api/plan

Goals + team in, plan out: projects, issues (estimate, owner, cycle, priority, blockers) and cycles. Uses Claude when ANTHROPIC_API_KEY is set, playbooks otherwise.

curl -X POST https://okr-to-linear.vercel.app/api/plan   -H "Content-Type: application/json"   -d '{
    "month": "2026-10",
    "goals": [{ "id": "g1", "line": "clinical", "text": "Sign 2 health-system pilot LOIs" }],
    "team": [{ "id": "sam", "name": "Sam Rivera", "role": "CEO", "skills": ["partnerships"], "capacity": 8 }]
  }'

POST /api/linear/push

Creates the plan in Linear: projectCreate per goal, issueCreate per issue, issueRelationCreate (type blocks) per dependency. Workspace users and cycles are matched by name and date. Without LINEAR_API_KEY and LINEAR_TEAM_ID it returns the exact operations as a dry run.

curl -X POST https://okr-to-linear.vercel.app/api/linear/push   -H "Content-Type: application/json"   -d '{ "plan": <plan from /api/plan>, "team": [...] }'