What you build
You’ll create a workflow that starts from a trigger (Webhook or Email), sends the text to an AI step, receives a structured summary (not random paragraphs), then forwards the result to your team in Slack or email.
This is the safest “starter” automation because it’s useful on day one, it’s easy to test, and it scales: later you can route to different channels, store results in Notion/Sheets, or create tasks automatically.
Where this helps in real life
Use it for: incoming leads, support emails, meeting notes, client updates, voice transcripts, or any long message that you want to turn into a clean internal summary.
- Sales: summarize a long lead email into next steps + risks
- Support: extract the problem + environment + urgency
- Ops: turn chaotic notes into a short checklist
- Management: weekly recap from multiple messages
The workflow in one sentence
Trigger → AI → Validate → Send
Trigger collects text. AI creates structured JSON. You validate it. Then you send it where your team already works.
Node list (simple and reliable)
Keep the first version small. The more nodes you add early, the harder it is to debug. This set is enough for a clean MVP:
- Trigger: Webhook (fastest) OR Gmail/IMAP (for emails)
- AI node: prompt + structured JSON output
- Formatter: small JS step to clean and format
- Send: Slack node OR Email node
Step 1 — Pick a trigger
If you want speed, start with a Webhook trigger. You can paste test text into Postman or a simple form. If you want real use immediately, choose Gmail/IMAP and process new emails.
- Webhook: best for testing and internal tools
- Gmail/IMAP: best for real inbound messages
- Schedule Trigger: best for daily digests
Step 2 — Ask AI for JSON, not vibes
The biggest reliability mistake is asking AI for a normal paragraph. Instead, ask for JSON fields so you can validate and format them consistently.
Your output should always contain the same keys. Example keys: summary, actionItems, riskFlags, priority, and a one-line subject.
Prompt template (copy-paste)
You are an assistant that summarizes messages for a team.
Return ONLY valid JSON.
Input message:
{{ $json.text }}
Return JSON with these keys:
{
"subject": "short title",
"summary": "3-6 sentences, simple language",
"actionItems": ["..."],
"riskFlags": ["..."],
"priority": "low|medium|high"
}
Rules:
- Keep it factual. Do not guess.
- If something is unknown, write "unknown".
- Action items must be clear and executable.Step 3 — Validate before sending
Even good models can occasionally output broken JSON or missing fields. You don’t want to spam Slack with messy output. Add a small validation step.
- If JSON parse fails → send a fallback message to a private channel
- If actionItems is empty → still send the summary, but mark it as “no actions found”
- If priority is missing → default to “medium”
Tiny formatter example (JS)
This example trims the summary and ensures a safe text payload for Slack/email.
const subject = ($json.subject ?? 'Summary').toString().trim();
const summary = ($json.summary ?? '').toString().trim();
const actionItems = Array.isArray($json.actionItems) ? $json.actionItems : [];
const priority = ($json.priority ?? 'medium').toString();
const actions = actionItems.length
? actionItems.map((a, i) => `${i + 1}. ${a}`).join('\n')
: 'No action items found.';
return [{
text: `*${subject}* (priority: ${priority})\n\n${summary}\n\n*Action items:*\n${actions}`
}];Step 4 — Send to Slack or email
Start with one destination. Slack is great for speed. Email is better if you need a trail. Once it works, you can route based on priority (high → urgent channel).
- Slack: use a dedicated channel like #ai-summaries
- Email: send to a shared address like ops@ / sales@
- Routing: if priority === high → add @here or notify
Common mistakes (and how to avoid them)
- Mistake: AI output changes style every time → Fix: JSON-only output + formatter
- Mistake: sending private data to AI → Fix: redact secrets before AI step
- Mistake: too many nodes early → Fix: build MVP first, then extend
- Mistake: no error path → Fix: fallback branch on parse/validation failure
Keep it reliable
Make the AI output JSON (subject, summary, actionItems, riskFlags, priority). Validate before sending. If JSON fails, route to a private fallback channel instead of failing silently.
Next upgrades (optional)
Once the workflow is stable, these upgrades are easy and very useful:
- Store summaries in Notion / Google Sheets / Airtable
- Auto-create tasks in Trello/Jira when actionItems exist
- Add a daily digest (schedule trigger) for “yesterday’s summaries”
- Add language detection if you handle EN/HU messages
Want this built for your team?
If you want a production-ready n8n workflow with error handling, privacy rules, and a clean prompt library, we can build and deliver it in a short workshop.
Contact us
