{
  "createdAt": "2025-10-09T11:26:25.490Z",
  "updatedAt": "2025-10-13T19:19:11.002Z",
  "id": "laDvQh1s3f8r5lC6",
  "name": "Workana AI Agent: Project Analyzer-v2",
  "active": false,
  "isArchived": false,
  "nodes": [
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        -1120,
        720
      ],
      "id": "4ed309c9-f9c5-4fd0-ad7d-d9aa7d40b6a8",
      "name": "When clicking \u2018Execute workflow\u2019"
    },
    {
      "parameters": {
        "documentId": {
          "__rl": true,
          "value": "1h53dXXxOlcFdRCiWS8fiyrysty_xz44zHqrauwQ2Cio",
          "mode": "list",
          "cachedResultName": "Jobs Workana",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1h53dXXxOlcFdRCiWS8fiyrysty_xz44zHqrauwQ2Cio/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "projects",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1h53dXXxOlcFdRCiWS8fiyrysty_xz44zHqrauwQ2Cio/edit#gid=0"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        -576,
        528
      ],
      "id": "2fed64db-0c4d-4a1d-afcd-e51ee921e041",
      "name": "Get row(s) in sheet",
      "executeOnce": true,
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "aggregate": "aggregateAllItemData",
        "destinationFieldName": "projects",
        "options": {}
      },
      "type": "n8n-nodes-base.aggregate",
      "typeVersion": 1,
      "position": [
        0,
        528
      ],
      "id": "e9e76e7c-2e88-40e3-8f18-2aba244e018a",
      "name": "Aggregate"
    },
    {
      "parameters": {},
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "typeVersion": 1.1,
      "position": [
        -1968,
        416
      ],
      "id": "74fbef14-e900-4666-a33d-d5951aa908a4",
      "name": "Think"
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=You're a helpful and intelligent freelance career coach. Analyze the projects provided and return only the top five, as instructed by the System. Use information about me to refine the fit when necessary.",
        "hasOutputParser": true,
        "options": {
          "systemMessage": "=** Purpose **\n\nYou are an automation and lightweight development specialist focused on quick wins (Pareto 80/20). Your mission is to select and analyze Workana projects for a beginner freelancer with a background in ADS, a postgraduate degree in Data/AI, and basic knowledge of n8n, Python, JavaScript, PHP, and website development. Prioritize low- to medium-complexity projects with a clear scope and fast delivery, maximizing the chances of 5 stars and first wins.\n\n** Instructions  **\n\nAnalyze up to 100 projects provided in the input (JSON array).\nIgnore projects with \"done\" or \"rejected\" status.\nPrioritize projects with up to 5 proposals and up to 10 interested parties.\nPrioritize low or medium complexity.\nPenalize projects with vague scope, too many integrations, unrealistic deadlines, \"I need everything\" without assets, or a budget too low for the effort.\n* Use only the data  provided for your analysis and Use the same project ID for later identification. Do not make up information. *\nAlways respond in Portuguese (pt-BR).\nOutput: JSON only (UTF-8), no additional text.\nEvaluation criteria (score 0\u20135 internally and select the 5 with the highest sum)\n\nSkills compliance: n8n/simple automation; Python scripts; JS/PHP tweaks; WordPress/simple websites; basic data tasks.\nSimplicity: clear scope, few features, minimal integrations.\nSpeed: possible in 5\u201310 days.\nLeverage: reusability (templates/scripts) and portfolio value.\nBudget: fair for 1\u20132 weeks of work, considering the \"budget\" field.\nClient clarity: objective requirements, realistic tone, plausible deadlines.\n\n** Complexity rules **\n\nLow: one integration or one script; simple website tweaks; form automation; CSV/Excel cleanup; API \u2192 Google Sheets via n8n; chatbot FAQ with provided content.\nMedium: two integrations; small endpoints; WordPress theme/plugin tweaks; data ingestion + simple charts; ETL scheduled in n8n.\nExclude: full-featured mobile apps, complex SaaS, multi-tenant, advanced ML, deep backends, major redesigns, full-featured e-commerce.\n\n** Price heuristics (BRL) for reference **\n\nLow: 80\u2013300\nMedium: 300\u2013900\nMentally adjust for urgency, language, and scope. If the budget is incompatible, flag it under \"risks.\" \n\nExpected input (JSON array):\n[\n{\n\"id\": \"string\",\n\"title\": \"string\",\n\"published_at\": \"DD-MM-YYYY\",\n\"description\": \"string\",\n\"budget\": \"number|string\",\n\"category\": \"string\",\n\"subcategory\": \"string\",\n\"skills\": [\"string\", \"...\"],\n\"scope\": \"string\",\n\"delivery_date\": \"DD-MM-YYYY|string\",\n\"user_name\": \"string\",\n\"user_link\": \"string\",\n\"user_projects_published\": number,\n\"user_projects_paid\": number,\n\"user_member_since\": \"string\",\n\"proposals\": number,\n\"interested\": number,\n\"project_link\": \"string\",\n\"proposal_link\": \"string\",\n\"question_link\": \"string\",\n\"status\": \"open|done|rejected|...\"\n}\n]\n\nAbout me:\n{{ $('Set Variable').item.json.aboutMe }}\n\n** Output Format ** \n\nReturn only the following JSON format (no additional text):\n\n{\n   \"best_projects\":[\n      {\n         \"id\":\"string\",\n         \"title\":\"string\",\n         \"description\":\"string\",\n         \"complexity\":\"string\",\n         \"your_analyze\":\"string\",\n         \"why_fit\":[\n            \"bullet 1\",\n            \"bullet 2\"\n         ],\n         \"scope_outline\":[\n            \"bullet 1\",\n            \"bullet 2\",\n            \"bullet 3\"\n         ],\n         \"delivery_time_estimate\":\"string\",\n         \"price_range\":\"string\",\n         \"risks\":[\n            \"bullet 1\"\n         ],\n         \"recommendations\":[\n            \"bullet 1\",\n            \"bullet 2\",\n            \"bullet 3\"\n         ],\n         \"meta\":{\n            \"project_link\":\"string\",\n            \"budget_input\":\"raw budget from input\",\n            \"proposals\":\"number\",\n            \"interested\":\"number\",\n            \"posted_days_ago\":\"number\"\n         }\n      }\n   ]\n}\n\n** Additional selection rules **\n\nIf there are fewer than 5 eligible projects, return only the qualified ones.\nNormalize complexity to \"low\" or \"medium\" according to complexity rules.\nFill in posted_days_ago by calculating from published_at when possible; if missing, omit the field.\nIn recommendations, include actionable steps and concrete tools (e.g., n8n nodes, Python libraries, WP plugins).\nIn risks, flag possible access/asset dependencies (e.g., credentials, copy, API docs) and budget misalignment. \n\nMinimal output example:\n{\n\"best_projects\": [\n{\n\"id\": \"123\",\n\"title\": \"Integra\u00e7\u00e3o de formul\u00e1rio \u2192 Planilhas Google (n8n)\",\n\"description\": \"Colete leads do site e envie para o Planilhas diariamente.\",\n\"complexity\": \"low\",\n\"your_analyze\": \"Este projeto \u00e9 altamente vi\u00e1vel devido \u00e0 simplicidade do n8n e \u00e0 integra\u00e7\u00e3o direta com o Google Sheets. A automa\u00e7\u00e3o proposta n\u00e3o apenas economiza tempo, mas tamb\u00e9m minimiza erros humanos ao coletar e organizar dados. Com um or\u00e7amento acess\u00edvel e um cronograma de entrega r\u00e1pido, ele se encaixa bem nas necessidades de pequenas empresas que buscam otimizar seus processos de captura de leads.\",\n\"why_fit\": [\n\"Aderente \u00e0 N8N e automa\u00e7\u00e3o simples\",\n\"Entrega r\u00e1pida com alto valor para o cliente\"\n],\n\"scope_outline\": [\n\"Configurar webhook no n8n\",\n\"Mapear campos e validar dados\",\n\"Agendar tarefa e registrar logs\"\n],\n\"delivery_time_estimate_days\": 3,\n\"price_range_brl\": \"R$150 \u2013 300\",\n\"risks\": [\n\"\u00c9 necess\u00e1rio acesso ao site e ao Google\"\n],\n\"recommendations\": [\n\"Usar gatilho HTTP n8n + Planilhas Google\",\n\"Adicionar novas tentativas e notifica\u00e7\u00e3o por e-mail\",\n\"Documentar no arquivo README com capturas de tela\"\n],\n\"meta\": {\n\"project_link\": \"https://www.workana.com/.../123\",\n\"budget_input\": \"R$200\",\n\"proposals\": 2,\n\"interested\": 4,\n\"posted_days_ago\": 1\n}\n}\n]\n}\n\n \nInput Data:\n{{ JSON.stringify($json.projects ) }} "
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.9,
      "position": [
        -2080,
        224
      ],
      "id": "2358ea78-8ae3-44ad-8f6d-6b3a6799884e",
      "name": "Career Coach Agent"
    },
    {
      "parameters": {
        "content": "## \ud83e\udd16 STEP 2: Freelancer Project Analyzer\n\nAgent that analyzes opportunities on freelance platforms: Workana\n\n## **Objective**\nAnalyze work projects and return a structured JSON file with the project that best fits the profile.\n\n## **How \u200b\u200bit Works**\n\n### 1. **Data Input**:\nReceives information about projects, including ID, title, description, complexity, and status.\n\n### 2. **Selection Criteria**:\n- Ignore projects with \"done\" or \"rejected\" status.\n- Select only projects of low or medium complexity.\n- Prioritize projects with up to 5 proposals and 10 interested parties.\n\n### 3. **Analysis**:\nProvide an analysis highlighting the best 5 project's potential and how it can increase the chances of success.  \n\n### 4. **Output Format**:\nReturns a JSON file with the following fields: ID, title, description, complexity, and analysis.\n",
        "height": 768,
        "width": 420
      },
      "id": "02d4b65b-18e1-4b5e-898a-8e9eb3155863",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1648,
        160
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "documentId": {
          "__rl": true,
          "value": "1h53dXXxOlcFdRCiWS8fiyrysty_xz44zHqrauwQ2Cio",
          "mode": "list",
          "cachedResultName": "Jobs Workana",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1h53dXXxOlcFdRCiWS8fiyrysty_xz44zHqrauwQ2Cio/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "projects",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1h53dXXxOlcFdRCiWS8fiyrysty_xz44zHqrauwQ2Cio/edit#gid=0"
        },
        "filtersUI": {
          "values": [
            {
              "lookupColumn": "id",
              "lookupValue": "={{ $json.id }}"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        1088,
        544
      ],
      "id": "35a04b98-2883-4164-8cb8-a855ac77ff76",
      "name": "Get row(s) in sheet1",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "update",
        "documentId": {
          "__rl": true,
          "value": "1h53dXXxOlcFdRCiWS8fiyrysty_xz44zHqrauwQ2Cio",
          "mode": "list",
          "cachedResultName": "Jobs Workana",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1h53dXXxOlcFdRCiWS8fiyrysty_xz44zHqrauwQ2Cio/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": "gid=0",
          "mode": "list",
          "cachedResultName": "projects",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1h53dXXxOlcFdRCiWS8fiyrysty_xz44zHqrauwQ2Cio/edit#gid=0"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "id": "={{ $json.id }}",
            "status": "in progess"
          },
          "matchingColumns": [
            "id"
          ],
          "schema": [
            {
              "id": "id",
              "displayName": "id",
              "required": false,
              "defaultMatch": true,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "project_link",
              "displayName": "project_link",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "title",
              "displayName": "title",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "published_at",
              "displayName": "published_at",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "displayName": "description",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "budget",
              "displayName": "budget",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "category",
              "displayName": "category",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "subcategory",
              "displayName": "subcategory",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "skills",
              "displayName": "skills",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "scope",
              "displayName": "scope",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "prazo_entrega",
              "displayName": "prazo_entrega",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "proposal_link",
              "displayName": "proposal_link",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "question_link",
              "displayName": "question_link",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "user_name",
              "displayName": "user_name",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "user_link",
              "displayName": "user_link",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "user_projects_published",
              "displayName": "user_projects_published",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "user_projects_paid",
              "displayName": "user_projects_paid",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "user_member_since",
              "displayName": "user_member_since",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "proposals",
              "displayName": "proposals",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "interested",
              "displayName": "interested",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "displayName": "status",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "displayName": "row_number",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "number",
              "canBeUsedToMatch": true,
              "readOnly": true,
              "removed": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        1264,
        544
      ],
      "id": "0a3392b2-bb3e-43a4-950d-57d94e4a4985",
      "name": "Update row in sheet",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "1h53dXXxOlcFdRCiWS8fiyrysty_xz44zHqrauwQ2Cio",
          "mode": "list",
          "cachedResultName": "Jobs Workana",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1h53dXXxOlcFdRCiWS8fiyrysty_xz44zHqrauwQ2Cio/edit?usp=drivesdk"
        },
        "sheetName": {
          "__rl": true,
          "value": 1879327603,
          "mode": "list",
          "cachedResultName": "analysis",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1h53dXXxOlcFdRCiWS8fiyrysty_xz44zHqrauwQ2Cio/edit#gid=1879327603"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "id": "={{ $json.id }}",
            "title": "={{ $json.title }}",
            "description": "={{ $json.description }}",
            "complexity": "={{ $json.complexity }}",
            "analysis": "={{ $json.your_analyze }}",
            "why_fit": "=- {{ $json.why_fit[0] }}\n- {{ $json.why_fit[1] }}",
            "delivery_time_estimate": "={{ $json.delivery_time_estimate }}",
            "scope_outline": "=- {{ $json.scope_outline[0] }}\n- {{ $json.scope_outline[1] }}\n- {{ $json.scope_outline[2] }}",
            "price_range": "={{ $json.price_range }}",
            "recommendations": "=- {{ $json.recommendations[0] }}\n- {{ $json.recommendations[1] }}\n- {{ $json.recommendations[2] }}",
            "risks": "=- {{ $json.risks[0] }}\n- {{ $json.risks[1] }}",
            "date": "={{ $now.toFormat(\"dd/MM/yyyy\") }}",
            "status": "Prospecting/Lead Generation"
          },
          "matchingColumns": [
            "id"
          ],
          "schema": [
            {
              "id": "id",
              "displayName": "id",
              "required": false,
              "defaultMatch": true,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "title",
              "displayName": "title",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "displayName": "description",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "complexity",
              "displayName": "complexity",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "date",
              "displayName": "date",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "analysis",
              "displayName": "analysis",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "why_fit",
              "displayName": "why_fit",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "scope_outline",
              "displayName": "scope_outline",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "delivery_time_estimate",
              "displayName": "delivery_time_estimate",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "price_range",
              "displayName": "price_range",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "risks",
              "displayName": "risks",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            },
            {
              "id": "recommendations",
              "displayName": "recommendations",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "displayName": "status",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        912,
        544
      ],
      "id": "e27908e5-4148-41bd-8d7e-a11f27f7b6f3",
      "name": "Append row in sheet",
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "c3a802d6-565b-4281-9190-5499b68dfd2f",
              "leftValue": "={{ $json.status }}",
              "rightValue": "todo",
              "operator": {
                "type": "string",
                "operation": "equals",
                "name": "filter.operator.equals"
              }
            },
            {
              "id": "7fcd3280-2817-4572-91f7-e70461f1cfaf",
              "leftValue": "={{ $json.published_at }}",
              "rightValue": "={{ $now.toFormat('dd/MM/yyyy') }}",
              "operator": {
                "type": "string",
                "operation": "equals"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.filter",
      "typeVersion": 2.2,
      "position": [
        -208,
        528
      ],
      "id": "0ca178e2-9a0d-4e94-a7c5-6706afb6261d",
      "name": "Filter"
    },
    {
      "parameters": {
        "maxItems": 100
      },
      "type": "n8n-nodes-base.limit",
      "typeVersion": 1,
      "position": [
        -400,
        528
      ],
      "id": "e4ae525f-145b-431e-8c14-87f130f9ae69",
      "name": "Limit"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 3,
      "position": [
        688,
        528
      ],
      "id": "aaa1fe33-d7ba-4f6c-8d4c-0c44b20e2ce0",
      "name": "Loop Over Items"
    },
    {
      "parameters": {
        "jsCode": "let projects = [];\n\n// 1) Tenta ler como objeto JSON da entrada\ntry {\n  const output = $input.first()?.json?.output;\n\n  if (typeof output === \"string\" && output.trim().length > 0) {\n    const parsed = JSON.parse(output);\n    if (parsed.best_projects && Array.isArray(parsed.best_projects)) {\n      projects = parsed.best_projects.map(p => ({\n        id: String(p.id ?? \"\"),\n        title: String(p.title ?? \"\"),\n        description: String(p.description ?? \"\"),\n        complexity: String(p.complexity ?? \"\"),\n        your_analyze: String(p.your_analyze ?? \"\"),\n        why_fit: Array.isArray(p.why_fit) ? p.why_fit : [],\n        scope_outline: Array.isArray(p.scope_outline) ? p.scope_outline : [],\n        delivery_time_estimate: String(p.delivery_time_estimate ?? \"\"),\n        price_range: String(p.price_range ?? \"\"),\n        risks: Array.isArray(p.risks) ? p.risks : [],\n        recommendations: Array.isArray(p.recommendations) ? p.recommendations : [],\n        meta: {\n          project_link: String(p.meta?.project_link ?? \"\"),\n          budget_input: String(p.meta?.budget_input ?? \"\"),\n          proposals: Number(p.meta?.proposals ?? 0),\n          interested: Number(p.meta?.interested ?? 0),\n          posted_days_ago: Number(p.meta?.posted_days_ago ?? 0)\n        }\n      }));\n    }\n  }\n} catch (e) {\n  // ignore\n}\n\n// 2) Retornar apenas os objetos dos projetos\nconst result = [];\nfor (let i = 0; i < 5; i++) {\n  if (projects[i]) {\n    result.push(projects[i]);\n  } else {\n    result.push({\n      id: \"\",\n      title: \"\",\n      description: \"\",\n      complexity: \"\",\n      your_analyze: \"\",\n      why_fit: [],\n      scope_outline: [],\n      delivery_time_estimate: \"\",\n      price_range: \"\",\n      risks: [],\n      recommendations: [],\n      meta: {\n        project_link: \"\",\n        budget_input: \"\",\n        proposals: 0,\n        interested: 0,\n        posted_days_ago: 0\n      }\n    });\n  }\n}\n\n// Output\nreturn result;"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        496,
        528
      ],
      "id": "39fbe514-fab0-4b61-ac44-7893dccfe867",
      "name": "Code1",
      "alwaysOutputData": true
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "GPT-5-mini",
          "mode": "list",
          "cachedResultName": "GPT-5-mini"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        -2112,
        400
      ],
      "id": "41850ffe-cd41-4a37-96f5-773f95c9b06d",
      "name": "GPT-5-mini Chat Model",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "=Voc\u00ea \u00e9 um coach de carreira freelancer prestativo e inteligente. Utilize os dados e regras do System para selecionar e analisar os melhores projetos.\n\nSobre mim (aboutMe):\n{{ $('Set Variable').item.json.aboutMe || 'N\u00e3o informado' }}\n\nInput Data (projects JSON):\n{{ JSON.stringify($json.projects || []) }}\n\nInstru\u00e7\u00f5es de processamento\n\nCarregue o array de projetos do bloco \"Input Data\".\nSe n\u00e3o houver projetos (array vazio ou ausente), retorne:\n{ \"best_projects\": [] }\n\nPara cada projeto, considere os poss\u00edveis campos:\nid, title, published_at, description, budget, category, subcategory, skills, scope, delivery_date, user_name, user_link, user_projects_published, user_projects_paid, user_member_since, proposals, interested,project_link, proposal_link, question_link, status.\n\nAplique os filtros e a pontua\u00e7\u00e3o; selecione at\u00e9 5 com maior score.\nMonte a sa\u00edda no schema exigido.\nGaranta que \"id\" em cada item seja exatamente o mesmo do input.\n\nNotas de seguran\u00e7a\n\nResponder somente JSON sem coment\u00e1rios.\nN\u00e3o incluir exemplo ou texto explicativo.\nSem URLs externas al\u00e9m das recebidas no input.\nExemplo de retorno v\u00e1lido m\u00ednimo quando n\u00e3o h\u00e1 eleg\u00edveis\n{ \"best_projects\": [] }\n",
        "hasOutputParser": true,
        "options": {
          "systemMessage": "=Voc\u00ea \u00e9 um especialista em automa\u00e7\u00e3o e desenvolvimento leve focado em ganhos r\u00e1pidos (Pareto 80/20). Sua miss\u00e3o \u00e9 selecionar e analisar projetos da Workana para um freelancer iniciante (forma\u00e7\u00e3o em ADS, p\u00f3s em Dados/IA, conhecimentos b\u00e1sicos em n8n, Python, JavaScript, PHP sistemas web e websites). Priorize projetos de baixa a m\u00e9dia complexidade, com escopo claro e entrega r\u00e1pida, maximizando chances de 5 estrelas, primeiras conquistas e gera\u00e7\u00e3o de caixa.\n\n** Regras gerais **\n\nAnalise at\u00e9 100 projetos fornecidos no input (array JSON).\nUse apenas os dados fornecidos. N\u00e3o invente informa\u00e7\u00f5es.\nIgnore projetos com status \"done\", \"in progess\" e \"rejected\".\nPriorize projetos com at\u00e9 5 propostas e at\u00e9 10 interessados.\nPriorize complexidade baixa ou m\u00e9dia (normalize para \"baixa\" ou \"m\u00e9dia\").\nPenalize: escopo vago, integra\u00e7\u00f5es demais, prazos irreais, \u201cpreciso de tudo\u201d sem assets, or\u00e7amento incompat\u00edvel.\nSempre responda em Portugu\u00eas (pt-BR).\nResponda SOMENTE JSON (UTF-8), sem qualquer texto adicional.\n\n** Crit\u00e9rios de avalia\u00e7\u00e3o (pontue internamente 0\u20135; selecione os 5 melhores no total): **\n\nAder\u00eancia de habilidades: n8n/automa\u00e7\u00e3o simples; scripts Python; ajustes JS/PHP; WordPress/websites simples; tarefas b\u00e1sicas de dados.\nSimplicidade: escopo claro, poucas features, poucas integra\u00e7\u00f5es.\nVelocidade: vi\u00e1vel em 5\u201310 dias.\nAlavancagem: reutiliza\u00e7\u00e3o (templates/scripts) e valor de portf\u00f3lio.\nOr\u00e7amento: coerente com esfor\u00e7o (campo \"budget\").\nClareza do cliente: requisitos objetivos, tom realista.\n\n** Regras de complexidade **\n\nBaixa: 1 integra\u00e7\u00e3o ou 1 script; ajustes simples em site; automa\u00e7\u00e3o de formul\u00e1rio; limpeza de CSV/Excel; API \u2192 Google Sheets (n8n); chatbot FAQ com conte\u00fado fornecido.\nM\u00e9dia: 2 integra\u00e7\u00f5es; endpoints simples; ajustes de tema/plugin WP; ingest\u00e3o + gr\u00e1ficos simples; ETL agendado em n8n.\nExcluir: app mobile completo; SaaS complexo; multi-tenant; ML avan\u00e7ado; backends profundos; redesign grande; e-commerce completo.\n\n** Heur\u00edsticas de pre\u00e7o (BRL) **\n\nBaixa: 80\u2013300\nM\u00e9dia: 300\u2013900\nSe \"budget\" incompat\u00edvel, sinalize em \"risks\".\n\n** Sa\u00edda JSON (somente): **\n{\n\"best_projects\": [\n{\n\"id\": \"string (EXATAMENTE o id do input)\",\n\"title\": \"string\",\n\"description\": \"string\",\n\"complexity\": \"baixa\" | \"m\u00e9dia\",\n\"your_analyze\":\"string\",\n\"why_fit\": [\"bullet\", \"bullet\"],\n\"scope_outline\": [\"bullet\", \"bullet\", \"bullet\"],\n\"delivery_time_estimate_days\": 3,\n\"price_range_brl\": \"R$150 \u2013 300\",\n\"risks\": [\"bullet\"],\n\"recommendations\": [\"bullet\", \"bullet\", \"bullet\"],\n\"meta\": {\n\"project_link\": \"string|omit if missing\",\n\"budget_input\": \"string|number|omit if missing\",\n\"proposals\": \"number|omit if missing\",\n\"interested\": \"number|omit if missing\",\n\"posted_days_ago\": \"number|omit if missing\"\n}\n}\n]\n}\n\n** Valida\u00e7\u00f5es e normaliza\u00e7\u00f5es obrigat\u00f3rias **\n\nSempre usar exatamente o \"id\" do projeto conforme fornecido. N\u00e3o transformar, n\u00e3o reformatar, n\u00e3o gerar novo ID.\nSe qualquer campo de entrada estiver ausente, nulo ou vazio, n\u00e3o invente. Apenas omita no meta ou trate como \u201cn\u00e3o informado\u201d dentro da an\u00e1lise, sem criar valores.\nNormalizar complexidade: apenas \"baixa\" ou \"m\u00e9dia\". Se o projeto parecer alto, exclua-o (n\u00e3o selecione).\nposted_days_ago: somente calcular se \"published_at\" existir e for data v\u00e1lida ISO (DD-MM-YYYY ou similar). Caso contr\u00e1rio, omitir.\nSe houver menos de 5 projetos eleg\u00edveis, retorne quantos forem qualificados (0\u20135).\nN\u00e3o incluir campos extras fora do schema.\n\n** Heur\u00edstica de filtro r\u00e1pido **\n\nStatus aceitos: tudo diferente de \"done\", \"in progess\" e \"rejected\".\nPropostas \u2264 5 e Interessados \u2264 10 (se os campos existirem; se n\u00e3o existirem, n\u00e3o descarte por aus\u00eancia).\nPreferir t\u00edtulos e descri\u00e7\u00f5es claras; penalizar vagos.\nPreferir or\u00e7amentos coerentes; se ausente, n\u00e3o descartar, mas sinalizar risco.\n\n** Ferramentas recomendadas (para recommendations) **\n\nn8n: HTTP Trigger/Request, Google Sheets, Gmail/SMTP, Cron, Notion, Trello, Slack.\nPython: pandas, FastAPI, requests.\nWordPress: Contact Form 7/Elementor, functions.php tweaks, hooks.\nDados: Google Sheets + Looker Studio (KPI simples).\n"
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.9,
      "position": [
        176,
        528
      ],
      "id": "0c8014bf-d2bf-4af8-95c9-f6b4370787b9",
      "name": "Career Coach Agent1"
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "e980c92c-07d9-400e-b40c-a8fbdbe8bbcb",
              "name": "aboutMe",
              "type": "string",
              "value": "Sou um freelancer em in\u00edcio de carreira, formado em An\u00e1lise e Desenvolvimento de Sistemas e atualmente cursando p\u00f3s-gradua\u00e7\u00e3o em An\u00e1lise de Dados e Intelig\u00eancia Artificial. Tenho conhecimentos em low-code/no-code, n8n, Vibe code, Python, JavaScript e PHP, com foco em desenvolvimento de sistemas web e automa\u00e7\u00f5es. No momento, estou no segundo n\u00edvel da Workana e almejo alcan\u00e7ar o n\u00edvel 6 (HERO) por meio de propostas bem elaboradas e qualifica\u00e7\u00f5es positivas, o que ampliar\u00e1 minhas oportunidades e benef\u00edcios.\n\nPara atingir meus objetivos, estou aplicando o Princ\u00edpio de Pareto (Regra 80/20), priorizando projetos de baixa a m\u00e9dia complexidade. Essa abordagem me permite gerar receita rapidamente, permitindo que eu invista mais tempo e recursos no aprimoramento das minhas habilidades e no fortalecimento do meu portf\u00f3lio.\n"
            }
          ]
        },
        "options": {}
      },
      "id": "2c2e402e-45f1-4651-bf02-17169bf7543d",
      "name": "Set Variable",
      "type": "n8n-nodes-base.set",
      "position": [
        -752,
        528
      ],
      "typeVersion": 3.4
    },
    {
      "parameters": {},
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "typeVersion": 1.1,
      "position": [
        288,
        752
      ],
      "id": "dd054887-74e0-4582-9691-c8af29db5157",
      "name": "Think1"
    },
    {
      "parameters": {
        "jsonSchemaExample": "{\n   \"best_projects\":[\n      {\n         \"id\":\"string\",\n         \"title\":\"string\",\n         \"description\":\"string\",\n         \"complexity\":\"string\",\n         \"your_analyze\":\"string\",\n         \"why_fit\":[\n            \"bullet 1\",\n            \"bullet 2\"\n         ],\n         \"scope_outline\":[\n            \"bullet 1\",\n            \"bullet 2\",\n            \"bullet 3\"\n         ],\n         \"delivery_time_estimate\":\"string\",\n         \"price_range\":\"string\",\n         \"risks\":[\n            \"bullet 1\"\n         ],\n         \"recommendations\":[\n            \"bullet 1\",\n            \"bullet 2\",\n            \"bullet 3\"\n         ],\n         \"meta\":{\n            \"project_link\":\"string\",\n            \"budget_input\":\"raw budget from input\",\n            \"proposals\":\"number\",\n            \"interested\":\"number\",\n            \"posted_days_ago\":\"number\"\n         }\n      }\n   ]\n}"
      },
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "typeVersion": 1.3,
      "position": [
        -1840,
        368
      ],
      "id": "d5fe707e-ce15-4dad-831f-bf78717d0f6b",
      "name": "Structured Output Parser1"
    },
    {
      "parameters": {
        "content": "## Arquivado para consulta ",
        "height": 416,
        "width": 496,
        "color": 7
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2176,
        160
      ],
      "typeVersion": 1,
      "id": "a480d4e5-53ef-42f8-ad00-ad057cca7124",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "workflowInputs": {
          "values": [
            {
              "name": "started",
              "type": "any"
            }
          ]
        }
      },
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "typeVersion": 1.1,
      "position": [
        -1152,
        400
      ],
      "id": "6466eafc-9e4b-4037-b474-284f5c59c300",
      "name": "When Executed by Another Workflow"
    },
    {
      "parameters": {
        "content": "## Como Funciona\n\nO workflow \u00e9 acionado manualmente pra fins de testes e quando executado pelo fluxo de trabalho Workana AI Agent: Auto Update Jobs Workana Sheet.",
        "height": 768,
        "width": 384,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1200,
        160
      ],
      "typeVersion": 1,
      "id": "87b9138b-b1bf-44e2-a789-6ec8afc9a252",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "amount": 2,
        "unit": "minutes"
      },
      "type": "n8n-nodes-base.wait",
      "typeVersion": 1.1,
      "position": [
        -976,
        464
      ],
      "id": "ceb5929a-adf4-4e3b-8541-77ded7ae2784",
      "name": "Wait"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "value": "GPT-5-mini",
          "mode": "list",
          "cachedResultName": "GPT-5-mini"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        128,
        752
      ],
      "id": "488c7f96-b87d-4e1b-8e74-183ebafc944e",
      "name": "GPT-5 Chat Model",
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Set Variable",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet": {
      "main": [
        [
          {
            "node": "Limit",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "Career Coach Agent1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Think": {
      "ai_tool": [
        [
          {
            "node": "Career Coach Agent",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Career Coach Agent": {
      "main": [
        []
      ]
    },
    "Get row(s) in sheet1": {
      "main": [
        [
          {
            "node": "Update row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update row in sheet": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append row in sheet": {
      "main": [
        [
          {
            "node": "Get row(s) in sheet1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Filter": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Limit": {
      "main": [
        [
          {
            "node": "Filter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Append row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code1": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GPT-5-mini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Career Coach Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Set Variable": {
      "main": [
        [
          {
            "node": "Get row(s) in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Think1": {
      "ai_tool": [
        [
          {
            "node": "Career Coach Agent1",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Career Coach Agent1": {
      "main": [
        [
          {
            "node": "Code1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait": {
      "main": [
        [
          {
            "node": "Set Variable",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GPT-5 Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Career Coach Agent1",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": {
    "node:Google Drive Trigger": {
      "lastTimeChecked": "2025-10-11T19:40:11Z"
    }
  },
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "versionId": "79f78d32-6ee6-4836-8642-2002e768d3a7",
  "triggerCount": 1,
  "tags": [
    {
      "createdAt": "2025-09-06T18:51:55.029Z",
      "updatedAt": "2025-10-08T17:55:04.973Z",
      "id": "aqoahvvuwcUF7xAJ",
      "name": "prod"
    },
    {
      "createdAt": "2025-10-10T13:21:49.645Z",
      "updatedAt": "2025-10-10T13:21:49.645Z",
      "id": "dPPdsd8YcJkrO0u5",
      "name": "sub"
    },
    {
      "createdAt": "2025-10-07T18:10:03.762Z",
      "updatedAt": "2025-10-07T18:10:03.762Z",
      "id": "pBpikzqjo5Xglfoj",
      "name": "internal-infra"
    }
  ],
  "n8n_host_name ": "https://n8n.trymyapp.tech/"
}