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.

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.


