Building & Configuring Agents
Overview
Step-by-step guide to creating custom AI agents that automate your workflows. No coding required for basic agents, with advanced options for developers.
Quick Start
Create Your First Agent
Step 1: Choose Template
- Navigate to Automation → Agents
- Click "Create New Agent"
- Select template:
- Meeting Processor
- Document Analyzer
- Task Creator
- Custom (blank)
Step 2: Configure Basics
Name: Product Meeting Processor
Description: Processes product planning meetings and creates Jira tickets
Icon: 🚀Step 3: Set Trigger
Trigger Type: Meeting Completed
Filters:
- Calendar contains "Product"
- Duration > 15 minutes
- Participants include "Product Team"Step 4: Add Actions
Actions:
1. Generate Transcript
2. Extract Action Items
3. Create Jira Tickets
4. Send Summary Email
5. Post to SlackStep 5: Test & Deploy
1. Test with sample meeting
2. Review results
3. Adjust configuration
4. Enable agent
5. Monitor performanceAgent Builder Interface
Visual Builder
No-Code Interface:
┌─────────────────────────────────────┐
│ Agent: Meeting Processor │
├─────────────────────────────────────┤
│ │
│ ┌──────────┐ │
│ │ Trigger │ │
│ │ Meeting │ │
│ │ Ends │ │
│ └────┬─────┘ │
│ │ │
│ ┌────▼──────────┐ │
│ │ Generate │ │
│ │ Transcript │ │
│ └────┬──────────┘ │
│ │ │
│ ┌────▼──────────┐ │
│ │ Extract │ │
│ │ Action Items │ │
│ └────┬──────────┘ │
│ │ │
│ ┌────▼──────────┐ │
│ │ Create │ │
│ │ Jira Tickets │ │
│ └───────────────┘ │
│ │
│ [Test] [Save] [Deploy] │
└─────────────────────────────────────┘Code Editor (Advanced)
YAML Configuration:
yaml
name: meeting-processor
version: 1.0
trigger:
type: event
source: meetings
filter:
calendar: "Product Team"
min_duration: 900 # 15 minutes
actions:
- name: transcribe
service: solatis.transcribe
timeout: 600
- name: extract_items
service: solatis.extract_action_items
requires: transcribe
parameters:
format: structured
confidence_threshold: 0.8
- name: create_tickets
service: jira.create_issues
requires: extract_items
for_each: action_item
parameters:
project: PROD
issue_type: Task
assignee: "{{action_item.assignee}}"
due_date: "{{action_item.due_date}}"
- name: notify
service: slack.post_message
requires: create_tickets
parameters:
channel: "#product-team"
template: meeting_summaryConfiguration Options
Triggers
Event-Based:
yaml
trigger:
type: event
events:
- meeting.completed
- document.uploaded
- task.created
filters:
workspace: "{{workspace_id}}"
tags: ["important"]Time-Based:
yaml
trigger:
type: schedule
cron: "0 9 * * MON" # Every Monday at 9 AM
timezone: "America/New_York"Manual:
yaml
trigger:
type: manual
permissions:
- role: admin
- role: editorConditional:
yaml
trigger:
type: conditional
condition: |
document.size > 1MB AND
document.type == 'contract' AND
workspace.name == 'Legal'Actions
Built-in Actions:
AI Processing:
solatis.transcribe- Audio to textsolatis.summarize- Generate summarysolatis.extract_entities- Find people, dates, etc.solatis.extract_action_items- Find taskssolatis.chat- Ask AI questions
Integrations:
jira.create_issue- Create Jira ticketasana.create_task- Create Asana taskslack.post_message- Post to Slackemail.send- Send emailcalendar.create_event- Create meeting
Data Operations:
solatis.search- Search documentssolatis.create_document- Create docsolatis.update_document- Update docdatabase.query- Query databasehttp.request- API call
Parameters
Static Values:
yaml
parameters:
project: "PROD"
priority: "Medium"
labels: ["auto-generated"]Dynamic Values:
yaml
parameters:
assignee: "{{action_item.assignee}}"
due_date: "{{action_item.due_date}}"
title: "{{meeting.title}} - Action Item"
description: |
From meeting: {{meeting.title}}
Date: {{meeting.date}}
Context: {{action_item.context}}Transformations:
yaml
parameters:
priority: "{{action_item.priority | uppercase}}"
due_date: "{{action_item.date | add_days(7) | format('YYYY-MM-DD')}}"
assignee: "{{mention | lookup_user | get('email')}}"Error Handling
Retry Logic:
yaml
error_handling:
retry:
max_attempts: 3
backoff: exponential
initial_delay: 1000 # milliseconds
max_delay: 30000Fallback Actions:
yaml
error_handling:
on_failure:
- action: log_error
- action: notify_admin
parameters:
channel: "#alerts"
message: "Agent failed: {{error.message}}"
- action: create_manual_task
parameters:
title: "Fix agent: {{agent.name}}"
assignee: "{{agent.owner}}"Timeout Handling:
yaml
actions:
- name: long_running_task
timeout: 300000 # 5 minutes
on_timeout:
action: cancel_and_notifyAdvanced Features
Conditional Logic
If-Then-Else:
yaml
actions:
- name: check_priority
service: solatis.evaluate
condition: "{{action_item.priority == 'high'}}"
- name: urgent_flow
service: jira.create_issue
if: "{{check_priority.result == true}}"
parameters:
priority: "Highest"
labels: ["urgent"]
- name: normal_flow
service: jira.create_issue
if: "{{check_priority.result == false}}"
parameters:
priority: "Medium"Loops & Iteration
For Each:
yaml
actions:
- name: create_tickets
service: jira.create_issue
for_each: "{{action_items}}"
parameters:
summary: "{{item.title}}"
assignee: "{{item.assignee}}"While Loop:
yaml
actions:
- name: process_batch
service: solatis.process_documents
while: "{{documents.remaining > 0}}"
parameters:
batch_size: 10Data Transformation
Extract & Transform:
yaml
actions:
- name: extract_data
service: solatis.extract_entities
output:
people: "{{entities | filter('type', 'person') | map('name')}}"
dates: "{{entities | filter('type', 'date') | map('value')}}"
- name: format_data
service: custom.transform
input:
formatted_people: "{{extract_data.people | join(', ')}}"
next_date: "{{extract_data.dates | first}}"Parallel Execution
Run Actions in Parallel:
yaml
actions:
- name: parallel_group
type: parallel
actions:
- name: create_jira
service: jira.create_issue
- name: post_slack
service: slack.post_message
- name: send_email
service: email.send
wait_for: all # or 'any' or 'first'Testing & Debugging
Test Mode
Test with Sample Data:
1. Click "Test Agent"
2. Select test data source:
- Sample meeting
- Sample document
- Custom JSON
3. Run test
4. Review results
5. Check logsTest Output:
json
{
"status": "success",
"duration": 12.3,
"actions_completed": 5,
"results": {
"transcribe": {
"status": "success",
"duration": 8.2,
"words": 1247
},
"extract_items": {
"status": "success",
"duration": 2.1,
"items_found": 3
},
"create_tickets": {
"status": "success",
"duration": 1.8,
"tickets_created": ["PROD-123", "PROD-124", "PROD-125"]
}
}
}Debug Mode
Detailed Logging:
yaml
agent:
name: meeting-processor
debug: true
log_level: verbose
logging:
- action_inputs
- action_outputs
- transformations
- api_calls
- errorsLog Output:
[2024-10-11 14:30:00] Agent started: meeting-processor
[2024-10-11 14:30:01] Trigger matched: meeting.completed
[2024-10-11 14:30:01] Action: transcribe (starting)
[2024-10-11 14:30:09] Action: transcribe (completed, 8.2s)
[2024-10-11 14:30:09] Output: 1247 words transcribed
[2024-10-11 14:30:09] Action: extract_items (starting)
[2024-10-11 14:30:11] Action: extract_items (completed, 2.1s)
[2024-10-11 14:30:11] Output: 3 action items found
[2024-10-11 14:30:11] Action: create_tickets (starting)
[2024-10-11 14:30:13] Created ticket: PROD-123
[2024-10-11 14:30:13] Created ticket: PROD-124
[2024-10-11 14:30:13] Created ticket: PROD-125
[2024-10-11 14:30:13] Action: create_tickets (completed, 1.8s)
[2024-10-11 14:30:13] Agent completed: successDeployment
Deploy Options
Gradual Rollout:
yaml
deployment:
strategy: gradual
stages:
- percentage: 10
duration: 24h
- percentage: 50
duration: 48h
- percentage: 100A/B Testing:
yaml
deployment:
strategy: ab_test
variants:
- name: version_a
percentage: 50
config: agent_v1.yaml
- name: version_b
percentage: 50
config: agent_v2.yaml
duration: 7dMonitoring
Performance Metrics:
- Execution count
- Success rate
- Average duration
- Error rate
- Cost per execution
Alerts:
yaml
monitoring:
alerts:
- condition: "error_rate > 0.05"
action: notify
channel: "#alerts"
- condition: "avg_duration > 300"
action: notify
message: "Agent running slow"
- condition: "executions_per_hour > 1000"
action: throttle
limit: 500Best Practices
Agent Design:
- Start simple, add complexity gradually
- Single responsibility per agent
- Clear naming conventions
- Document expected behavior
- Include error handling
- Log important events
Performance:
- Minimize API calls
- Cache when possible
- Use parallel execution
- Set appropriate timeouts
- Monitor costs
Security:
- Least privilege access
- Validate inputs
- Sanitize outputs
- Encrypt secrets
- Audit logs
Next Steps
- Meeting Analysis Agent - Specific example
- Task Automation Agent - Implementation
- Knowledge Retrieval Agent - Search automation
Last Updated: October 11, 2025