Optimize Lindy AI agent performance and response times.
Use when improving latency, optimizing throughput,
or reducing response times.
Trigger with phrases like "lindy performance", "lindy slow",
"optimize lindy", "lindy latency".
Lindy agents execute as multi-step workflows where each step (LLM call, action
execution, API call, condition evaluation) adds latency and credit cost. Optimization
targets: fewer steps, smaller models, faster actions, tighter prompts.
Prerequisites
Lindy workspace with active agents
Access to agent Tasks tab (view step-by-step execution history)
Understanding of agent workflow structure
Instructions
Step 1: Profile Agent Execution
In the Tasks tab, open a completed task and review:
Total task duration: Baseline for improvement
Per-step timing: Identify the slowest steps
Credit consumption: Which steps cost the most
Step count: Total actions executed per task
Common bottlenecks:
Bottleneck
Symptom
Fix
Large model on simple task
High credit cost, slow
Switch to Gemini Flash
Too many LLM steps
Long total duration
Consolidate into fewer steps
Agent Step with many skills
Unpredictable path
Reduce to 2-4 focused skills
Knowledge Base over-querying
Multiple KB searches
Increase Max Results per query
Sequential when parallel possible
Unnecessary waiting
Use loop with Max Concurrent > 1
Step 2: Right-Size Model Selection
The single biggest performance lever. Match model to task complexity:
Task
Recommended Model
Speed
Credits
Route email to category
Gemini Flash
Fast
~1
Extract fields from text
GPT-4o-mini
Fast
~2
Draft short response
Claude Sonnet
Medium
~3
Complex multi-step analysis
GPT-4 / Claude Opus
Slow
~10
Simple phone call
Gemini Flash
Fast
~20/min
Complex phone conversation
Claude Sonnet
Medium
~20/min
Rule of thumb: Start with the smallest model. Only upgrade if output quality
is insufficient. Most classification and routing tasks work fine with Gemini Flash.
Analyze this email and return JSON with:
1. "classification": one of [billing, technical, general]
2. "entities": {customer_name, product, issue_type}
3. "draft_response": professional reply under 150 words
Email: {{email_received.body}}
Step 4: Use Deterministic Actions Where Possible
Replace AI-powered fields with Set Manually mode when values are predictable:
Field
Instead of AI Prompt
Use Set Manually
Slack channel
"Post to the support channel"
#support-triage
Email subject
"Create an appropriate subject"
[Ticket] {{email_received.subject}}
Sheet column
"Determine the right column"
Column A
Each Set Manually field saves one LLM inference (~1 credit).
Step 5: Optimize Knowledge Base Queries
Max Results: Set to the minimum needed (default 4, max 10)
Search Fuzziness: Keep at 100 (semantic) unless precision matching needed
Query mode: Use AI Prompt with specific instructions:
Search for the customer's specific product issue.
Focus on: {{extracted_entities.product}} {{extracted_entities.issue_type}}
Not: "Search for relevant information" (too vague, wastes results)
Step 6: Optimize Trigger Filters
Prevent wasted runs with precise trigger filters:
Before: Email Received (all emails) → 200 runs/day → 600 credits
After: Email Received (label: "support" AND NOT from: "noreply@")
→ 30 runs/day → 90 credits (85% savings)
Step 7: Use Agent Steps Judiciously
Agent Steps (autonomous mode) are powerful but expensive — the agent may take
unpredictable paths and use more actions than a deterministic workflow.
Use Agent Steps when: Next steps are genuinely uncertain (complex research,
multi-source investigation, adaptive problem-solving)
Use deterministic actions when: Steps are predictable (classify -> route -> respond)
When using Agent Steps:
Limit available skills to 2-4
Set clear, measurable exit conditions
Include a fallback exit condition to prevent infinite loops
Monitor credit consumption of first 10 runs to establish baseline
Step 8: Loop Optimization
For batch processing, configure loops for efficiency:
Max Concurrent: Increase for independent items (parallel execution)
Max Cycles: Always set a cap to prevent runaway processing
Only pass essential data as loop output (not full context)