How We Automated Content for a Law Firm with 10 Attorneys (n8n + Teams + Airtable)

Hey n8n community,

Wanted to share a production workflow system we built for a mid-sized law firm in Germany that’s been running for 4+ months.

## The Problem

The firm has 10 attorneys across multiple practice areas. Their content was entirely manual - nobody had time, so nothing happened consistently.

## The Solution

We built a multi-workflow system with 6 active workflows and 331 nodes:

1. **Topic Generation** - n8n generates 5 personalized topic suggestions per attorney with global deduplication

2. **Teams Notification** - Adaptive Cards for one-tap approval in Microsoft Teams

3. **Content Creation** - Auto-generation with practice-specific guidelines

4. **Image Generation** - Bannerbear + Cloudinary

5. **Publishing** - Meta Graph API to Instagram + Facebook

6. **Quality Control** - Fisher-Yates shuffle, 12 topic categories

## Results

- 8-10 posts/month across 10 attorneys

- Less than 2 hours attorney time/month

- Zero duplicates (global dedup)

- Autonomous since November 2025

## Tech Stack

- n8n (self-hosted, GDPR-compliant)

- Microsoft Teams (Adaptive Cards)

- Airtable, OpenAI API, Cloudinary, Bannerbear, Meta Graph API

## Key Learnings

1. **Self-hosting is non-negotiable** for law firms

2. **Approval flow > AI quality** - frictionless approval is everything

3. **Deduplication is harder than generation**

4. **Start with content, expand to processes**

## Free Templates

3 free n8n workflow templates for law firms:

- Client Intake Automation (18 nodes)

- Deadline Monitoring (13 nodes)

- Document Request Chain (19 nodes)

Download: [ n8n Workflow-Vorlagen fuer Kanzleien - Kostenloser Download | fudaut ]( n8n Workflow-Vorlagen fuer Kanzleien - Kostenloser Download | fudaut )

Questions welcome!

Hey Benjamin, sorry for the late reply.

On queue management / review piling up:

We don’t use a separate queue system. The rotation itself handles it - each attorney gets one topic assignment per cycle, and the system only assigns the next one once the current one is either published or explicitly skipped. So there is a natural cap on how much can pile up per person.

The main safeguard is the timeout: if an attorney doesn’t react within a set window, the system marks the slot as skipped and moves on. That way one person ignoring the bot doesn’t block the whole rotation.

In practice with 10 attorneys we’ve never had more than 3-4 posts in review at the same time.

On dedup at 20-30 attorneys:

The global dedup currently checks every new topic suggestion against all previously published topics across all attorneys. At 10 attorneys and ~150 published topics, the check runs in under 2 seconds per batch.

At 20-30 attorneys you’d hit maybe 500-800 published topics over a year. The dedup is a straightforward Airtable filterByFormula call per suggestion, so it stays fast - the bottleneck would be Airtable API rate limits before the dedup logic itself becomes slow.

What would actually need rethinking at that scale is topic diversity. With 30 attorneys across maybe 5-6 practice areas, you’d want category-level balancing on top of the title-level dedup, otherwise you end up with 15 variations of the same theme. We’ve already started building that (topic pool with weighted categories) but it’s not fully battle-tested beyond 10 attorneys yet.

Happy to share more details on the category balancing approach if you’re building something similar.

can you please share an example of the article your flow generates?

Also, why and how do you use Fisher-Yates shuffle for quality control?