◍ New in 2.1 · Sync & Automation

Let AI fill your job search — hands-free.

Have an AI assistant like Claude gather jobs into a file, and CareerTimeline pulls them onto your timeline — with match scores, contacts, follow-ups and notes. Import once, or set up a folder on Mac that syncs automatically.

Requires CareerTimeline 2.1 or later · Your data still stays on your device

How it works
1
Ask your AI for a job file.
Paste the prompt below into Claude (or any assistant). Give it job postings, links, or a description of where you've applied — it writes a CareerTimeline JSON file.
2
Bring it into CareerTimeline.
On iPhone/iPad: Settings → Sync → Import JSON… On Mac: drop the file into your Sync folder and it imports on its own.
3
It lands on your timeline.
New jobs are added, existing ones are updated in place — nothing is ever deleted or overwritten with blanks. Re-importing the same file changes nothing.
📱 iPhone & iPad
Open Settings → Sync. Tap Import JSON… and pick the file, or Export JSON… to back everything up. Imported jobs sync to your other devices through iCloud.
💻 Mac — automatic
In Settings → Sync → Choose sync folder… pick any folder. CareerTimeline creates an inbox/ inside it — drop a JSON there and it imports within seconds, and keeps an up-to-date export/ you can share.
The prompt

Paste this into your AI assistant

Then give it job postings or links. It replies with a file you import.

Copy & paste
You help me track job applications in CareerTimeline (an iOS & Mac app).
When I paste a job posting or describe jobs I'm applying to, reply with ONLY
a JSON file — no explanation, no code fences — in exactly this format:

{
  "schemaVersion": 1,
  "source": "my-assistant",
  "generatedAt": "<current date-time in ISO 8601>",
  "applications": [
    {
      "externalId": "<stable id, e.g. linkedin:4459764860>",
      "company": "<required>",
      "role": "<required>",
      "location": "",
      "jobURL": "",
      "source": "",
      "postedDate": "YYYY-MM-DD",
      "appliedDate": "YYYY-MM-DD",
      "status": "saved|applied|interview|offer|rejected|withdrawn|backlog|skipped",
      "matchScore": 0,
      "salaryMin": 0, "salaryMax": 0, "currency": "EUR",
      "contact": { "name": "", "email": "", "phone": "" },
      "nextStep": "",
      "followUpDate": "YYYY-MM-DD",
      "notes": "",
      "tags": [],
      "timeline": [ { "date": "YYYY-MM-DD", "event": "", "note": "" } ]
    }
  ]
}

Rules:
- Only "company" and "role" are required. Omit any field you don't know.
- Give every job a stable "externalId" so later updates replace the same entry.
- Use ISO dates (YYYY-MM-DD). Keep salaries as plain numbers.
- Return one "applications" array containing every job.
Reference

The file format (schema v1)

Import and export use the same format. Unknown fields are ignored; every field except company and role is optional.

company        — text · required
role           — text · required
externalId     — stable id used to match & update the same job
jobURL         — used to match a job when there's no externalId
status         — saved · applied · interview · offer · rejected ·
                 withdrawn · backlog · skipped
matchScore     — 0–100
salaryMin/Max  — numbers · currency e.g. "EUR", "USD"
location · source · postedDate · appliedDate · notes
tags           — list of labels, merged into the job
contact        — { name, email, phone }
nextStep · followUpDate  — creates a "Follow up" task
timeline       — list of { date, event, note } entries

Tip: backlog and skipped aren't native statuses — they map to the closest one and add a matching tag, so nothing is lost.