PerfCopilot
HomeDocs
Documentation

Everything you need to write a fair review.

From your first connection to a sealed, delivered review. Set up PerfCopilot, connect your tools, and generate your first cited draft.

Perdoo Goals

Perdoo is an OKR platform with Objectives containing Key Results. PerfCopilot syncs both: Objectives become Goal rows, Key Results become GoalKeyResult rows.

One notable difference from other goal providers: Perdoo uses Authorization: Token <api_key> (not Bearer) in its auth header.

What we pull

  • Objectives: fetched from GET /objectives/?owner=<user_id>. Perdoo uses Django REST Framework pagination (results array). Fields: name or title, description (capped at 1,000 characters), status, start_date/end_date or due_date, created_at.
  • Key Results: pulled from the key_results or results array on each Objective. Fields: id, name, status, target_value or target.

Status mapping:

Perdoo statusPerfCopilot
successful, completed, done, achievedcompleted
behind, at_riskat_risk
unsuccessful, off_track, missedoff_track
ongoing / anything elseon_track

unsuccessful maps to off_track; ongoing maps to on_track.

Connecting

  1. Go to /admin?tab=integrations, find the Perdoo card.
  2. Get your API key from Perdoo: Settings → API (requires Perdoo admin access). Token auth, not OAuth.
  3. Enter the key in the integration card. Base URL defaults to https://app.perdoo.com/api/v3.
  4. Map each employee's Perdoo user ID in the unmapped-employees list.

What hits a review

Goals and Key Results appear in the [GOALS] block of the review prompt.

Troubleshooting

Auth errors (401): confirm you're using Token <key> auth. Perdoo does not use Bearer. The PerfCopilot ingester handles this correctly, but if you're testing the API directly, use Authorization: Token <your-key>.

Zero objectives: the owner query parameter must match the employee's Perdoo user ID exactly. Perdoo user IDs are UUIDs visible in the URL when viewing a user in Perdoo admin.

Key Results under results vs key_results: the ingester checks both field names. If Perdoo's v3 API uses a different field, KRs won't appear. Verify the field name in Perdoo's API docs or contact support.

Privacy notes

  • Objective descriptions are stored up to 1,000 characters and visible to managers.
  • The hard cap is 200 objectives per employee per sync. Orgs with very active OKR cycles should confirm active objective counts stay under this limit.