Estudo · não é currículo

Musa · AI Deployment Engineer

Híbrido SP · tempo integral · respostas fora do LinkedIn

Não é “aprender mais IA”.
É virar o playbook.

Polvo, Coletas e Caçador já fecham conta, processam coleta e caçam MTR em produção. Cada um nasceu snowflake. A vaga é quem constrói deploy, eval, observability e rollback compartilhados — sem quebrar fluxo crítico.

Vaga no ar há ~6 meses · +100 cliques em Candidate-se · Simmon Nam (CPO, 1º) dá pra mandar mensagem. Curriculum lista CLT.

O job de verdade, numa frase

Forward Deployed Engineer colado em ops e platform engineer de agente. Você senta com o dono do fluxo (faturamento, coleta, MTR), decide se AI entra, coloca o agente no caminho crítico com SLA, e deixa o próximo agente usar a mesma infra.

Polvo

Corner case contratual + medição customizada. Cada cliente tem regra diferente. Analogia tua: iugu / taxa por conta.

Coletas

Aderência de processo de parceiro. Inconsistência antes de virar incidente. Analogia: Hora Solar WAHA (intent, skip, CRM).

Caçador

Plugado no core. Rebarba de integração com órgão público (SINIR/SIGOR). Processo massivo não sistematizado.

Musa não tem caminhão. Orquestra gerador, operador logístico e receptor. +750 empresas, +3 mil pontos, +200 operadores. Integra MTR, CDF e DMR nos sistemas oficiais. Clientes tipo Zamp, Atacadão, SBT, Urbia. Kaszek, Canary, Lowercarbon.

Você × a vaga (honesto)

Obrigatório deles: “carregou o bebê”. Não pedem unicórnio. Pedem cicatriz.

Eles pedem O que você já tem O furo
LLM/agente em fluxo real, SLA Jus Chat AI no caminho crítico da busca; Hora Solar WAHA em produção com intent e CRM Falar em métrica de sistema (sucesso da tarefa, fallback, custo), não “o bot responde bem”
RAG, orquestração, eval, guardrail como trade-off Pinecone/Chroma + tool vs resposta direta + fallback determinístico no Jus Eval automatizado em CI. Você opera; ainda não tem harness compartilhado pra mostrar
Quando modelo fechado / fine-tune / sem AI WAHA: regra e skip list antes de modelo. Intents help/hours/cep sem LLM Discurso de 60s sobre fine-tune (quase nunca) vs prompt+tools vs regra
Python sólido + cloud (AWS) FastAPI no currículo; hora-solar-waha-reply em Python; Dotted AWS CI/CD Python é segunda língua. Rails é casa. Precisa parecer fluente em Pydantic/pytest
Infra: obs, eval, feature flag, rollback CI/CD, deploy, on-call clássico Este é o job. Versionar prompt como código, canary, rollback de modelo
LangGraph / CrewAI / arquitetura própria LangChain no Jus; arquitetura própria no WAHA (máquina de intent) LangGraph como state graph, não CrewAI de demo. Saber dizer por que graph > multi-agent
B2B complexo (cobrança, compliance, logística) iugu (cobrança/SFN), Purple Stock (ERP), Zaitt (operação), homologação solar Vocabulário de resíduo: MTR, CDF, DMR, SIGOR, PGRS, 3 elos. Uma tarde.

Leitura: você já é o perfil “colocou agente em produção”. O que falta vender é o segundo salto — padronizar três snowflakes. Estude isso. O resto é vocabulário.

O que não estudar

  • Fine-tune o dia todo. A vaga diz isso na cara. Fine-tune entra só como “quando eu recuso”.
  • Chatbot de portfólio / CrewAI tutorial. Eles já têm agente que fecha conta. Demo não conta.
  • Reler o ebook Dev AI First. Aquela vaga (abr/2026) era “AI no runtime”. Esta é “infra pra multiplicar agentes”. Sobreposição existe; o centro mudou.
  • Curso genérico de LangChain 101. Você já fez RAG em produção. Pule pra LangGraph + eval.
  • Paper de researcher. Eles não querem quem quer treinar modelo.

Trilha 1 · 40% do tempo

Plataforma: deploy, eval, obs, rollback

É o que a Musa admite não ter. Quem chega falando só de prompt perde. Quem chega com um desenho de plataforma de 4 caixas ganha a conversa.

  1. Prompt/config como artefato versionado. YAML ou JSON no git. Hash no trace. Troca de prompt = deploy, não edição no dashboard no calor do incidente.
  2. Eval no PR. Dataset de casos reais (log virando teste). Três camadas: schema/regra (determinístico), heurística, judge só no que a regra não pega. Gate: não mergeia se quebrar golden set.
  3. Canary + rollback. 5% do tráfego no prompt B. Métrica de sucesso da tarefa, não “bleu”. Flag (LaunchDarkly / AWS AppConfig / tabela). Rollback = voltar o hash, não “desfazer o commit e rezar”.
  4. Trace de uma run. request_id, agente, modelo, tokens in/out, custo, tools, latência por step, fallback_used, versão do prompt. OpenTelemetry gen_ai ou LangSmith/Phoenix. Sem isso você não opera; você torce.

Ler (nessa ordem)

Exercício (usa o que você já tem): no hora-solar-waha-reply, extraia 20 inbound reais (sem PII), vire fixture, rode a intent como eval. Métrica: intent certa, “não enviou quando skip”, “não inventou CEP”. Isso é o mesmo músculo do Polvo — golden set de corner case.

A infra que eu construiria no dia 1: cada agente é um pacote com contrato (input/output Pydantic), prompt versionado no git, eval no CI contra golden set do fluxo, trace OpenTelemetry por run, e flag pra canary de prompt. Rollback é voltar o hash da config, não redeployar o mundo. Os três agentes que vocês já têm continuam; o que muda é o chão embaixo deles.

Trilha 2 · 20%

Quando AI resolve — e quando é regra

A vaga testa cicatriz, não entusiasmo. Decisão em três gavetas:

Regra / SQL / fila

Campo obrigatório, status de MTR, skip list, CEP conhecido, “já emitiu CDF?”. Barato, auditável, testável.

Modelo fechado + tools

Texto sujo, contrato em PDF, e-mail de órgão, classificação de resíduo ambígua, corner case de medição. Schema rígido na saída.

Fine-tune

Só se o volume for enorme, o schema estável, o custo de API doer, e eval mostrar teto de prompt. Na Musa, default é não.

Frase-molde: “Se a verdade está no banco ou no contrato, eu não chamo modelo. Se a verdade está num PDF mal OCR ou numa regra que muda por cliente e não cabe em if, aí sim — com schema, timeout e fallback humano.”

No Hora Solar o agente de WhatsApp não é LLM no caminho crítico. Intent de horário, skip de grupo, CEP e handoff são regra. Modelo só entra quando o texto é ambíguo. Isso não é pobreza de stack — é o mesmo juízo que vocês pedem no Polvo: se a cláusula do contrato já está tabelada, calcula; se o PDF do anexo é um snowflake, aí o modelo lê e a regra valida.

Trilha 3 · 15%

Orquestração: LangGraph como máquina de estados

CrewAI é o que eles listam pra achar quem já brincou. O desenho maduro é grafo com nós explícitos: roteador → tool → validador → persistência → fallback. Loop com critério de parada. Estado durável fora do prompt.

receber → classificar
             ├─ regra_clara → executar_sql / emitir_mtr
             ├─ texto_sujo  → llm_structured → validar_schema
             │                    ├─ ok → efeito (idempotente)
             │                    └─ inválido → retry_1 → humano
             └─ baixa_confiança → fila_ops

Cada seta é logada. Cada efeito colateral tem idempotency_key. Sem isso o Caçador duplica MTR no retry do órgão.

Ler / fazer

  • LangGraph docs — um grafo, checkpoint, interrupt humano. Pule multi-agent swarm.
  • AWS · saga em fluxos agentic
  • Exercício: reescreva o reply_logic do WAHA como grafo LangGraph com 4 nós. Não precisa ir pra prod. Precisa desenhar no quadro.
Eu não começaria a plataforma da Musa em multi-agent. Começaria num state graph por fluxo: classificar, agir, validar, persistir. LangGraph (ou um grafo próprio) porque o estado precisa ser inspectável e o loop precisa parar. CrewAI eu usaria só se o problema fosse time de papéis com handoff real — no MTR o risco é duplicar documento no órgão, então previsibilidade ganha de autonomia.

Trilha 4 · 15% · uma tarde + um sábado

Domínio: lixo com futuro, em vocabulário de sistema

Você não precisa virar ambientalista. Precisa falar a língua do Caçador e do Polvo sem inventar jargão.

Os 3 elos

  • Gerador — quem produz o resíduo (Zamp, SBT, obra). Emite o MTR. Paga a Musa. Quer uma fatura e zero fiscalização.
  • Operador logístico — caminhão/caçamba. Musa não tem frota. Aderência de processo = Coletas.
  • Receptor / destinador — aterro, reciclador, coprocessamento. Fecha o ciclo com CDF.

A papelada que o Caçador engole

  • MTR — Manifesto de Transporte de Resíduos (Portaria MMA 280/2020). Autodeclaratório, numerado, acompanha a carga. Sistema nacional: SINIR (mtr.sinir.gov.br). SP costuma ser SIGOR-MTR / CETESB. RJ, SC, MG, RS, ES, GO têm sistema próprio que deveria integrar o nacional. Gov.br no login nacional desde ago/2026.
  • CDF — Certificado de Destinação Final. Sem CDF o ciclo fica aberto. MTR sem CDF é o tipo de rebarba que vira multa.
  • DMR — Declaração de Movimentação de Resíduos. Consolidado periódico.
  • PGRS — Plano de Gerenciamento. Quem está obrigado (Lei 12.305/2010) precisa do MTR.

Por que o Caçador existe: órgão público, API instável ou inexistente, HTML legado, estados diferentes, processo massivo que era planilha. Integração + reconciliação + engolir o que o sistema oficial não sistematizou. Retry sem idempotência emite MTR duplicado. Isso é iugu + órgão, não chatbot.

Por que o Polvo dói

Faturamento de resíduo não é “preço × km”. Medição customizada: peso na balança vs volume da caçamba vs contrato por ponto vs desconto de reciclável vs mínimo de coleta. Cada cliente (Zamp vs obra vs parque) tem anexo diferente. LLM pega o corner; a regra contratual valida; o cálculo fecha. Analogia: taxa iugu / regra de boleto — PORO, não controller.

Ler

O Caçador, do jeito que eu li a vaga, é reconciliação com órgão: SINIR ou SIGOR, estado que não fala com o federal, HTML legado, volume que era planilha. O risco de produto não é o modelo errar o tom — é emitir MTR duplicado ou deixar CDF aberto. Eu desenharia o agente com chave idempotente no número do manifesto, DLQ pra rebarba, e humano no loop quando o órgão devolve 5xx. Modelo lê o que o sistema oficial não estruturou; a emissão em si é contrato + retry.

Trilha 5 · 10% · ginásio, não curso

Python de produção + AWS no formato Musa

Eles discutem cloud; têm AWS. Python é a língua do job. Você já tem FastAPI e o watcher do Hora Solar. Falta parecer nativo.

  • Pydantic v2 em todo I/O de agente. Structured output = model, não regex esperançoso.
  • pytest no golden set. Um comando. Igual você já faz no reply_logic.
  • typing nas fronteiras. Sem Any no contrato público do agente.
  • AWS que importa aqui: SQS + DLQ, ECS/Fargate ou Lambda com timeout honesto, S3 pra artefato de eval, AppConfig pra flag, CloudWatch + OTel, Bedrock só se custo/dados pedirem (default: API fechada com fallback).

Não estude “AWS inteiro”. Estude o caminho: worker pega job → chama modelo → valida → grava efeito idempotente → emite métrica.

Sprint de 14 dias (usa código teu)

Não construa um agente novo de portfólio. Endureça o que já roda e tenha um quadro pra desenhar na entrevista.

Semana 1 — chão

  1. Ler musa.co FAQ + Gov.br MTR + Portaria 280. Uma página de notas.
  2. Desenhar os 4 caixas da plataforma (deploy, eval, obs, rollback) no papel.
  3. Golden set: 20 mensagens do WAHA → pytest de intent.
  4. Log estruturado: request_id, intent, fallback, latency_ms.
  5. Pydantic no I/O do reply_logic.
  6. LangGraph: o mesmo fluxo em 4 nós, local.
  7. Simular entrevista: “quando você não usa AI?” em voz alta, 90s.

Semana 2 — plataforma

  1. Versionar o “prompt/config” em YAML + hash no log.
  2. Eval no CI (mesmo que seja o unittest de hoje, rodando no PR).
  3. Flag: config A/B no YAML. Rollback = checkout do hash.
  4. Trace: um span por tool/intent. Screenshot do log.
  5. Estudo de caso Polvo: escrever a analogia iugu em 8 linhas.
  6. Estudo de caso Caçador: MTR duplicado no retry. Quadro.
  7. Pitch 60s + mensagem pro Simmon. Gravado no celular.

Critério de pronto: você desenha no quadro, sem slide, o caminho de um MTR do gerador até o CDF, e aponta onde o agente entra, onde a regra entra, e como você reverte um prompt ruim em 5 minutos.

Perguntas que vão cair · pitch pronto

Regra: projeto real + por que + o que faria de novo. Zero definição de livro. Inglês: B2 53 — lê e escreve; call em PT.

Como você colocaria o 4º agente em produção sem virar o 4º snowflake?

Primeiro eu sento com o dono do fluxo e extraio o contrato: input, efeito colateral, o que é erro caro. Aí o agente entra no pacote padrão — schema, prompt versionado, eval com casos do fluxo, trace, flag. O 4º agente não escolhe stack; escolhe tools e golden set. Se o fluxo for 100% tabelado, eu recuso agente e faço job. O playbook é o produto; o agente é a instância.

O modelo devolveu JSON inválido no faturamento. E agora?

Retry curto com o mesmo idempotency_key. Se o schema falhar de novo, cai pra regra determinística ou fila humana — nunca “chuta o valor”. O Polvo pode ler o anexo; fechar o cálculo é código. Registro o fallback pra o eval da semana pegar esse caso.

Como você observa um agente em produção?

Por run, não por servidor. Trace com modelo, versão do prompt, tools, tokens, custo, latência p95 por step, taxa de fallback, taxa de revisão humana, sucesso da tarefa de negócio — MTR baixado, coleta aderente, fatura fechada. Alerta em spike de fallback e em backlog da DLQ. “O agente errou” sem request_id não é incidente; é conversa.

60 segundos · quem você é pra essa vaga

Sou o Matheus, 11 anos de web. Rails e TypeScript em produção (iugu, Zaitt, Jus), Python onde o agente vive (Hora Solar no WhatsApp). No Jus o LLM era o caminho crítico da busca jurídica: estado de sessão, tool de vetor, fallback quando o modelo falhava. O que eu trago pra Musa não é mais um PoC — é o músculo de colocar o 4º agente no mesmo chão dos três que já rodam, com eval e rollback, colado em faturamento, coleta e MTR.

Primeiros 90 dias (se perguntarem)

  1. Semana 1–2: sombra em ops. Um faturamento, uma coleta, um MTR quebrado. Inventário dos três snowflakes.
  2. Semana 3–4: o menor primitivo compartilhado — trace + versão de prompt nos três. Sem reescrever agente.
  3. Mês 2: eval CI no que mais dói (provavelmente Caçador ou Polvo). Golden set sai do log, não da imaginação.
  4. Mês 3: o 4º agente nasce em cima disso. Playbook escrito. Feature flag de verdade.

Se for mandar mensagem pro Simmon

Ele é 1º. CPO. A vaga pede respostas fora do LinkedIn. Curto, sem “apaixonado por IA”, com cicatriz.

Simmon, vi a vaga de AI Deployment Engineer. Li o recorte: Polvo, Coletas e Caçador já rodam, cada um snowflake, e vocês precisam de chão compartilhado (deploy, eval, obs, rollback) pra multiplicar sem quebrar fluxo crítico. Isso é o tipo de coisa que eu já carreguei: no Jus o LLM era caminho crítico da busca (estado, tool, fallback); no Hora Solar o agente de WhatsApp em produção é regra primeiro, modelo só no ambíguo. Posso contar em 20 min como eu padronizaria o 4º agente em cima dos três. Vale um café híbrido?

Não envia sozinho. Copia quando você quiser. Inglês da vaga não pede call em EN.