Interactive demo

Capellaris in action, with worked examples and code.

Chat with agents

This demo simulates an exchange with the specialised agents through a chat interface, and shows how each one answers a request inside its own speciality.

Simulated chat with the marketing agent

User:

@agente_marketing analyse the results of our email marketing campaign from last quarter and suggest ways to raise the conversion rate.

Marketing agent:

I will analyse last quarter's email marketing results and suggest how to raise the conversion rate. To do that I need access to the campaign performance data. Do you confirm I can go ahead?

User:

Approved.

Marketing agent:

Here is the analysis of last quarter's email marketing campaign:

Headline metrics:

  • Open rate: 24.3% (↓ 2.1% on the previous quarter)
  • Click rate: 3.7% (↓ 0.5% on the previous quarter)
  • Conversion rate: 1.2% (↓ 0.3% on the previous quarter)
  • Unsubscribe rate: 0.8% (↑ 0.2% on the previous quarter)

Analysis:

Every headline indicator is trending down. The data points to four contributing factors:

  • Weaker subject lines (falling open rate)
  • Less engaging content (falling click rate)
  • Unoptimised landing pages (falling conversion rate)
  • Too many emails (rising unsubscribe rate)

Recommendations to raise the conversion rate:

  1. Sharpen the segmentation: refine audience segments on purchase behaviour and prior engagement, so the content lands as relevant.
  2. Optimise subject lines: A/B test different subject formats to find what actually lifts the open rate.
  3. Redesign the CTAs: make the call-to-action buttons more visible and more convincing, with clear, urgent copy.
  4. Improve the landing pages: align them with what the email promised and take friction out of the conversion.
  5. Adjust the frequency: send less overall, and base the sending schedule on each subscriber's stated preference.

Would you like me to go deeper on any of these, or draft a concrete action plan to put them in place?

What is happening here:

In this demo the marketing agent:

  1. Asks for approval before doing the work (human confirmation)
  2. Analyses the data the request actually needs
  3. Returns a structured analysis with metrics and findings
  4. Gives specific recommendations you can act on
  5. Offers to take the analysis further

Squad formation

This demo shows agents working together as a squad on a task that needs several specialities. Here, a product launch squad builds a complete launch plan.

Simulated product launch squad

User:

@squad_lancamento build a complete plan for the launch of our new business management software, covering marketing strategy, financial forecast and sales plan.

Launch squad (lead agent):

I will coordinate a complete launch plan for the new business management software. That means market analysis, financial planning, sales strategy and operational planning. Do you confirm we can go ahead?

User:

Approved. The software targets small and medium businesses, and the focus is on simplifying administrative work.

Launch squad (lead agent):

Thank you for the approval and the extra context. The squad is on it — each specialist is building its part of the plan:

Marketing agent:

Working on positioning and the communication plan...

Finance agent:

Building the financial projections and the ROI analysis...

Sales agent:

Drafting the commercial strategy and the sales plan...

Operations agent:

Preparing the logistics and operations plan...

The full plan will be ready shortly. Would you like interim updates from each agent, or would you rather wait for the consolidated plan?

User:

I'll wait for the consolidated plan.

Launch squad (lead agent):

Understood. We will finish the plan and present it as one document. One moment while we wrap up.

Launch squad (lead agent):

Here is the complete launch plan for the new business management software:

Launch plan: business management software for SMBs

1. Marketing strategy and positioning
  • Positioning: "Simpler admin, so you can get back to growing the business"
  • Target audience: small and medium businesses (10–250 employees) in services, retail and light manufacturing
  • Differentiation: an intuitive interface, rollout in under a week, hands-on support
  • Marketing channels: content marketing, webinars, partnerships with trade associations, targeted digital
  • Timeline: pre-launch campaign (6 weeks), launch event, post-launch campaign (12 weeks)
2. Financial analysis and projections
  • Up-front investment: R$ 850,000 (final development, marketing, sales, operations)
  • Revenue model: monthly subscription (R$ 99–499/month) plus implementation services
  • Revenue projection: R$ 1.2M (year 1), R$ 3.5M (year 2), R$ 7.8M (year 3)
  • Break-even: month 14 (all costs included)
  • Projected ROI: 125% over three years
3. Sales strategy and go-to-market
  • Sales channels: in-house team, channel partners, self-service platform
  • Sales process: free demo, 14-day proof of concept, assisted onboarding
  • Incentives: annual-contract discount, referral programme, launch offers
  • Targets: 120 customers (Q1), 350 (Q2), 750 (year 1)
  • Expansion: upsell extra modules, move into new segments in year 2
4. Operations and logistics plan
  • Infrastructure: scalable cloud environment, 24/7 monitoring, 99.9% uptime SLA
  • Customer support: dedicated team, live chat, knowledge base, training webinars
  • Implementation: a standard onboarding process, with templates pre-configured per sector
  • Quality control: a beta with 20 selected customers before the official launch
  • Scaling: a hiring and training plan sized for the projected growth
5. Launch timeline
  • Phase 1 (weeks 1–6): finish the product, run the beta, prepare marketing material
  • Phase 2 (weeks 7–8): pre-launch campaign, train the sales and support teams
  • Phase 3 (week 9): official launch event, sales open
  • Phase 4 (weeks 10–22): post-launch campaign, tuning against feedback
  • Phase 5 (week 23 onwards): market expansion, new features

The squad built this together, combining marketing, finance, sales and operations expertise. Would you like more detail on any part of it?

What is happening here:

In this demo the squad:

  1. Asks for approval before doing the work (human confirmation)
  2. Splits the complex task across specialised agents
  3. Works in coordination under one lead agent
  4. Keeps the user posted on progress
  5. Consolidates each contribution into one coherent plan

Human confirmation

This demo walks through human confirmation, the mechanism that stops an agent taking an unauthorised action, and shows how approval requests are presented and handled.

Simulated approval process

Approval request — medium level

Agente: Agente Financeiro

Task: financial feasibility analysis for expanding operations

Description: the finance agent needs three years of financial data to assess whether expanding into new markets is viable.

Access required: financial reports, market projections, performance data by region

Approval level: medium (internal data, not sensitive)

Approved

Aprovado por: Maria Silva (Gerente Financeira)

Data/Hora: 24/04/2025 10:45

Comment: "Approved. Please share the results as soon as the analysis is done."

Approval request — high level

Agente: Agente de RH

Task: pay equity analysis by department

Description: the HR agent needs detailed salary data for all employees to analyse pay equity by department, gender and seniority.

Access required: salary data, demographic information, promotion history

Approval level: high (sensitive employee data)

More detail requested

Solicitado por: Carlos Mendes (Diretor de RH)

Data/Hora: 24/04/2025 11:15

Question: "What format will the final report take, and who gets access to it? We need to guarantee confidencialidade dos dados individuais."

Resposta do Agente

The final report is aggregated, with no individual identification. It covers metrics and trends by department and seniority only. It goes to the HR board and the diversity and inclusion committee, in line with the company's confidentiality policy.

Approved

Aprovado por: Carlos Mendes (Diretor de RH)

Data/Hora: 24/04/2025 11:30

Comment: "Approved, on condition that individual data is anonymised and the final report is reviewed before it goes out."

Approval request — low level

Agente: Agente de Marketing

Task: performance analysis of social media posts

Description: the marketing agent needs last quarter's social post performance to find patterns and tune the content strategy.

Access required: public social metrics, the content calendar

Approval level: low (public data only)

Approved automatically

Approved by: the system (automatic for low-level tasks)

Data/Hora: 24/04/2025 09:05

Comment: "Automatic approval granted for a low-level task, per the approval policy."

Como funciona:

Human confirmation is made up of:

  • Classifying tasks by approval level (low, medium, high) on impact and sensitivity
  • Working out automatically who should approve at each level
  • Presenting the request clearly, with everything relevant included
  • Options to approve, reject or ask for more detail
  • A complete record of every approval, for audit and traceability
  • Automatic approval for low-impact tasks (optional, configurable)

Learning system

This demo shows how the learning system keeps improving the agents, using the interaction history and the feedback it receives.

The learning process, step by step

Example: how a campaign-analysis prompt evolves

First interaction:

User prompt: "Analyse our last email campaign."

Agent response: [a basic analysis with headline metrics]

User feedback: "Missing segmentation, and no comparison with previous campaigns."

Analysis and tuning:

Pattern found: campaign-analysis requests almost always want segmentation and a historical comparison.

Tuned prompt: "Analyse our last email campaign, including headline metrics, audience segmentation, comparison with previous campaigns, conversion rates and recommendations."

A later interaction:

User prompt: "Analyse our March email campaign."

Expanded internal prompt: "Analyse the March email campaign, including headline metrics, audience segmentation, comparison with previous campaigns, conversion rates and recommendations."

Agent response: [a full analysis covering everything asked for]

User feedback: "Excellent analysis — thorough and useful."

Learning metrics

Satisfaction rate

87%

↑ 12% over the last 30 days

Rejection rate

8%

↓ 5% over the last 30 days

Optimisation impact

92%

↑ 8% over the last 30 days

Domain coverage

78%

↑ 15% over the last 30 days

Patterns found recently:

  • Financial analysis requests usually want cash flow projections
  • People prefer charts when comparing performance
  • Specific, actionable recommendations are valued more than general analysis
  • Historical context raises the quality of an analysis considerably
  • Clear structure and section headings raise satisfaction

Como funciona:

The learning system runs as a continuous loop:

  1. Collecting and storing every interaction between people and agents
  2. Analysing patterns to find where it can improve
  3. Tuning prompts automatically against those patterns
  4. Applying the tuning to new interactions
  5. Monitoring performance continuously and adjusting again

Slack integration

This demo shows people working with the agents inside Slack, using threads, interactive blocks and notifications.

Simulated exchange in Slack

Jane Doe

@agente_financeiro I need a feasibility analysis for a new project. Up-front investment is R$ 500,000 and projected revenue is R$ 200,000 a year.

Finance agent

Approval request

O agente financeiro gostaria de executar a seguinte tarefa:

"Financial feasibility analysis for a new project: R$ 500,000 up front, R$ 200,000 projected revenue a year."

This task involves financial calculations and an ROI analysis.

Jane Doe

Approved

Finance agent

Here is the financial feasibility analysis for the project:

Financial feasibility analysis

Project parameters:

  • Up-front investment: R$ 500,000
  • Projected annual revenue: R$ 200,000
  • Discount rate used: 10% (market standard)
  • Analysis horizon: 5 years

Financial indicators:

  • Simple payback: 2.5 years
  • Discounted payback: 3.1 years
  • NPV (net present value): R$ 258,432
  • IRR (internal rate of return): 24.5%
  • Five-year ROI: 151.7%

Sensitivity analysis:

Scenario NPV IRR Payback
Pessimistic (−20% revenue) R$ 106,745 14.8% 4.2 years
Base R$ 258,432 24.5% 3.1 years
Optimistic (+20% revenue) R$ 410,118 33.7% 2.4 years

Conclusion: the project is financially viable — positive NPV and an IRR above the discount rate. Payback is reasonable, and it stays viable even in the pessimistic scenario. I recommend going ahead, while watching the projected revenue closely.

Jane Doe

Excellent analysis. Could you also work out the impact of raising the up-front investment to R$ 600,000 with annual revenue of R$ 250,000?

Como funciona:

The Slack integration gives you:

  • Natural interaction through mentions (@agent_name) in channels or direct messages
  • Approval requests with interactive buttons
  • Rich responses with formatting, tables and charts
  • Action buttons for common operations (export, see detail, and so on)
  • Threaded conversations, so context is kept
  • Notifications for tasks and updates

Code examples

Code examples to help developers integrate with and extend o Capellaris.

Creating a custom agent

from gerenciador_agentes_ia.core import AgentManager
from gerenciador_agentes_ia.agents import Agent

# Initialise the agent manager
agent_manager = AgentManager()

# Create a custom agent for data analysis
data_agent = Agent(
    id="agent_data_analysis",
    name="Data Analysis Agent",
    description="Specialist in data analysis and visualisation",
    specialty="data_analysis",
    base_prompt="""
    You are a data analysis specialist with deep experience in statistics, data
    visualisation and interpreting results. Your job is to pull useful findings out of a
    dataset and present them clearly enough to act on.
    
    When analysing data you should:
    1. Identify trends, patterns and anomalies
    2. Apply the appropriate statistical methods
    3. Build informative visualisations
    4. Interpret the results clearly
    5. Suggest actions based on what you found
    
    Your answers should be structured, precise and focused on findings that can be acted on.
    """,
    tools=[
        "data_import",
        "statistical_analysis",
        "data_visualization",
        "report_generation"
    ],
    config={
        "model": "gpt-4",
        "temperature": 0.2,
        "max_tokens": 2000,
        "supported_formats": ["csv", "excel", "json", "sql"]
    }
)

# Register the agent with the system
agent_manager.register_agent(data_agent)

# Check the agent registered correctly
registered_agent = agent_manager.get_agent("agent_data_analysis")
print(f"Agent registered: {registered_agent.name}")
                            

Integrating an external API

from gerenciador_agentes_ia.core import ToolRegistry
from gerenciador_agentes_ia.tools import Tool
import requests

# Build a tool that talks to a weather API
class WeatherTool(Tool):
    def __init__(self, api_key):
        super().__init__(
            name="weather_tool",
            description="Fetches weather information for a given location",
            parameters={
                "location": {
                    "type": "string",
                    "description": "Nome da cidade ou coordenadas (latitude,longitude)"
                },
                "units": {
                    "type": "string",
                    "description": "Unidades de medida (metric, imperial)",
                    "default": "metric"
                }
            }
        )
        self.api_key = api_key
        self.base_url = "https://api.openweathermap.org/data/2.5/weather"
    
    def execute(self, parameters):
        """
        Executa a ferramenta com os parâmetros fornecidos.
        
        Args:
            parameters (dict): parameters for the call
            
        Returns:
            dict: the result of the call
        """
        try:
            # Build the request parameters
            params = {
                "q": parameters.get("location"),
                "units": parameters.get("units", "metric"),
                "appid": self.api_key
            }
            
            # Call the API
            response = requests.get(self.base_url, params=params)
            response.raise_for_status()
            
            # Processar resposta
            data = response.json()
            
            # Formatar resultado
            result = {
                "location": f"{data['name']}, {data['sys']['country']}",
                "temperature": {
                    "current": data["main"]["temp"],
                    "feels_like": data["main"]["feels_like"],
                    "min": data["main"]["temp_min"],
                    "max": data["main"]["temp_max"]
                },
                "humidity": data["main"]["humidity"],
                "pressure": data["main"]["pressure"],
                "wind": {
                    "speed": data["wind"]["speed"],
                    "direction": data["wind"]["deg"]
                },
                "weather": {
                    "main": data["weather"][0]["main"],
                    "description": data["weather"][0]["description"]
                }
            }
            
            return {
                "status": "success",
                "data": result
            }
            
        except Exception as e:
            return {
                "status": "error",
                "message": str(e)
            }

# Registrar a ferramenta no sistema
tool_registry = ToolRegistry()
weather_tool = WeatherTool(api_key="your_api_key_here")
tool_registry.register_tool(weather_tool)

# Atribuir a ferramenta a um agente
agent_manager = AgentManager()
agent = agent_manager.get_agent("agent_operations_1")
agent.add_tool("weather_tool")
                            

Creating a custom squad

from gerenciador_agentes_ia.core import SquadManager, AgentManager
from gerenciador_agentes_ia.squads import Squad, WorkflowStep, WorkflowType

# Inicializar os gerenciadores
agent_manager = AgentManager()
squad_manager = SquadManager(agent_manager)

# Define the workflow steps for a market analysis
workflow_steps = [
    WorkflowStep(
        agent_id="agent_data_analysis",
        task="data_collection",
        description="Coletar e preparar dados de mercado"
    ),
    WorkflowStep(
        agent_id="agent_marketing_1",
        task="trend_analysis",
        description="Analyse trends and consumer behaviour"
    ),
    WorkflowStep(
        agent_id="agent_financial_1",
        task="financial_analysis",
        description="Run the financial analysis of the market"
    ),
    WorkflowStep(
        agent_id="agent_sales_1",
        task="competitor_analysis",
        description="Analisar concorrentes e oportunidades"
    ),
    WorkflowStep(
        agent_id="agent_marketing_1",
        task="consolidation",
        description="Consolidate the results and prepare the final report"
    )
]

# Create a custom squad for market analysis
market_analysis_squad = Squad(
    id="squad_market_analysis_custom",
    name="Custom Market Analysis Squad",
    description="A team specialised in full market and segment analysis",
    agents=[
        {"id": "agent_data_analysis", "role": "data_analyst"},
        {"id": "agent_marketing_1", "role": "marketing_specialist"},
        {"id": "agent_financial_1", "role": "financial_analyst"},
        {"id": "agent_sales_1", "role": "sales_strategist"}
    ],
    leader_id="agent_marketing_1",
    workflow={
        "type": WorkflowType.SEQUENTIAL,
        "steps": workflow_steps
    },
    config={
        "max_execution_time": 3600,
        "intermediate_results": True,
        "approval_required": True,
        "output_format": "report"
    }
)

# Registrar o squad no sistema
squad_manager.register_squad(market_analysis_squad)

# Executar uma tarefa com o squad
task_result = squad_manager.execute_task(
    squad_id="squad_market_analysis_custom",
    task="Produce a full analysis of the business management software market for small and medium businesses in Brazil, covering competitors, trends and openings.",
    context={
        "target_market": "Small and medium businesses",
        "geographic_focus": "Brasil",
        "industry_sectors": ["Retail", "Services", "Manufacturing"],
        "time_horizon": "12 meses"
    },
    requester="user@company.com"
)

# Obter o ID da tarefa para acompanhamento
task_id = task_result["task_id"]
print(f"Tarefa iniciada com ID: {task_id}")