The Vammo Loop

The Vammo Loop

seu cérebro, olhos e mãos no piloto automático
your brain, eyes & hands on autopilot

As ferramentas de IA do time, funcionando como um só loop: Mind, Metabase e Vammo MCP.

The team's AI tools, working as one loop: Mind, Metabase, and Vammo MCP.

Começar agoraGet started Ver o loopSee the loop
Três pilares
Three pillars

Cérebro · olhos · mãos

Brain · eyes · hands

Cada ferramenta dá um sentido ao agente — e tem níveis de uso, do mais simples ao autopiloto.

Each tool gives the agent a sense — and a ladder of use, from the simplest ask to full autopilot.

🧠 Vammo Mind

A memória viva da Vammo. Hoje conhece: SOPs, specs de Hardware (arquivos de especificação, via Drive), mensagens de canais públicos do Slack, Leonardo Memory (só info pública), Jira e atividade do GitHub. É viva: nossos agentes leem e escrevem nela — cada run de loop salva um report, e é daí que vêm dedupe e cross-loop hits. E ela não inventa: tem proteções contra alucinação e responde ancorada no que está indexado, citando as fontes.

Vammo's living memory. Today it knows: SOPs, Hardware specs (specification files, via Drive), public-channel Slack messages, Leonardo Memory (public info only), Jira, and GitHub activity. It's living: our agents read from and write to it — every loop run saves a report, which is how dedupe and cross-loop hits work. And it doesn't make things up: it has anti-hallucination protections and answers grounded in what's indexed, citing its sources.

L1
Pergunte qualquer coisa / colha insightsAsk anything / gather insights ex.: “Qual a régua da política de cobrança?”, “Quem mexeu no firmware dos cabinets e o que mudou?” e.g. “What's our collections policy ladder?”, “Who's been working on cabinet firmware and what changed?”
L2
Construa a memóriaBuild the memory salve decisões, postmortems e processos — vira contexto que o time e os agentes recuperam depois. save decisions, postmortems and processes — it becomes context the team and agents recall later.
L3
Memória que move os loopsMemory that powers loops o mesmo cliente aparecendo no loop de churn e no de retenção — só porque ambos leem e escrevem na Mind. the same rider surfacing in both the churn and the retention loop — only because both read and write to Mind.

👀 Vammo Metabase

A camada de dados de onde os agentes “enxergam”: classificador de risco, reconciliação de churn, parcelas, status da frota… Leitura por padrão.

The data layer agents SENSE from: risk classifier, churn reconciliation, installments, fleet status… Read-only by default.

L1
Pergunte em linguagem naturalAsk a data question in plain language ex.: “Quantas vendas tivemos hoje até agora?”, “Quantas motos estão RENTED agora?” e.g. “How many sales today so far?”, “How many bikes are RENTED right now?”
L2
Crie e salve perguntas/dashboardsBuild & save questions/dashboards deixe o Claude escrever a query e salve pra reusar todo dia. let Claude write the query, then save it to reuse daily.
L3
Dirija ações diáriasDrive daily actions o diff diário do classificador de risco alimentando o loop de Cobrança, em vez de alguém olhando um dashboard. the daily risk-classifier diff feeding the Collections loop instead of eyeballing a dashboard.

Vammo MCP

Opere o backoffice como você mesmo (bikes, baterias, cabinets, usuários, assinaturas, pagamentos, manutenção, IoT…). Leituras são seguras; writes e IoT exigem confirmação. As mãos crescem sempre — e não se limitam ao backoffice: os mesmos agentes agem por onde a tarefa precisar — uma planilha, um Google Doc, Slack, e-mail — o que você precisar que a mão seja.

Operate the backoffice as yourself (bikes, batteries, cabinets, users, subscriptions, payments, maintenance, IoT…). Reads are safe; writes and IoT need confirmation. The hands keep growing — and they're not limited to the backoffice: the same agents act through whatever a task needs — a spreadsheet, a Google Doc, Slack, email — whatever you need the hands to be.

L1
Leia o backofficeRead the backoffice ex.: “Busca esse usuário”, “Onde está a moto X agora?”, “Mostra os slots e a saúde desse cabinet.” e.g. “Look up this user”, “Where is bike X right now?”, “Show this cabinet's slots and health.”
L2
Aja com aprovaçãoAct with approval uma mudança com confirmação — ou um agente como o Leonardo gera um approval link da ação, e um humano aprova num clique. a single change with confirmation — or an agent like Leonardo generates an approval link, so a human approves in one click.
L3
Ação orquestrada num loopOrchestrated action in a loop o watchdog de cabinets propondo o update_slot exato por cabinet como approval link. the cabinet watchdog proposing the exact update_slot per cabinet as an approval link.
O conceito
The concept

Um processo recorrente no piloto automático

A recurring process on autopilot

SENSEMetabase THINKMind ACTMCP / Slack REPORTMind

Evidência antes do design, dry-run antes de construir, report antes de agir.

Evidence before design, dry-run before build, report before action.

L1 · report-only — posta os achados, não age. Já mata a varredura manual.
L1 · report-only — posts findings, takes no action. Already kills the manual sweep.
L2 · propor e aprovar — um agente como o Leonardo posta approval links das ações MCP propostas; um humano aprova.
L2 · propose-and-approve — an agent like Leonardo posts approval links for the proposed MCP actions; a human approves.
L3 · autônomo — age dentro de guardrails, logando tudo. Só depois de L2 estável.
L3 · autonomous — acts within guardrails, logging everything. Only after stable L2.

Loops rodando hoje

Loops running today

Cobrança & Recolhimento

Collections & Recovery

Agir no atraso sem bloquear quem já regularizou.
Act on overdue without blocking who already paid.
SENSE funil de atraso + snapshot de risco.overdue funnel + risk snapshot. THINK cruza o snapshot com as parcelas vivas (D-0 decide): dos 15 maiores devedores, só 3 com atraso real — 12 bloqueios indevidos evitados.cross-checks the snapshot against live D-0 installments (D-0 decides): of the top 15 debtors, only 3 truly overdue — 12 wrongful blocks avoided. ACT abre recolhimento / confirma bloqueios pela régua.opens recovery / confirms blocks per the ladder.
★ menos bloqueios indevidos, recolhimento mais rápido
★ fewer false-positive blocks, faster recovery

Reconciliação de Churn & Ativos

Churn & Asset Reconciliation

Decisão pronta no lugar de investigação.
A ready decision instead of an investigation.
SENSE churns recentes + residual vs. depósito.recent churns + residual vs. deposit. THINK monta o dossiê (waterfall do depósito), sinaliza baterias não devolvidas.builds the dossier (deposit waterfall), flags unreturned batteries. ACT posta os dossiês ranqueados pra Finance decidir.posts ranked dossiers for Finance to decide.
★ investigação de 30 min → decisão de 2 min
★ 30-min investigation → 2-min decision

Watchdog de Cabinets

Cabinet & Swap-Error Watchdog

Heartbeat OK ≠ saudável.
Heartbeat OK ≠ healthy.
SENSE 394 swap errors/semana, agrupados por cabinet/slot — 1 cabinet concentra ~32%.394 swap errors/week, clustered by cabinet/slot — one cabinet concentrates ~32%. THINK checa a telemetria viva do cabinet via MCP — heartbeat verde, mas bateria a 3% sem corrente.checks live cabinet telemetry via MCP — heartbeat green, but a battery at 3% with no charge current. ACT propõe mandar slots ruins p/ manutenção + abre OS.proposes taking bad slots to maintenance + opens a service order.
★ swap errors/semana ↓
★ swap errors/week ↓

Integridade Diária da Frota

Daily Fleet Integrity

A reunião placa-a-placa vira revisão de exceções.
The plate-by-plate meeting becomes an exception review.
SENSE status da frota × associação de rider.fleet status × rider association. THINK filtro de persistência: 52 STORED-com-rider → 1 caso real (98% menos falso-positivo).persistence filter: 52 stored-with-rider → 1 real case (98% fewer false positives). ACT entrega a pauta de exceções de 5 min.delivers the 5-min exception agenda.
★ só exceções reais, zero busywork
★ only real exceptions, zero busywork

Sentinela de Retenção

High-Value Retention Sentinel

Agir cedo, antes do cliente virar perda.
Act early, before a rider is lost.
SENSE clientes entrando no quadrante de risco precoce.riders entering the early-risk quadrant. THINK prioriza por valor do cliente × dívida.prioritizes by customer value × debt. ACT monta o brief diário de retenção.drafts the daily retention brief.
★ taxa de resgate
★ rescue rate

Como é um run de verdade

What a real run looks like

Dry-runs reais postados no Slack pelo agente — aqui anonimizados (sem dados de cliente).

Real dry-runs the agent posts to Slack — anonymized here (no customer data).

🔁 [DRY-RUN] Loop 1 — Cobrança & RecolhimentoCollections & Recovery 12:00 BRT
Modo dry-run: nenhuma ação foi executada. Abaixo, o que o loop faria e por quê.
Dry-run mode: no action was taken. Below, what the loop would do and why.
📡 SENSE (Metabase) — funil de atraso hoje: D+1–3: 1.695 · D+4–6: 464 · D+7–21: 1.262 · ativos com dívida aberta cruzados com o classificador de risco.(Metabase) — today's overdue funnel: D+1–3: 1,695 · D+4–6: 464 · D+7–21: 1,262 · active debtors cross-referenced with the risk classifier.
🧠 THINK cruzei os 15 maiores devedores com as parcelas vencidas hoje: só 3 confirmam atraso real — os outros 12 renegociaram/pagaram. Regra: o snapshot prioriza, o D-0 decide (agir só no snapshot = 12 bloqueios indevidos).I cross-checked the top 15 debtors against installments actually due today: only 3 are truly overdue — the other 12 renegotiated/paid. Rule: snapshot prioritizes, D-0 decides (acting on the snapshot alone = 12 wrongful blocks).
⚡ ACT — o que eu executaria (e não executei):— what I'd execute (and didn't):
  1. Abriria fluxo de recolhimento p/ user #•••• (D+16) — placa + GPS via MCP, após dedupe no canal.
  2. Open a recovery flow for user #•••• (D+16) — plate + GPS via MCP, after channel dedupe.
  3. Confirmaria bloqueio de swap p/ 2 users em D+1 (checando block_history antes).
  4. Confirm swap blocks for 2 users at D+1 (checking block_history first).
  5. Geraria a lista de guincho das 17h a partir da coorte D+4–6, respeitando o cap do canal.
  6. Generate the 5pm tow list from the D+4–6 cohort, respecting the channel cap.
  7. NÃO bloquearia o maior devedor da base — sem parcela vencida hoje = renegociação em dia.
  8. NOT block the largest debtor — no installment due today = renegotiation on track.
🛡️ Guardrails dedupe lendo o canal · freshness check (snapshot >2d → só reporta) · link BO em toda ação · writes exigem confirm:true.dedupe by reading the channel · freshness check (snapshot >2d → report only) · BO link on every action · writes require confirm:true.
Fontes: marts de parcelas + classificador de risco · Política de Cobrança (via Mind).Sources: installment marts + risk classifier · Collections Policy (via Mind).✦ via Claude
🔁 [DRY-RUN] Loop 3 — Watchdog de Cabinets & Swap ErrorsCabinet & Swap-Error Watchdog 13:20 BRT
Modo dry-run: nenhuma ação foi executada.
Dry-run mode: no action was taken.
📡 SENSE (swap errors + estado vivo via MCP) — 394 swap errors na semana; 1 cabinet concentra ~32% nos slots vizinhos; 200 erros “sem slot” são falha de fluxo (outra categoria).(swap errors + live state via MCP) — 394 swap errors this week; one cabinet concentrates ~32% on adjacent slots; 200 “no-slot” errors are flow failures (another category).
🧠 THINK consultei o estado vivo do cabinet •••• via MCP: online, LTE forte, todos os slots “available” → um heartbeat tradicional diria “tudo ok”. Mas: bateria a 3% sem corrente de carga, charger inativo. Heartbeat OK ≠ saudável.I queried cabinet •••• live via MCP: online, strong LTE, all slots “available” → a traditional heartbeat would say “all good”. But: a battery at 3% with zero charge current, charger inactive. Heartbeat OK ≠ healthy.
⚡ ACT — o que eu executaria (e não executei):— what I'd execute (and didn't):
  1. Marcaria os slots ruins como MAINTENANCE (update_slot, reversível) — estanca o erro pro cliente sem derrubar o cabinet.
  2. Mark the bad slots as MAINTENANCE (update_slot, reversible) — stops the error for riders without taking the cabinet down.
  3. Abriria OS de manutenção (tool maintenance) com o diagnóstico anexado.
  4. Open a maintenance service order (maintenance tool) with the diagnosis attached.
  5. Alerta dirigido no canal de charging ops com o dossiê.
  6. Targeted alert in the charging-ops channel with the dossier.
  7. Registraria o caso no Mind p/ dedupe — não re-alertar amanhã se a OS já estiver aberta.
  8. Log the case in Mind for dedupe — don't re-alert tomorrow if the SO is already open.
🛡️ Guardrails update_slot/remote_command exigem confirm:true + reason · escalada gradual · nunca reset automático com swap em andamento · north star: swap errors/semana ↓.update_slot/remote_command require confirm:true + reason · graduated escalation · never auto-reset mid-swap · north star: swap errors/week ↓.
Fontes: tabelas de swap error + estado vivo do cabinet via Vammo MCP.Sources: swap-error tables + live cabinet state via Vammo MCP.✦ via Claude
🔁 [DRY-RUN] Loop 4 — Integridade Diária da FrotaDaily Fleet Integrity 13:20 BRT
Modo dry-run: nenhuma ação foi executada.
Dry-run mode: no action was taken.
📡 SENSE (snapshot diário) — frota por status: RENTED ~5,7k · IN_STREET ~0,9k · STORED ~0,5k · + terminais (STOLEN/LOST/APPROPRIATED).(daily snapshot) — fleet by status: RENTED ~5.7k · IN_STREET ~0.9k · STORED ~0.5k · + terminal states (STOLEN/LOST/APPROPRIATED).
🧠 THINK checagens cruzando status × rider: RENTED sem rider: 0 (eixo principal limpo). STORED com rider: 52 motos → filtro de persistência (2 dias) → 1 caso real (98% menos falso-positivo).consistency checks status × rider: RENTED without rider: 0 (main axis clean). STORED with rider: 52 bikes → persistence filter (2 days) → 1 real case (98% fewer false positives).
⚡ ACT — o que eu executaria (e não executei):— what I'd execute (and didn't):
  1. Investigaria a moto •••••• via MCP (bikes.get + users.bikes): recolhida-não-churn → dossiê; associação esquecida → proporia remove_bike.
  2. Investigate bike •••••• via MCP (bikes.get + users.bikes): collected-not-churned → dossier; forgotten link → propose remove_bike.
  3. Publicaria o “diff diário de integridade” como pauta de 5 min (hoje: 1 exceção real, eixo verde).
  4. Publish the “daily integrity diff” as a 5-min agenda (today: 1 real exception, axis green).
  5. Monitoraria os terminais (sem variação = sem ação) e flagaria o lag do dado pro time.
  6. Monitor terminal states (no change = no action) and flag the data lag to the team.
🛡️ Guardrails nenhuma remoção de associação sem confirmação humana · checagens novas entram como “observação” por 1 semana · dedupe via Mind.no link removal without human confirmation · new checks enter as “observation” for 1 week · dedupe via Mind.
Fontes: mart de status da frota · evidência da dor: reunião diária “bater placa por placa” (via Mind).Sources: fleet-status mart · pain evidence: the daily “plate-by-plate” meeting (via Mind).✦ via Claude

Os •••• mascaram dados de cliente (IDs, placas, valores, canais internos) — nos dry-runs reais, internos, cada ação vem com o ID e o link do backoffice.

The •••• mask customer data (IDs, plates, values, internal channels) — in the real internal dry-runs, every action carries the ID and the backoffice link.

Aprovação humana, em 1 clique

Human approval, in one click

No L2, um agente como o Leonardo posta um link de aprovação de uso único. Você revê e decide — a ação roda na sua conta e fica registrada no seu nome.

At L2, an agent like Leonardo posts a single-use approval link. You review and decide — the action runs as you and is logged in your name.

Vammo MCP approval link — request, approved & executed, and failed states

Tela real do link de aprovação — solicitação → aprovada/executada → falhou. O email foi mascarado porque a página é pública.

The real approval-link screen — request → approved/executed → failed. The email is masked because this page is public.

Crie o seu loop

Build your own loop

No Claude, a skill /vammo-loop-maker (já disponível pra todos) te guia do problema real ao dry-run, no formato SENSE→THINK→ACT→REPORT — evidência antes do design, dry-run antes de construir.

In Claude, the /vammo-loop-maker skill (already available to everyone) guides you from a real pain to a dry-run, in the SENSE→THINK→ACT→REPORT format — evidence before design, dry-run before building.

/vammo-loop-maker
Começar
Get started

Conecte em 1 minuto

Connect in 1 minute

Jeito mais fácil — o Claude te guia

Easiest way — let Claude guide you

No Claude, rode o comando abaixo. Ele te guia, passo a passo, pra conectar os três (Mind, MCP e Metabase) — você autoriza cada conector no navegador quando ele pedir.

In Claude, run the command below. It walks you through connecting all three (Mind, MCP, Metabase), step by step — you authorize each connector in the browser when prompted.

/vammo-connectors-onboarding onboard me

Prefere fazer na mão no Claude Desktop? Abra cada conector abaixo:

Prefer the manual route in Claude Desktop? Open each connector below:

🧠 Vammo Mind mind.vammo.com
  1. Customize → Conectores no menu lateral do Claude Desktop.
  2. Customize → Connectors in the Claude Desktop sidebar.
  3. Selecione Vammo Mind e clique em Vincular (endpoint https://mind.vammo.com).
  4. Select Vammo Mind and click Link (endpoint https://mind.vammo.com).
  5. O navegador abre a tela de autorização — clique em Authorize.
  6. The browser opens the authorization screen — click Authorize.
  7. Volte ao Claude e teste com uma pergunta (ex.: “o que a Mind sabe sobre a política de cobrança?”).
  8. Return to Claude and test with a question (e.g. “what does Mind know about the collections policy?”).
✋ Vammo MCP mcp.vammo.com
  1. Customize → Conectores → selecione Vammo MCPVincular (endpoint https://mcp.vammo.com).
  2. Customize → Connectors → select Vammo MCPLink (endpoint https://mcp.vammo.com).
  3. Autorize no navegador e volte ao Claude.
  4. Authorize in the browser and return to Claude.
  5. Recomendado: ferramentas de leitura Sempre permitir; writes/IoT Requer aprovação.
  6. Recommended: read tools Always allow; writes/IoT Require approval.
  7. Teste: “busca o usuário pelo CPF X” ou “onde está a moto Y?”.
  8. Test: “look up the user by ID X” or “where is bike Y?”.
👀 Vammo Metabase metabase.vammo.com/api/mcp
  1. Desabilite o conector antigo “Metabase”; mantenha só Vammo Metabase.
  2. Disable the old “Metabase” connector; keep only Vammo Metabase.
  3. Customize → ConectoresVammo MetabaseVincular (endpoint https://metabase.vammo.com/api/mcp).
  4. Customize → ConnectorsVammo MetabaseLink (endpoint https://metabase.vammo.com/api/mcp).
  5. Autorize no navegador e volte ao Claude.
  6. Authorize in the browser and return to Claude.
  7. Teste: “quantas vendas tivemos hoje até agora?”.
  8. Test: “how many sales have we had today so far?”.

Não funcionou? Use o Claude Desktop (não só o navegador) · confirme que o conector aparece em Customize → Conectores · se a autorização falhar, faça login no serviço pelo navegador e tente de novo · aprove os prompts de ferramenta quando fizer sentido.

Not working? Use Claude Desktop (not just the browser) · confirm the connector shows under Customize → Connectors · if auth fails, sign in to the service in the browser and retry · approve tool prompts when they make sense.

Outros agentes
Other agents

Use em qualquer harness

Use it anywhere

Os três são MCP servers remotos padrão (HTTP + OAuth) — conectam em qualquer agente, não só no Claude Desktop.

All three are standard remote MCP servers (HTTP + OAuth) — they plug into any agent, not just Claude Desktop.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "vammo-mind":     { "type": "remote", "url": "https://mind.vammo.com", "enabled": true },
    "vammo-mcp":      { "type": "remote", "url": "https://mcp.vammo.com", "enabled": true },
    "vammo-metabase": { "type": "remote", "url": "https://metabase.vammo.com/api/mcp", "enabled": true }
  }
}
terminal — mcporterterminal — mcporter
mcporter config add vammo-mind     https://mind.vammo.com
mcporter config add vammo-mcp      https://mcp.vammo.com
mcporter config add vammo-metabase https://metabase.vammo.com/api/mcp

# completes the OAuth flow in your browser:
mcporter config login vammo-mcp
config.yaml
mcp_servers:
  vammo-mind:
    url: "https://mind.vammo.com"
  vammo-mcp:
    url: "https://mcp.vammo.com"
  vammo-metabase:
    url: "https://metabase.vammo.com/api/mcp"

Qualquer cliente MCP funciona — aponte pros URLs acima; o primeiro connect roda o login/OAuth no navegador.

Any MCP client works — point it at the URLs above; first connect runs the login/OAuth in your browser.

Ajuda & próximos passos
Help & what's next

Isto é a v1 — bora evoluir junto

This is v1 — let's evolve it together

📅 Q&A aberto — quarta

📅 Open Q&A — Wednesday

17/06, 16:00–17:00 (BRT). Traga dúvidas, ideias de loop, o que não funcionou. Aberto a todas as áreas.

Jun 17, 4:00–5:00pm (BRT). Bring questions, loop ideas, what didn't work. Open to all areas.

💬 Ou fale comigo

💬 Or reach out

Chama o Guima (Thiago Alcantara) direto no Slack — qualquer dúvida de setup, ideia de automação ou bug.

DM Guima (Thiago Alcantara) on Slack — any setup question, automation idea, or bug.