Tutorials

Daily Briefing Bot with n8n and Private Local LLMs

Build a personalised morning briefing that aggregates calendar, email, news, tasks, and metrics into a single AI-generated digest — all processed locally.

Robson PereiraMay 31, 202612 min read
An n8n workflow pipeline generating a personalised daily briefing from multiple data sources.

Daily Briefing Bot with n8n and Private Local LLMs

A daily briefing is one of the highest-ROI productivity automations you can build. Instead of checking six apps every morning, your local AI compiles everything you need into one digest — calendar events, top emails, task priorities, relevant news, and key metrics — all generated on your own hardware.

Why a local briefing bot

Most briefing tools send your data to a cloud service. A local briefing bot:

  • **Keeps everything private** — calendar, email, and task data never leaves your server
  • **Customisable** — you define every source and how it is summarised
  • **Costs nothing to run** — local models handle the processing
  • **Reliable** — no third-party API dependencies or rate limits

For the fundamentals of n8n automation, start with Build Your Own AI Assistant with n8n.

What a good briefing contains

| Section | Source | What the LLM does |

|---------|--------|-------------------|

| Calendar | CalDAV API or local .ics file | Summarise today's meetings, prep needed |

| Email | IMAP inbox | Top 3 important messages with key points |

| Tasks | Todoist, TickTick, or local todo.txt | Priority items due today |

| News | RSS feeds (filtered by interests) | Summarise relevant headlines |

| Metrics | InfluxDB or SQLite (from AI ops dashboard) | Key numbers from yesterday |

| Weather | Local weather API | Brief forecast for today |

Build the briefing pipeline

Step 1: Data collection (5:30 AM schedule)

Create an n8n workflow triggered by a schedule node at 5:30 AM each weekday. Add parallel collection branches:

```yaml

Branch 1: Calendar

  • HTTP node → CalDAV API
  • Function node → format events for LLM

Branch 2: Email

  • IMAP node → fetch unseen messages since yesterday
  • Function node → extract senders, subjects, key sentences

Branch 3: Tasks

  • HTTP node → Todoist/TickTick API
  • Function node → filter items due today or overdue

Branch 4: News (RSS)

  • RSS Feed Read node → your curated feeds
  • Function node → deduplicate and prioritise

Branch 5: Metrics

  • HTTP node → InfluxDB query for yesterday's summary
  • Function node → format as key-value pairs

```

Step 2: Compile with local LLM

Merge all branch outputs into one payload and pass it to an AI Agent node:

> You are a personal briefing assistant. Compile the following data into a concise morning briefing. Structure: Good morning overview, Calendar highlights, Top emails requiring action, Today's tasks, Key metrics, News worth knowing, Weather. Keep each section brief. Use UK English. Output in markdown.

Step 3: Deliver the briefing

Send the generated briefing through your preferred channel:

| Channel | n8n node | Notes |

|---------|----------|-------|

| Email | SMTP node | Send to yourself, works everywhere |

| Push notification | Gotify or ntfy | Phone notification with briefing preview |

| Slack | Slack node | Post to your private channel |

| Telegram | Telegram node | Send as formatted message |

| Local file | Write to file | Open when ready |

Step 4: Evening review (optional)

Add a complementary evening workflow that summarises what happened during the day:

1. Collect completed tasks

2. Summarise emails sent

3. Note calendar events attended

4. Ask local LLM to identify what needs follow-up tomorrow

Customisation tips

  • **Monday briefings** — include a weekly overview section with priorities for the week
  • **Friday briefings** — include a "week in review" summary and wins
  • **Travel days** — integrate travel time, flight info, and hotel details
  • **Quarter-end** — include revenue, pipeline, and deadlines from your CRM

For more productivity automation ideas, see Private AI Productivity Systems for Founders.

Troubleshooting

| Issue | Cause | Fix |

|-------|-------|-----|

| Briefing is too long | Too many sources | Trim the input or increase summarisation strictness |

| Model hallucinates metrics | Data format unclear | Structure input data as explicit JSON |

| Email polling misses messages | IMAP filter too narrow | Check the SEEN/UNSEEN filter settings |

| Briefing arrives late | Workflow runtime too long | Run branches in parallel, set timeouts |

Conclusion

A daily briefing bot with n8n and local LLMs saves the first 15 minutes of your morning app-checking routine. It keeps your data private, costs nothing beyond your existing infrastructure, and adapts to whatever sources matter most to you. Build it once, tune it over a week, and it becomes an indispensable part of your daily workflow.

FAQ

How long does the briefing take to generate?

Typically 2-5 minutes from trigger to delivery, depending on model speed and number of sources.

What model should I use for the briefing?

A 7B-8B model works well. Summarisation is a task that smaller models handle competently without sacrificing quality.

Can I add or remove sources easily?

Yes. n8n's visual workflow editor makes it simple to add a new branch for any data source that has an API or file output.

Related articles