{
  "name": "Automate assignee payroll calculations with Dart, Gemini AI, and Google Sheets",
  "nodes": [
    {
      "id": "cf6f064d-c4a5-4ac3-81fb-b4fe8cbf110e",
      "name": "List tasks",
      "type": "n8n-nodes-dart.dart",
      "position": [
        336,
        0
      ]
    },
    {
      "id": "a9a2c117-2981-4dc8-93d4-f7d811901503",
      "name": "Get row(s) in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        720,
        0
      ]
    },
    {
      "id": "c9112e57-9c89-4bb8-98c9-3bfffa550381",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        912,
        0
      ]
    },
    {
      "id": "f6c98556-1d4e-414c-8281-c30009972a19",
      "name": "AI SCANNER",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1296,
        64
      ]
    },
    {
      "id": "a6b7a2e9-ed77-48df-810c-715fce778944",
      "name": "Assignee & Time Scanner",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1328,
        -96
      ]
    },
    {
      "id": "a322cf36-724b-4c55-a4d7-f011dc93b551",
      "name": "Parse Output",
      "type": "n8n-nodes-base.code",
      "position": [
        1856,
        -64
      ]
    },
    {
      "id": "3f4a509f-1763-4498-a629-e8365df50a33",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -560,
        -336
      ],
      "parameters": {
        "width": 544,
        "height": 608,
        "content": "## Task-YOUR_OPENAI_KEY_HERE Assignee billing via Time Tracking\nThis workflow automates billing by scanning a target Dartboard on schedule, aggregating time logs from completed tasks, cross‑referencin"
      }
    },
    {
      "id": "75d9a88e-2c2a-4674-aa7f-f7642103101f",
      "name": "Append row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2304,
        16
      ]
    },
    {
      "id": "5667f473-6178-428c-a7f4-be807d1c3c6d",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        128,
        0
      ]
    },
    {
      "id": "35165310-b834-448b-bbaa-1146e8a71a2b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        64,
        -240
      ],
      "parameters": {
        "width": 448,
        "height": 432,
        "content": "## 1. Workflow launch through schedule\nTriggered by a preferred schedule (e.g. weekly, monthly, etc...)\n\n### Scanning of tasks\nThis step will scan and list all tasks in the target Dartboard. \n- Main g"
      }
    },
    {
      "id": "38bfedda-9295-4b83-b882-2562720f3c58",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        -240
      ],
      "parameters": {
        "width": 448,
        "height": 432,
        "content": "## 2. Gathering of data in the target Spreadsheet\nThis step scans all data in the spreadsheet. Goal is for the AI agent to able to scan for the pre-set column headers, assignee name, and hourly rate."
      }
    },
    {
      "id": "1c5cf871-4d3a-4458-8551-8bf4a25a2c9b",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1216,
        -272
      ],
      "parameters": {
        "width": 448,
        "height": 480,
        "content": "## 3. AI time tracking calculator agent\nThis agent calculates employee payroll by cross-referencing the connected spreadsheet with Dart task logs. It filters specifically for tasks marked \"Done\", sums"
      }
    },
    {
      "id": "c33ea72c-8b49-4cf4-8d07-c967704eea0f",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1760,
        -208
      ],
      "parameters": {
        "width": 304,
        "height": 336,
        "content": "## 4. Parsing the AI output\nParse output into a usable format for the next node.\n"
      }
    },
    {
      "id": "a1c2c8ae-ebe5-4092-8b03-9cd137cefc68",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2160,
        -288
      ],
      "parameters": {
        "width": 400,
        "height": 480,
        "content": "## 5. Push output into the target Spreadsheet\nThis node will push the output data into the connected google spreadsheet.\n\n### Output each Assignee\n- Total time tracked\n- Total pay that is multiplied w"
      }
    }
  ],
  "connections": {
    "Aggregate": {
      "main": [
        [
          {
            "node": "Assignee & Time Scanner",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI SCANNER": {
      "ai_languageModel": [
        [
          {
            "node": "Assignee & Time Scanner",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "List tasks": {
      "main": [
        [
          {
            "node": "Get row(s) in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse Output": {
      "main": [
        [
          {
            "node": "Append row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "List tasks",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Assignee & Time Scanner": {
      "main": [
        [
          {
            "node": "Parse Output",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}