Automate Freelance Project Intake with Custom Proposals using Jotform & Gemini

Go to Workflow
33 views
Built by iamvaar iamvaar
Created on June 06, 2026

Description

Workflow explaination: https://youtu.be/ecafBTFPuvE?si=7csA1yNsaUxUG72F

This workflow is designed to automatically handle new freelance project requests from a JotForm, analyze the requirements using AI, create a custom proposal, log the details in a Google Sheet, and send a personalized response to the client.

1. JotForm Trigger

Purpose**: This node is the entry point of the entire automation. It waits for a new freelance project submission from your specified JotForm.
Action: When a potential client fills out and submits the form, this node **instantly triggers the workflow, passing all submitted data (name, email, project requirements, and budget) to the next node.
Key Detail**: Uses a webhook for real-time activation, ensuring immediate processing of every new project request.

2. AI Agent

Purpose**: The central brain of your freelance workflow. đź§  It takes the project submission and turns it into a structured, customized proposal.
Action**: The agent follows a prompt sequence to perform these tasks:

Calls the My Freelance Document Tool: Fetches your Google Doc containing details about your services, pricing, and project templates — your “source of truth.”
Analyzes the Project Request: Reads the client’s requirements and goals from the form.
Generates a Custom Proposal: Based on scope, budget, and relevance to your offerings, it prepares a short, tailored proposal or quote that fits the project.
Creates a Personalized Email: Builds an HTML email with the proposal embedded, including next steps or a scheduling link for further discussion.
Outputs Structured Data: Packages everything (project summary, proposal text, email subject, and body) into a clean JSON object for downstream use.

3. Append or Update Row in Sheet (Google Sheets)

Purpose**: Serves as your lightweight CRM for all project inquiries.
Action**: Logs data from the AI Agent (proposal details, client info, and project summary) into a Google Sheet.
Key Detail: Configured to **Append or Update—if an email already exists, it updates that row instead of duplicating. Keeps your client records clean and organized.

4. If

Purpose**: Acts as a control node to decide whether a proposal email should be sent.
Action**: Checks the output from the AI Agent to ensure the proposal text is valid (not empty).
Key Detail**: If the proposal generation fails or returns “NAN,” the workflow stops here to avoid sending incomplete responses.

5. Send a Message (Gmail)

Purpose**: Sends the final personalized proposal email to the client.
Action: Pulls the recipient’s email from the sheet and sends the **AI-generated subject and HTML proposal email automatically.
Key Detail**: The email is customized per project, giving the client an instant, professional response with no manual effort.

Nodes Used (5)

AI Agent
@n8n/n8n-nodes-langchain.agent
Gmail
n8n-nodes-base.gmail
Google Gemini Chat Model
@n8n/n8n-nodes-langchain.lmChatGoogleGemini
Google Sheets
n8n-nodes-base.googleSheets
Structured Output Parser
@n8n/n8n-nodes-langchain.outputParserStructured