{
  "name": "Freelance Designer → Client Brief Intake",
  "description": "Receive client brief → structure it → log to sheet → email designer → confirm. 5 nodes. Free tier.",
  "active": false,
  "settings": {
    "timezone": "UTC",
    "saveManualExecutions": true,
    "callerPolicy": "workflowsFromSameOwner",
    "executionOrder": "v1"
  },
  "tags": [
    "flowforge",
    "freelance-designer",
    "free"
  ],
  "nodes": [
    {
      "id": "49bf1b79-9902-4ae8-ba41-f1091d700f22",
      "name": "Client Brief Webhook",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        250,
        300
      ],
      "webhookId": "ff-freelance-client-brief",
      "parameters": {
        "path": "ff-freelance-client-brief",
        "options": {
          "responseHeaders": {
            "entries": [
              {
                "name": "Content-Type",
                "value": "application/json"
              }
            ]
          }
        },
        "responseMode": "lastNode",
        "responseData": "allEntries",
        "httpMethod": "POST"
      }
    },
    {
      "id": "23148f23-9f60-45eb-9eb5-8a753bca62fd",
      "name": "Structure Brief",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        500,
        300
      ],
      "parameters": {
        "jsCode": "const item = $input.first().json;\nconst body = item.body || item;\n\nconst brief = {\n  clientName: (body.clientName || body.name || '').toString().trim(),\n  clientEmail: (body.clientEmail || body.email || '').toString().trim(),\n  companyName: (body.companyName || body.company || '').toString().trim(),\n  projectType: (body.projectType || body.type || 'logo').toString().trim(),\n  description: (body.description || body.brief || '').toString().trim(),\n  budget: (body.budget || 'Not specified').toString().trim(),\n  deadline: (body.deadline || 'Not specified').toString().trim(),\n  source: 'Freelance Designer Webflow',\n  receivedAt: new Date().toISOString()\n};\n\nif (!brief.clientName) throw new Error('clientName is required');\nif (!brief.clientEmail) throw new Error('clientEmail is required');\n\nreturn [{ json: brief }];\n"
      }
    },
    {
      "id": "c35e249e-adfb-4290-91db-615d1e7a409a",
      "name": "Log to Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4,
      "position": [
        750,
        200
      ],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "2SiuxlqGjhnoheZz",
          "name": "Google Sheets"
        }
      },
      "parameters": {
        "operation": "appendOrUpdate",
        "documentId": {
          "__rl": true,
          "value": "NEW_SHEET_ID_HERE"
        },
        "sheetName": "Sheet1",
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "clientName": "={{ $json.clientName }}",
            "clientEmail": "={{ $json.clientEmail }}",
            "companyName": "={{ $json.companyName }}",
            "projectType": "={{ $json.projectType }}",
            "description": "={{ $json.description }}",
            "budget": "={{ $json.budget }}",
            "deadline": "={{ $json.deadline }}",
            "receivedAt": "={{ $json.receivedAt }}",
            "status": "New"
          }
        },
        "options": {}
      }
    },
    {
      "id": "88820d5b-d1f3-43b7-b5d7-260341183392",
      "name": "Email Designer",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 1,
      "position": [
        750,
        450
      ],
      "credentials": {
        "smtp": {
          "id": "ppRdYzQFLTAlpkfK",
          "name": "SMTP account"
        }
      },
      "parameters": {
        "fromEmail": "briefs@flowforge.toolyft.com",
        "toEmail": "flowforge@toolyft.com",
        "subject": "={{ 'New Brief: ' + $json.clientName + ' - ' + $json.projectType }}",
        "text": "={{ 'New client brief received:\\n\\n' +\\n  'Client: ' + $json.clientName + '\\n' +\\n  'Email: ' + $json.clientEmail + '\\n' +\\n  'Company: ' + $json.companyName + '\\n' +\\n  'Project: ' + $json.projectType + '\\n' +\\n  'Budget: ' + $json.budget + '\\n' +\\n  'Deadline: ' + $json.deadline + '\\n\\n' +\\n  'Brief:\\n' + $json.description }}",
        "options": {}
      }
    },
    {
      "id": "5a0df9ea-ee4e-45f3-8c2e-48d15425b01a",
      "name": "Confirm",
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.1,
      "position": [
        1000,
        300
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "status",
              "value": "received"
            },
            {
              "name": "message",
              "value": "={{ 'Thanks ' + $json.clientName + '! Your brief has been received. We'll get back to you within 24 hours.' }}"
            }
          ]
        },
        "options": {}
      }
    }
  ],
  "connections": {
    "Client Brief Webhook": {
      "main": [
        [
          {
            "node": "Structure Brief",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structure Brief": {
      "main": [
        [
          {
            "node": "Log to Sheet",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Email Designer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Log to Sheet": {
      "main": [
        [
          {
            "node": "Confirm",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Email Designer": {
      "main": [
        [
          {
            "node": "Confirm",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}