Generate HR offer letters and contracts with GPT-4.1-mini and Google Docs
Description
An intelligent AI-powered workflow that automates HR document creation for new hires. Upload candidate documents via form, and the system extracts details, auto-calculates joining dates, fills professional templates using GPT-4, and saves the final Offer Letter or Employment Contract directly to Google Docs—all in seconds.
What this workflow does
This automation handles your complete HR onboarding document pipeline:
Form-based submission:** HR fills a simple form with candidate's Identity card, Resume, Job Role, Salary, and document type selection Smart data extraction:** Automatically extracts candidate name from uploaded Resume PDF and calculates joining date (1st of next month) Template selection:** Routes to Offer Letter or Employment Contract template based on HR's selection AI-powered filling:** Uses OpenAI GPT-4.1-mini to intelligently fill all placeholders while preserving exact formatting, line breaks, and emojis Google Docs output:** Saves the final professional document directly to Google Docs, ready to send to the candidate
Setup requirements
Tools you'll need:
Active n8n instance (self-hosted or n8n Cloud) Google Docs with OAuth access OpenAI API key (GPT-4.1-mini access) PDF documents: Candidate's Identity card and Resume
Estimated setup time: 15–20 minutes
Step-by-step setup
-
Connect Google Docs In n8n: Credentials → Add credential → Google Docs OAuth2 API Complete OAuth authentication Open "Save Document to Google Docs" node Create a new Google Doc or use an existing template document Copy the document URL and paste it in the documentURL field
-
Add OpenAI API credentials Get API key: https://platform.openai.com/api-keys In n8n: Credentials → Add credential → OpenAI API Paste your API key Open "OpenAI GPT-4.1 Mini Model" node Select your OpenAI credential Ensure model is set to gpt-4.1-mini
-
Customize document templates The workflow includes two pre-built templates. You can customize them:
Offer Letter Template: Open "Load Offer Letter Template" node Edit the template_offer value Available placeholders: [Candidate Name], [Job Role], [Department/Team Name], [Company Name], [Joining Date], [Salary Details], [Work Location], [Reporting Manager/Team Lead], [Probation Period]
Employment Contract Template: Open "Load Contract Template" node Edit the template_contract value Uses the same placeholders with additional terms and conditions sections
Important: Keep all placeholders in square brackets [Placeholder Name] exactly as shown. The AI will replace them automatically.
-
Configure form fields (optional) Open "Receive Candidate Details via Form" node Default fields: Identity card (file), Resume (file), Job Role (text), Salary Details (number), Type (dropdown) Add optional fields if needed: Department Name, Work Location, Reporting Manager, Probation Period Copy the Form URL from the node settings Share this URL with your HR team
-
Test the workflow Open the Form URL in your browser Upload sample Identity card and Resume PDFs Fill Job Role: "Software Developer" Enter Salary Details: 50000 Select Type: "Offer Letter" Submit the form Check your Google Docs—the filled document should appear automatically Verify all placeholders are replaced correctly
-
Activate the workflow Toggle the workflow to Active at the top The form will now accept submissions 24/7 Each submission generates a new document in Google Docs
How it works
-
Form submission HR opens the form link and uploads candidate documents (Identity card + Resume as PDFs), enters job details, and selects document type (Offer Letter or Contract).
-
Document processing The workflow splits uploaded files into separate items and auto-generates two dates: Form Date:** Current submission date Joining Date:** Automatically set to the 1st of next month
-
Text extraction Extracts text from both PDF documents using n8n's built-in Extract From File node. The candidate's name is typically pulled from the Resume.
-
Data aggregation Combines extracted text from both documents into a single data item for processing.
-
Template routing Checks the selected document type: If "Offer Letter" → loads the Offer Letter template If "Contract" → loads the Employment Contract template
-
AI template filling The AI Agent receives: The selected template with placeholders All form data (Job Role, Salary, etc.) Extracted candidate name from Resume Auto-calculated joining date
GPT-4.1-mini fills every placeholder with actual data while strictly preserving: Line breaks and paragraph spacing Emojis and special characters Bold/italic formatting markers Email, phone, and web links
- Google Docs save The final filled document is inserted into your Google Docs document. Each submission appends a new document, so you can maintain a running archive or clear the doc periodically.
Key features
✅ Zero manual typing: Extract candidate name automatically from Resume PDF—no copy-paste needed
✅ Smart date calculation: Joining date auto-set to 1st of next month based on submission date
✅ Dual document types: Choose between simple Offer Letter or detailed Employment Contract with terms
✅ AI preserves formatting: GPT-4.1-mini maintains exact line breaks, emojis, and structure from templates
✅ Google Docs integration: Documents saved directly—no downloads, conversions, or file juggling
✅ Customizable templates: Edit both templates to match your company's tone, policies, and branding
✅ Form-based workflow: Share one URL with HR team—no n8n access needed for daily use
Troubleshooting
Google Docs not saving Re-authenticate OAuth credentials:** Go to Credentials → Google Docs OAuth2 API → Reconnect Check document URL:** Ensure the documentURL field contains a valid Google Docs link (not a Sheets link) Verify permissions:** Make sure the connected Google account has edit access to the document
Candidate name not extracting correctly Resume format issue:** The workflow expects candidate name in the Resume PDF text. If your Resume format is unusual, you may need to adjust the extraction logic. Check extraction node:** Open "Extract Text from Identity card and Resume" node → Test execution → Verify text output Manual override:** Add a "Candidate Name" field to the form if automatic extraction fails
AI not filling placeholders Check API key:** Verify OpenAI API key is active and has credits at https://platform.openai.com/usage Placeholder mismatch:** Ensure template placeholders exactly match the format [Placeholder Name] with square brackets Test AI node:** Click "Fill Template with AI" → Execute node → Check output for errors
Joining date incorrect Timezone issue:** The date calculation uses server timezone. Verify your n8n instance timezone settings. Custom date needed:** If you want a different joining date logic (e.g., 15 days from submission), edit the "Split Documents and Calculate Dates" code node.
Form not accepting file uploads File size limit:** Default n8n form limit is 16MB. Compress PDFs if larger. File type validation:** Ensure uploaded files are PDFs, not images or other formats. Browser issue:** Try a different browser (Chrome recommended for file uploads).
Use cases
HR teams at growing companies: Onboard 5-10 new hires per week without spending hours on document preparation. Generate consistent, professional documents in seconds.
Recruitment agencies: Send offer letters to multiple candidates daily. Maintain brand consistency while scaling operations without adding admin staff.
Startups and small businesses: Automate HR paperwork from day one. Focus on candidate experience instead of document formatting.
Remote-first companies: Enable distributed HR teams to generate documents without shared drives or email chains. Single form link, instant output.
Consulting firms: Create client-specific employment contracts with custom templates. Switch between contract types based on project requirements.
Expected results
Time savings:** 15-20 minutes saved per document (from 20 min manual → 2 min automated) Output quality:** Professional, error-free documents with consistent formatting every time Scalability:** Process 50+ candidates per week without additional HR headcount Error reduction:** Eliminate typos and placeholder mistakes common in manual copy-paste workflows Faster hiring:** Send offer letters within 5 minutes of candidate approval
Workflow customization
Add more form fields Open "Receive Candidate Details via Form" node and add custom fields: Department Name (dropdown with your teams) Work Location (dropdown: Remote, Office, Hybrid) Reporting Manager (text input) Probation Period (number input) Start Date (date picker for custom joining dates)
These values automatically populate in templates if placeholders are added.
Create additional templates Duplicate one of the "Load Template" nodes and create: Internship Offer Letters Part-time Contract Freelancer Agreement Probation Extension Letter
Add a corresponding option in the form Type dropdown.
Send documents via email Add an Email node after "Save Document to Google Docs": Attach the Google Docs link Send to candidate email (add email field to form) CC HR manager automatically
Multi-language support Create template variations in different languages. Add a "Language" dropdown to the form and route to appropriate template.
Support
Need help or custom development?
📧 Email: info@isawow.com
🌐 Website: https://isawow.com/
Related Templates
Automate Daily Keyword Research with Google Sheets, Suggest API & Custom Search
Who's it for This workflow is perfect for SEO specialists, marketers, bloggers, and content creators who want to automa...
USDT And TRC20 Wallet Tracker API Workflow for n8n
Overview This n8n workflow is specifically designed to monitor USDT TRC20 transactions within a specified wallet. It u...
Add product ideas to Google Sheets via a Slack
Use Case This workflow is a slight variation of a workflow we're using at n8n. In most companies, employees have a lot o...
🔒 Please log in to import templates to n8n and favorite templates
Workflow Visualization
Loading...
Preparing workflow renderer
Comments (0)
Login to post comments