{
  "name": "Vibeworker Job Alert → AI Proposal → Gmail",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "vibeworker-job-alert",
        "options": {}
      },
      "id": "1f9b5a59-dbfd-49f9-9181-4e1dcfefa2dd",
      "name": "Vibeworker Job Alert",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2.1,
      "position": [0, 112]
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Job Title: {{ $json.body.job.title }}\n\nDescription:\n{{ $json.body.job.description }}\n\nBudget: {{ $json.body.job.budget.display }}\n\nClient: {{ $json.body.client.location }}, Payment Verified: {{ $json.body.client.paymentVerified }}, Total Spent: ${{ $json.body.client.totalSpent }}\n\nWrite a concise Upwork proposal for this job. Hook the client in the first line. Under 150 words. No generic openers.",
        "options": {
          "systemMessage": "You are an expert Upwork freelancer. Write compelling, personalized proposals that win contracts. Be direct, address the client's specific problem, and demonstrate you read the brief. Never use openers like 'I am writing to express my interest'."
        }
      },
      "id": "8f48d54a-ca8a-43cc-9077-e6f187f26132",
      "name": "Generate Proposal",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 3.1,
      "position": [224, 112]
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "openai/gpt-4o-mini"
        },
        "responsesApiEnabled": false,
        "options": {
          "maxTokens": 800
        }
      },
      "id": "5c22a096-9dfc-4180-aff2-77b4a666a574",
      "name": "OpenRouter AI",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.3,
      "position": [304, 336]
    },
    {
      "parameters": {
        "sendTo": "your@email.com",
        "subject": "=New Upwork Match: {{ $(\"Vibeworker Job Alert\").item.json.body.job.title }}",
        "message": "=<h2>New Job Match via Vibeworker</h2>\n<p><strong><a href=\"{{ $(\"Vibeworker Job Alert\").item.json.body.job.url }}\">{{ $(\"Vibeworker Job Alert\").item.json.body.job.title }}</a></strong></p>\n<p>Budget: {{ $(\"Vibeworker Job Alert\").item.json.body.job.budget.display }}</p>\n<p>Filter: {{ $(\"Vibeworker Job Alert\").item.json.body.filterName }}</p>\n<hr>\n<h3>Suggested Proposal</h3>\n<p style=\"white-space: pre-wrap;\">{{ $json.output }}</p>",
        "options": {
          "appendAttribution": false
        }
      },
      "id": "7efbb53b-7c23-4898-aea9-c95accb0b1c0",
      "name": "Send Job Alert Email",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.2,
      "position": [848, 176]
    }
  ],
  "connections": {
    "Vibeworker Job Alert": {
      "main": [
        [
          {
            "node": "Generate Proposal",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate Proposal": {
      "main": [
        [
          {
            "node": "Send Job Alert Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenRouter AI": {
      "ai_languageModel": [
        [
          {
            "node": "Generate Proposal",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "meta": {
    "templateCredsSetupCompleted": false
  }
}
