{
  "snapi_template": 1,
  "name": "Job Listings & AI Screening",
  "description": "A real jobs board: post openings as records, candidates browse a live list pulled from your data, view one job's details, and apply — with AI writing a suggested fit score for the reviewer.",
  "root": "$f1",
  "forms": [
    {
      "token": "$f1",
      "name": "Careers Hub",
      "description": "Public careers page — lists open positions pulled live via a native Snapi Endpoint onload webhook, no external automation required",
      "icon": "fas fa-briefcase",
      "color": "#2551ed",
      "is_public": true,
      "auth_required": false,
      "success_message": "Submitted successfully.",
      "onload_webhook_url": "https://api.snapi.ca/api/v1/entities/$f2/records?filter_field=status&filter_value=Open",
      "onload_webhook_method": "POST",
      "config": {
        "fields": [
          {
            "name": "hub_title",
            "label": "Careers",
            "type": "title"
          },
          {
            "name": "hub_intro",
            "label": "Open positions, pulled live from our job postings. Click one to see the full description and apply.",
            "type": "subtitle"
          },
          {
            "name": "jobs_table",
            "label": "Open Positions",
            "type": "table",
            "tableColumns": [
              {
                "field": "title",
                "label": "Role"
              },
              {
                "field": "department",
                "label": "Department"
              },
              {
                "field": "location",
                "label": "Location"
              }
            ],
            "tableRowActions": [
              {
                "label": "View & Apply",
                "style": "primary",
                "type": "navigate",
                "targetEntityId": "$f3",
                "params": {
                  "job_id": "{{row.id}}"
                }
              }
            ]
          }
        ]
      },
      "persist_records": false
    },
    {
      "token": "$f2",
      "name": "Job Posting",
      "description": "Staff-only: create and manage job openings — this is what powers the public list",
      "icon": "fas fa-file-lines",
      "color": "#0ea5e9",
      "is_public": false,
      "auth_required": false,
      "success_message": "Submitted successfully.",
      "config": {
        "fields": [
          {
            "name": "title",
            "label": "Job Title",
            "type": "text",
            "required": true
          },
          {
            "name": "department",
            "label": "Department",
            "type": "text"
          },
          {
            "name": "location",
            "label": "Location",
            "type": "text"
          },
          {
            "name": "requirements",
            "label": "Requirements",
            "type": "textarea",
            "required": true
          },
          {
            "name": "status",
            "label": "Status",
            "type": "select",
            "options": [
              "Open",
              "Closed"
            ],
            "required": true
          }
        ]
      }
    },
    {
      "token": "$f3",
      "name": "Job Detail",
      "description": "Public, read-only view of one job posting — fed by a native Snapi Endpoint onload webhook using the job_id param, no external automation required",
      "icon": "fas fa-file-lines",
      "color": "#0ea5e9",
      "is_public": true,
      "auth_required": false,
      "success_message": "Submitted successfully.",
      "onload_webhook_url": "https://api.snapi.ca/api/v1/entities/$f2/records/:id?id_param=job_id",
      "onload_webhook_method": "POST",
      "config": {
        "fields": [
          {
            "name": "detail_title",
            "label": "Job Details",
            "type": "title"
          },
          {
            "name": "d_title",
            "label": "Role",
            "type": "display",
            "displayValue": "{{data.title}}"
          },
          {
            "name": "d_department",
            "label": "Department",
            "type": "display",
            "displayValue": "{{data.department}}"
          },
          {
            "name": "d_location",
            "label": "Location",
            "type": "display",
            "displayValue": "{{data.location}}"
          },
          {
            "name": "d_requirements",
            "label": "Requirements",
            "type": "display",
            "displayValue": "{{data.requirements}}"
          },
          {
            "name": "apply_btn",
            "label": "Apply for this role",
            "type": "button",
            "buttonActionType": "navigate",
            "buttonTargetKind": "form",
            "buttonTargetEntityId": "$f4",
            "buttonTargetParams": {
              "job_id": "{{params.job_id}}"
            },
            "buttonIcon": "fas fa-paper-plane",
            "buttonStyle": "primary"
          }
        ]
      }
    },
    {
      "token": "$f4",
      "name": "Application",
      "description": "The apply form — knows which job it's for via the job_id passed from the detail page",
      "icon": "fas fa-user-tie",
      "color": "#10b981",
      "is_public": true,
      "auth_required": false,
      "success_message": "Thanks for applying! We'll be in touch.",
      "default_board": "$b1",
      "default_column": "$c1",
      "onload_webhook_url": "https://api.snapi.ca/api/v1/entities/$f2/records/:id?id_param=job_id",
      "onload_webhook_method": "POST",
      "config": {
        "fields": [
          {
            "name": "app_title",
            "label": "Application",
            "type": "title"
          },
          {
            "name": "applying_for",
            "label": "Applying for",
            "type": "display",
            "displayValue": "{{data.title}}"
          },
          {
            "name": "app_number",
            "label": "Application #",
            "type": "sequence",
            "sequenceId": "$s1"
          },
          {
            "name": "job_id",
            "label": "Job",
            "type": "hidden",
            "defaultValue": "{{params.job_id}}"
          },
          {
            "name": "full_name",
            "label": "Full name",
            "type": "text",
            "required": true
          },
          {
            "name": "email",
            "label": "Email",
            "type": "email",
            "required": true
          },
          {
            "name": "resume",
            "label": "Resume",
            "type": "file",
            "required": true
          },
          {
            "name": "cover_letter",
            "label": "Why you're a fit",
            "type": "textarea",
            "required": true
          },
          {
            "name": "screening_result",
            "label": "AI screening (internal)",
            "type": "textarea",
            "internal": true
          }
        ]
      }
    }
  ],
  "boards": [
    {
      "token": "$b1",
      "name": "Applicants",
      "description": "New applications land in New. The n8n workflow writes an AI-suggested fit score onto each card; a human still makes the call by dragging it forward.",
      "nav_items": [
        {
          "name": "nav_hub",
          "label": "Careers page",
          "type": "button",
          "buttonActionType": "navigate",
          "buttonTargetKind": "form",
          "buttonTargetEntityId": "$f1",
          "buttonIcon": "fas fa-briefcase",
          "buttonStyle": "primary"
        }
      ],
      "columns": [
        {
          "token": "$c1",
          "name": "New",
          "color": "#0ea5e9",
          "position": 0
        },
        {
          "token": "$c2",
          "name": "Shortlisted",
          "color": "#f59e0b",
          "position": 1
        },
        {
          "token": "$c3",
          "name": "Interview",
          "color": "#10b981",
          "position": 2
        },
        {
          "token": "$c4",
          "name": "Rejected",
          "color": "#64748b",
          "position": 3
        }
      ]
    }
  ],
  "sequences": [
    {
      "token": "$s1",
      "name": "Application",
      "prefix": "APP-",
      "padding": 4
    }
  ]
}
