Every business tracks goals somewhere - a spreadsheet, a Notion page, a slide deck that gets updated quarterly if someone remembers. The problem isn’t tracking. It’s that none of these formats let AI agents do anything useful with the data.

You don’t need a separate “AI-friendly” format. You need a single format that’s explicit enough for both.

I wanted my AI agents to be able to answer “are we on track for Q1?” without me translating between a human-readable goal doc and something structured enough for a machine to process. So I built a YAML-based OKR system.

The Structure

objectives:
  - id: T1
    title: "Scale revenue to $585K"
    key_results:
      - id: T1-1
        title: "Monthly recurring revenue"
        target: 48750
        actual: 41200
        unit: "$"
        frequency: monthly

initiatives:
  - id: I1
    objective: T1
    title: "Launch subscription program"
    status: in-progress
    tasks:
      - id: I1-T1
        title: "Build billing integration"
        status: done

Hierarchy: Annual Objectives -> Key Results -> Initiatives -> Tasks. Plus Support Functions and Team Quarterly OKRs with weekly tracking.

Why YAML

Not because it’s trendy. Because:

  • AI agents can parse it without custom tooling
  • Humans can read and edit it in any text editor
  • Git tracks changes (who updated what, when)
  • No database, no API, no SaaS subscription

What the Agents Do With It

Two companion agents:

  • Onboarding agent - walks you through setting up objectives, KRs, initiatives, org chart via guided Q&A. Generates all the YAML.
  • Weekly review agent - reads the YAML, asks for updated actuals, assesses progress, generates a CEO-ready narrative email with CSV attachment.

The weekly review takes 10 minutes instead of an hour. The agent reads last week’s numbers, asks what changed, and drafts the summary. I edit for tone and send.

The Insight

The goal formats that humans find useful are the same ones AI can act on - if you structure them right. Most goal systems are for humans to read and AI to ignore. The fix isn’t a new format. It’s tightening the format you already have until it’s explicit enough for both.