{
  "version": 1,
  "workflows": [
    {
      "name": "jobforge.apply",
      "description": "Plan safe US-eligible, one-role-per-company-month JobForge application dispatch rounds before Geometra/task work starts.",
      "roundSize": 2,
      "idFact": "id",
      "conflictFact": "companyKey",
      "requiredFacts": [
        "id",
        "company",
        "companyKey",
        "role",
        "companyRoleKey",
        "url",
        "score",
        "country_code",
        "region",
        "location_status"
      ],
      "sourceRequiredFacts": [
        "company",
        "companyKey",
        "role",
        "companyRoleKey",
        "url",
        "score",
        "country_code",
        "region",
        "location_status"
      ],
      "requireGateSources": true,
      "gatePolicy": {
        "skipStatuses": [
          "skip",
          "skipped"
        ],
        "blockStatuses": [
          "block",
          "blocked",
          "fail",
          "failed"
        ]
      },
      "preSteps": [
        {
          "id": "geometra-cleanup",
          "label": "Disconnect stale Geometra sessions before dispatch",
          "command": "only when no workers are active: geometra_list_sessions; for each returned sessions[].id, geometra_disconnect({ sessionId: \"<id>\", closeBrowser: true }); if sessions[] is empty, make no disconnect call"
        }
      ],
      "postSteps": [
        {
          "id": "merge",
          "label": "Merge tracker TSV outcomes",
          "command": "npx job-forge merge"
        },
        {
          "id": "verify",
          "label": "Verify tracker integrity",
          "command": "npx job-forge verify"
        }
      ]
    }
  ]
}
