5 Boring Office Tasks You Can Automate for Free (Right Now)
The Reality Check: You weren’t hired to copy data from emails into spreadsheets. You weren’t hired to rename PDF receipts. You were hired to think, create, and solve problems. Yet, studies show that knowledge workers spend up to 40% of their day on “Switching Costs” and menial admin work.
The Solution: You don’t need a budget. You don’t need a developer. You don’t need to ask IT for permission. You need a “Digital Intern”. That intern is n8n. Unlike Zapier (which gets expensive fast) or Make (which can be complex), n8n allows you to run these automations for free on your own computer or a cheap VPS.
The Promise: Read this guide. Open n8n. In 15 minutes, you will have at least one of these “Robots” working for you.
Task 1: The “Invoice Chaser” (Automated Collections)
The Context: Why Collections Matter
Cash flow is the lifeblood of any solopreneur or small business. Yet, following up on unpaid invoices is one of the most emotionally draining tasks imaginable. It feels petty. It feels desperate. You delay sending that email because you don’t want to be “annoying”. The result? Your “Average Days Sales Outstanding” (DSO) creeps up from 30 days to 45 days. That acts as a 0% loan you are giving to your clients. By automating this, you remove the emotion. A bot doesn’t feel awkward about asking for money. It just executes. This ensures your invoices are consistently top-of-mind for your clients without you having to spend a single “mental calorie” worrying about it.
The Build: Step-by-Step
We will build a workflow that runs every Monday, checks for unpaid invoices, and sends a polite nudge.
-
The Trigger (Schedule Node)
- Add a Schedule Trigger.
- Set it to run Weekly on Monday at 10:00 AM.
- Why 10 AM? Sending it at 8 AM gets buried in the weekend backlog. Sending it at 10 AM ensures they are at their desk and have cleared the morning rush.
-
The Search (Gmail Node)
- Add a Gmail node (or Outlook). connect your account.
- Resource: Message.
- Operation: Get Many.
- Query:
label:invoices-sent -label:paid older_than:7d. - Note: This relies on a simple specific system: When you send an invoice, tag it “invoices-sent”. When you get paid, tag it “paid”. If you use Xero/Quickbooks, use their native nodes instead.
-
The Filter (If Node)
- Add an If node.
- Check if the sender has replied since the last email. You do NOT want to auto-bump a client who just emailed you “Hey, the check is in the mail.”
- You can do this by checking the
threadIdhistory.
-
The Nudge (AI Agent)
- Add an OpenAI node.
- Prompt: “Write a polite, 2-sentence follow-up email for an invoice sent on {{Date}}. Vary the tone to be friendly but firm. Do not sound aggressive.”
- This variation is critical. Detailed templates flag as spam. AI-generated text feels human.
-
The Send (Gmail Node)
- Add a Gmail node.
- Operation: Send Email.
- To: The original recipient.
- Subject: “Re: Invoice #{{InvoiceNumber}} - Friendly Bump”.
The “Pro Tip”: Multi-Stage Escalation
Create a “Counter” in a Google Sheet.
- Week 1: Polite nudge.
- Week 2: “Just checking in.”
- Week 3: “Is there an issue with the invoice?”
- Week 4: Escalation to CEO/Finance Dept. You can implement this logic in n8n by adding a “Switch” node based on the invoice date.
Common Pitfalls
- The “Reply” Trap: The most dangerous part of this automation is sending a follow-up to a client who already replied. Always ensure your “Filter” step checks for recent activity in the thread.
- The “Wrong Label”: If you forget to label an invoice as “paid”, your bot will harass your client. I recommend adding a step that searches your bank feed (Stripe/Wise) to confirm the money is missing before sending.
- Spam Filters: If you send 50 emails at exactly 10:00:00 AM, Google might flag you. Use the “Wait” node to add a random delay (e.g., 1-10 minutes) between sends.
Task 2: The “Receipt Saver” (Tax Season Defense)
The Context: The $1,000 Shoe Box
We have all been there. It is April 14th. You are sitting on the floor surrounded by crumpled receipts or frantically searching your inbox for “Uber” and “AWS”. Tax preparation is non-value-added work. It generates no revenue. It only prevents penalties. Every minute you spend downloading a PDF, renaming it “2025-01-05_Uber.pdf”, and dragging it to a folder is a minute you aren’t selling or building. Furthermore, the mental load of “Did I save that receipt?” causes low-level anxiety. A “Receipt Saver” bot eliminates this entirely. If it hits your inbox, it is filed. Done.
The Build: Step-by-Step
We will watch your inbox for keywords and automatically upload attachments to Google Drive.
-
The Watcher (Gmail Trigger)
- Add a Gmail Trigger node.
- Event: On New Email.
- Filters: Set simple filters. Subject contains “Receipt” OR “Invoice” OR “Order Confirmation”.
- Better Method: Create a Gmail Label called
To-File. Manually or automatically apply this label in Gmail. Set the n8n trigger to watch only this label.
-
The Extraction (Set Node)
- We need to standardize the data.
- Use an AI Extract node (or Set node with RegEx).
- Target fields:
Vendor Name,Date,Total Amount. - Example RegEx for Amount:
\$(\d{1,3}(,\d{3})*(\.\d{2})?).
-
The Renaming (Data Transformation)
- You never want to save files as
scan_001.pdf. - Create a clean filename string:
{{Date}}_{{Vendor}}_{{Amount}}.pdf. - Example:
2026-05-12_Amazon_49.99.pdf.
- You never want to save files as
-
The Filing (Google Drive Node)
- Add a Google Drive node.
- Operation: Upload File.
- File Content: Map the “Binary Data” from the email attachment.
- Folder: Map to your “2026 Receipts” folder ID.
The “Pro Tip”: OCR and Spreadsheets
Don’t just save the file. Parse it.
Use the Google Vision node (or simple OCR) to read the text inside the PDF.
Then, add a Google Sheets node to append a row:
| Date | Vendor | Amount | URL to File |
Now you have a dynamic expense report building itself in real-time. Your accountant will love you.
Common Pitfalls
- Multiple Attachments: Emails often contain “social-icon.png” or “logo.jpg” as attachments. Your workflow will try to save these as receipts.
- Fix: Add an If node to check the “MIME Type” of the attachment. Only allow
application/pdforimage/jpeg. Ignore everything else.
- Fix: Add an If node to check the “MIME Type” of the attachment. Only allow
- Currency Confusion: If you work internationally, ensure your extraction logic differentiates between $ (USD) and £ (GBP).
- Drive Permisions: Ensure the Google Drive credential has “Write” access to the specific folder.
Task 3: The “Social Media Cross-Poster” (RSS to LinkedIn)
The Context: Distribution Hell
You wrote a brilliant blog post. You hit “Publish”. Now the real work begins. You have to go to LinkedIn, write a post. Go to Twitter, write a thread. Go to Facebook… This “distribution friction” is why most corporate blogs are ghost towns. It takes too much energy to share content. By connecting your RSS feed (which every blog has) to your social channels, you ensure that every single piece of content gets immediate visibility. You turn your blog into a “Content Engine”.
The Build: Step-by-Step
We will monitor your blog and automatically write and post a LinkedIn update.
-
The Source (RSS Read Node)
- Add an RSS Feed Read node.
- URL:
https://yourdomain.com/feed.xml. - Action: “Read”.
- This node outputs the Title, Summary, Link, and Date of your latest posts.
-
The Memory (Deduplication)
- Add an If node.
- Compare the “GUID” (Article ID) to a list of previously posted IDs.
- Simpler Way: Just use the “Read” node’s built-in memory feature (if available) or store the last posted ID in a Google Sheet.
-
The Clean Up (HTML to Markdown)
- RSS summaries often contain ugly HTML tags like
<p>or . - Use the HTML to Markdown node to strip these out.
- RSS summaries often contain ugly HTML tags like
-
The Viral Rewrite (AI Agent)
- Do not just post the “Title”. That is lazy.
- Add an OpenAI node.
- Prompt: “Read this blog summary: ‘{{Summary}}’. Write a compelling LinkedIn post using the AIDA (Attention, Interest, Desire, Action) framework. Use line breaks. Add 3 relevant hashtags. Do not sound like a corporate press release.”
-
The Post (LinkedIn Node)
- Add a LinkedIn node.
- Resource: Share.
- Content: Map the output from the AI node.
- Visibility: Public.
The “Pro Tip”: Image Handling
Text-only posts perform poorly. You need the “Open Graph” (OG) image from your blog post.
- Use an HTTP Request node to download the image URL found in the RSS feed.
- Map that binary image data to the LinkedIn node’s “Binary Input”. Now your automation posts a rich visual image along with the AI-written text.
Common Pitfalls
- The “Hallucination”: AI might invent facts not in the article.
- Fix: Set the “Temperature” of the model to 0.3 (Low Creativity).
- The Length Limit: LinkedIn posts have a character limit (though it’s high). Twitter/X has a strict one. Ensure your Prompt includes “Keep it under 280 characters” if posting to X.
- The “Double Post”: Creating an infinite loop where the bot posts, the RSS updates, and the bot posts again. Always implement deduplication logic (The “Memory” step).
Task 4: The “Meeting Summarizer” (Calendar to Email)
The Context: The Black Hole of Meetings
How many meetings did you sit through last week? How many result in actual work? The “Forgetting Curve” logic dictates that we lose 50% of new information within one hour. If you don’t document the “Next Steps” immediately after the call, they are gone. This workflow forces cognitive closure. It interrupts your transition to the next task and demands that you crystallize the value of the meeting you just finished. It is a harsh but effective accountability tool.
The Build: Step-by-Step
We will trigger an email to yourself instantly when a Google Calendar event ends.
-
The Trigger (Google Calendar)
- Add a Google Calendar Trigger node.
- Event: Event Ended.
- Poll Interval: 1 Minute (or check every 5 minutes).
-
The Logic (If Node)
- You don’t want this for your “Lunch” block or “Deep Work” block.
- Add an If node.
- Condition:
Summarydoes NOT contain “Lunch” ANDAttendeesis NOT empty. - This ensures it only triggers for actual meetings with other people.
-
The Prompt (Gmail Node)
- Add a Gmail node.
- To:
me@mycompany.com. - Subject: “ACTION REQUIRED: Notes for {{Summary}}”.
- Body: “The meeting ‘{{Summary}}’ just ended with {{Attendees}}. \n\n Reply to this email RIGHT NOW with:\n1. Key Decision Made\n2. Action Items\n3. Next Meeting Date.”
The “Pro Tip”: Transcript Processing
If you use Zoom or Microsoft Teams specifically:
- Use the Zoom Trigger (“Recording Completed”).
- Send the recording transcript to Claude 3.5 Sonnet (great for large context).
- Prompt: “Summarize this meeting into bullet points and list all tasks assigned to Marcus.”
- Email that summary to yourself. This is the “God Mode” of meeting notes.
Common Pitfalls
- Timezone Errors: Google Calendar APIs are notorious for timezone confusion. Ensure your n8n instance and your Google Calendar are set to the same Timezone (e.g., America/New_York), or the trigger might fire 5 hours late.
- Calendar Spam: If you share your calendar publicly, people might put fake events on it. Your bot will trigger. Ensure you only trigger on “Confirmed” events.
- Alert Fatigue: If you have 10 meetings a day, 10 emails will annoy you. Consider batching them into a “Daily Digest” instead.
Task 5: The “Lead Scraper” (Maps to Sheet)
The Context: Feeding the Funnel
Lead generation is usually expensive (ads) or tedious (manual research). There is a massive amount of public data available on Google Maps. “Plumbers in Austin”. “Coffee Shops in Seattle”. These businesses have phone numbers, websites, and review counts publicly listed. Manually copying this into a CRM is madness. It takes 2-3 minutes per lead. A bot can do it in 200 milliseconds. This workflow allows you to build a prospect list of 1,000 localized businesses while you make a cup of coffee.
The Build: Step-by-Step
We will search specifically for local businesses and save them to a spreadsheet.
-
The Input (Manual Trigger)
- Add a Manual Trigger.
- Add a String input field called
Keyword(e.g., “Dentists in Miami”).
-
The Scraper (HTTP Request)
- Google Maps does not have a free API for “Search”.
- Option A (Free-ish): Use a specialized API like SerpApi or Serper.dev. They give you 100 free searches a month.
- URL:
https://google.serper.dev/places. - Method: POST.
- JSON:
{ "q": "{{Keyword}}", "gl": "us" }.
-
The Enrichment (Website Scrape)
- The Maps result gives you the website URL.
- Add a HTTP Request node to GET the website HTML.
- Use HtmlExtract node to find
a[href^="mailto:"]. - Now you have the generic email address (info@dentist.com).
-
The Database (Google Sheet)
- Add a Google Sheets node.
- Operation: Append Row.
- Columns: Name, Address, Phone, Website, Email, Rating, ReviewCount.
The “Pro Tip”: Filter by “Low Hanging Fruit”
Don’t reach out to everyone. Add an If node before the Sheet.
- Condition:
ReviewCount< 10 ORRating< 4.0. - Why: These businesses need help. They have a bad reputation or no visibility. If you sell Reputation Management or SEO, these are your perfect buyers. Filter out the guys with 500 reviews; they don’t need you.
Common Pitfalls
- IP Bans: If you try to scrape Google directly (without an API like Serper), Google will ban your IP instantly. Always use a proxy or a dedicated SERP API service.
- Data Accuracy: Maps data is often stale. The “Website” link might be dead. Add a “Verify Link” step (HTTP HEAD request) to check if the site is still up before adding it to your sheet.
- Spam Laws: Just because you found an email doesn’t mean you can spam them. Respect CAN-SPAM and GDPR. Use this data for targeted, high-value outreach, not bulk blasts.
Bonus: The “Nag Bot” (Cognitive Offloading)
The Context: Making Decisions vs Remembering
Your brain consumes a massive amount of glucose to maintain “Working Memory”. Holding usage like “I need to fill out that form at 5 PM” drains your energy for actual creative work. This is called “Cognitive Offloading”. By outsourcing the remembering to a bot, you free up CPU cycles in your brain. A “Nag Bot” is better than a calendar reminder because it is interactive. You have to click a button to dismiss it. It forces compliance.
The Build: Step-by-Step
- Schedule Trigger: “Every Weekday at 16:45”.
- Slack Node: Send Message with Buttons. “Timesheet submitted?” [Yes] [No].
- Wait Node (On “No”): Wait 15 Minutes.
- Loop: Go back to Step 2. It will literally annoy you until you do the task.
Why not just use a phone alarm?
A phone alarm can be swiped away and forgotten. A Slack bot that posts into your “General” channel (public shame) or loops infinitely (persistence) has a social and functional pressure that a simple notification lacks.
Conclusion
These 5 workflows are not just “Cool Tricks”. They are Infrastructure. They represent a shift in how you operate.
- The Invoice Chaser fixes your Cash Flow.
- The Receipt Saver fixes your Legal/Compliance.
- The Cross-Poster fixes your Marketing reach.
- The Meeting Summarizer fixes your Operations.
- The Lead Scraper fixes your Sales pipeline.
You can build all of these in one afternoon on the n8n free tier.
Your Homework: Pick ONE. Just one. Open n8n right now. Build the “Meeting Summarizer”. It takes 5 minutes. Once you see that email hit your inbox, you will understand why n8n is the future of work.
Ready for the next step? Read our guide on Do You Need to Know Python for n8n? to see how deep the rabbit hole goes.



