Swimlane diagrams for business workflows and approval automation
Business workflows involve multiple departments, roles, and decision points. An order might start in Sales, move to Fulfillment, then Finance—each responsible for specific steps. Swimlane diagrams show exactly who does what and when, making approval automation clear and accountability explicit. They're the missing piece between high-level process maps and detailed implementation docs.
What swimlanes show
A swimlane diagram is a flowchart where each horizontal or vertical lane represents a role, department, or system. Shapes (rectangles, diamonds, ovals) sit inside lanes; arrows cross lanes to show handoffs. The result: a visual audit trail of who touches the work and when.
Swimlanes are best for:
- Approval workflows (single-sign vs. multi-level approval)
- Cross-department processes (order-to-cash, hire-to-onboard)
- Compliance documentation (who approves what, for audit)
- Handoff identification (where delays and rework happen)
- Automation discovery (which steps can be rules-based vs. manual)
Simple example: expense approval
flowchart TD
subgraph Employee
A([Submit Expense])
B["Add receipt"]
C["Set category"]
end
subgraph Manager
D{Review<br/>expense}
E["Request<br/>clarification"]
F["Approve"]
end
subgraph Finance
G{Audit<br/>check}
H["Flag for<br/>review"]
I["Process<br/>payment"]
end
subgraph System
J["Reimburse"]
end
A --> B --> C
C --> D
D -->|Needs info| E --> C
D -->|OK| F
F --> G
G -->|Flags| H --> G
G -->|Pass| I
I --> J
This diagram makes it clear:
- The employee submits, the manager approves, finance audits, the system pays.
- Loops exist where clarification is needed (C → E → C).
- Finance's audit check is a gate before payment.
- Each actor sees only the work in their lane.
Multi-actor parallel workflows
Many real-world processes run in parallel. A loan application might require credit check AND income verification simultaneously, then both feed into underwriting.
flowchart TD
subgraph Applicant
A([Apply for loan])
B["Provide docs"]
end
subgraph Credit["Credit Team"]
C["Pull credit<br/>report"]
D{Score<br/>✓ OK?}
E["Flag high<br/>risk"]
end
subgraph Income["Income Verification"]
F["Request<br/>pay stubs"]
G["Verify with<br/>employer"]
H{Income<br/>confirmed?}
end
subgraph Underwriter
I{Both<br/>approved?}
J["Offer terms"]
K["Decline"]
end
A --> B
B --> C
B --> F
C --> D
F --> G
G --> H
D -->|Risk OK| I
H -->|Confirmed| I
D -->|High risk| E --> E
H -->|Not confirmed| I
I -->|Yes| J
I -->|No| K
Key insights from this diagram:
- Credit and income checks happen in parallel (no artificial waiting).
- Both feedinto the underwriter's gate.
- Risk flags and income mismatches both lead to the same decision point.
- Teams see only what they own; handoffs are explicit.
Swimlane shapes: meaning matters
Use the same shape conventions as flowcharts:
- Rectangle = work (approval, review, entry)
- Diamond = decision (passes test? approved? yes/no gates)
- Oval = start/end
- Cylinder = data store (pull info from a system)
- Parallelogram = manual input/output
Consistent shapes make diagrams intuitive.
Designing swimlanes: a checklist
-
Identify roles/departments
List everyone who touches the process. Ignore individual names; use roles ("Sales Rep", "Finance Analyst"). This keeps the diagram durable as people change. -
Find handoff points
Where does work cross from one person to another? These are your lane crossings. Too many crossings = inefficient process. -
Model decisions explicitly
Every diamond is a gate. Spell out the criteria ("> $5000?", "Credit OK?", "Manager on-call?"). Vague gates hide process risk. -
Name activities clearly
"Approve order" is clearer than "Process". "Request clarification" is clearer than "Follow up". Readers should know what happens without asking. -
Watch for loops
Rework (bouncing between lanes) is expensive. If an approval bounces back to an employee 3 times, that's a sign the criteria are unclear—fix the gate, not the tolerance for rework. -
Add timing or SLAs
Optional: label arrows with time ("within 24h", "immediately", "end of month") so teams know urgency. Mermaid doesn't render timing natively, but you can add it as note text.
Real-world example: hire-to-onboard
flowchart TD
subgraph Recruiting
A([Req posted])
B["Screen<br/>candidates"]
C{Top 3?}
D["Schedule<br/>interviews"]
end
subgraph Hiring["Hiring Manager"]
E{Interview<br/>passes?}
F["Extend<br/>offer"]
end
subgraph HR
G["Background<br/>check"]
H{Clear?}
I["IT setup<br/>request"]
J["Payroll<br/>enroll"]
end
subgraph IT
K["Laptop &<br/>accounts"]
L["Collect<br/>keys"]
end
subgraph NewHire
M["First day"]
N([Onboarded])
end
A --> B --> C
C -->|Yes| D --> E
E -->|Pass| F
F --> G
G --> H
H -->|Clear| I
H -->|Fail| C
I --> J
J --> K
K --> L
L --> M --> N
This diagram reveals:
- Parallel work: IT and Payroll setup happen together (lane separation).
- Loops: Failed background checks send candidates back to recruiting.
- Dependencies: Offer must clear background check before IT touches anything.
- Accountability: Each team owns specific steps, making delays traceable.
Converting swimlanes to automation rules
Once you've drawn the swimlane diagram, automation opportunities become obvious:
| Swimlane Step | Automatable? | Rule |
|---|---|---|
| Submit expense | No (human action) | N/A |
| Review < $50 | Yes | Auto-approve if under threshold & receipt attached |
| Finance audit | Partial | Flag duplicates, verify category; human reviews edge cases |
| Process payment | Yes | Auto-payment to employee's bank on approval |
Swimlanes help you avoid over-automating (removing human judgment where it matters) and under-automating (keeping manual steps that could be rules).
Swimlane vs. swimlane + flowchart
- Swimlane only → who does what (organizational focus)
- Swimlane + embedded flowchart → what decisions each role makes (logic focus)
For complex decisions within a lane, embed a small flowchart (using subgraph nesting) or reference a separate decision tree.
Common mistakes
-
Mixing roles and systems
Don't put "database" in a lane alongside "manager"—use a data store shape and note the system, or keep human roles in swimlanes and show system calls as arrows. -
Too many swimlanes
If you have >6 lanes, the diagram becomes unreadable. Group related roles (all "finance" roles in one swim lane, all "field" roles in another). -
Vague activity names
"Process" and "handle" force readers to guess. Name the specific action: "verify income", "flag high-risk", "request clarification". -
Not showing loops
Rework is part of reality. Hiding it makes the diagram look simpler than the process actually is. Draw the loop so teams see the cost.
When to use swimlanes
- Compliance or audit → swimlanes create accountability records
- Cross-team process → swimlanes show dependencies
- Slow or manual process → swimlanes identify where to automate
- Training new team members → swimlanes show "who does what and when"
- Negotiating handoffs → swimlanes make friction visible
Swimlane diagrams work best when you can draw them in 15 minutes—if you need more than 45 minutes, the process is too complex and needs to be broken into sub-processes.
FAQ
Can I show conditional approval (multiple approvers)?
Yes. Use diamonds in each lane for each decision gate. If 2 of 3 approvers must sign off, show 3 decision nodes and merge their outputs.
What if the same person wears two hats?
Use one swimlane per role, not per person. If someone is "Sales Rep" and "Sales Lead", they appear in both contexts—that's OK and reflects organizational reality.
Should I put API calls or system integrations in swimlanes?
Use a data-store shape (cylinder) or a separate lane labeled "System" for automated steps. Reserve human swimlanes for actual people.
How do I show approval chains (level 1, level 2, level 3)?
Stack them: Applicant → Level 1 Approval → Level 2 Approval → Level 3 Approval. Each has a decision diamond; if Level 1 rejects, loop back to Applicant (not Level 2).
Draw your next approval workflow in MermaidCreator—swimlanes transform messy email chains into clear accountability.
Related posts
Test case documentation with Mermaid diagrams
Model test scenarios, happy paths, and edge cases visually. Use Mermaid flowcharts and sequence diagrams to document test coverage and verify test logic.
Batch diagram rendering & automation with Mermaid
Generate dozens of diagrams programmatically—ideal for documentation pipelines, reports, and CI/CD automation.