ooligo
claude-skill

Resuma a semana de atividade de um rep em sinais-chave

Dificuldade
intermediário
Tempo de setup
30min
Para
revops · ae
RevOps

Stack

Uma Claude Skill que ingere as calls, e-mails e atividade no Salesforce de um rep nos últimos sete dias e produz um relatório de seis bullets com sinais: o que está esquentando, o que está esfriando, onde o rep está travado e uma sugestão específica para a próxima semana. Pensada para self-review na sexta-feira, não para vigilância, e construída para que o brief chegue primeiro ao rep — não ao gestor. O bundle traz um SKILL.md funcional mais três templates de referência que o time edita para encaixar no próprio framework de qualificação, thresholds de sinal e tom de voz.

Quando usar

O caso específico para o qual isto foi feito: um AE quer um scan de cinco minutos da própria semana antes de desligar na sexta-feira. Tem entre dez e trinta oportunidades abertas, um CRM que basicamente conta o que ele já sabe, e calls do Gong que não teve tempo de reouvir. Não precisa de um dashboard; precisa de três coisas em que agir na segunda. A skill produz exatamente isso — três Heating, dois Stuck (ou Cooling), uma sugestão específica — e o formato é deliberadamente curto para que os reps de fato leiam. Exports de atividade com milhares de linhas são folheados e esquecidos; seis bullets viram ação.

Também funciona como uma cadência semanal gerenciada e operada por RevOps em nome do time, mas só se o output continuar caindo primeiro no DM do rep e o rep controlar se encaminha ou não para o gestor. A postura de privacidade é a peça que sustenta tudo — se virar “manager auto-cc”, os reps começam a manipular os dados de entrada em uma semana e o sinal colapsa.

Quando NÃO usar

Não use esta skill para reviews de pipeline cross-team. Vinte reps significam vinte invocações e o custo soma rápido; um dashboard do Salesforce faz esse trabalho mais barato e o trabalho do gestor é olhar entre semanas, não dentro de cada uma. Não use para preparação de forecast call — relatórios do Salesforce fazem roll-ups numéricos melhor e a skill não foi feita para somar dólares. Não use como ferramenta de vigilância (“me mostra o que o Bob fez essa semana”); no momento em que o relatório vai para o gestor sem o rep ter rodado, você perde o contrato social que mantém os reps honestos sobre a própria atividade. E não use para deep dives em nível de conta — esse é um problema diferente, resolvido pela skill account-research, que vai funda em uma conta em vez de larga em todo o portfólio de um rep.

Não rode em janelas menores do que três dias; há datapoints de menos para a rubrica de bucketing disparar de forma limpa e o output sai com cara de ruído. Não rode em um rep com menos de cinco oportunidades abertas — não há sinal suficiente para classificar.

Setup

O bundle do artefato está em apps/web/public/artifacts/activity-summarizer-skill/. Contém SKILL.md (o ponto de entrada que o Claude carrega) e três referências preenchíveis em references/. Vá nessa ordem:

  1. Leia apps/web/public/artifacts/activity-summarizer-skill/SKILL.md de ponta a ponta. A seção “Method” nomeia as escolhas de engenharia (por que pulls em paralelo, por que a regra de precedência, por que filtro de 300 segundos para calls); pular essa parte é por sua conta e risco — é onde os falsos positivos são pegos.
  2. Edite apps/web/public/artifacts/activity-summarizer-skill/references/qualification-framework.md. Substitua os defaults de MEDDPICC pelo framework que seu time realmente usa — BANT, SPICED, sua variante caseira — e, crucialmente, troque os nomes dos campos do Salesforce (Opportunity.Economic_Buyer__c e similares) pelos que seu CRM realmente usa. Puxe o tempo mediano em estágio do seu time de um relatório do Salesforce e jogue esses números na tabela; eles alimentam a detecção de Stuck.
  3. Edite apps/web/public/artifacts/activity-summarizer-skill/references/signal-rubric.md. Os defaults (≥ 2 toques multi-threaded para Heating, ≥ 10 dias sem toque para Cooling, 1.5x do tempo mediano em estágio para Stuck) são pontos de partida sãos; calibre depois de algumas semanas rodando contra seus dados históricos. O knob min_call_duration_seconds vem com 300 para filtrar voicemails do Gong — deixe assim, a menos que seu time faça muitas working sessions reais com menos de cinco minutos.
  4. Edite apps/web/public/artifacts/activity-summarizer-skill/references/sample-output.md. Cole um ou dois dos seus melhores relatórios históricos (anonimizados) para que a skill se condicione no tom do seu time. A referência também traz uma “bad sample” da qual a skill se afasta — mantenha as duas.
  5. Plugue a auth. Salesforce: OAuth read-only com escopo em Activity, Opportunity e OpportunityHistory no usuário do rep. Gong: API key com escopo para ler calls e transcripts em que o rep esteve. Os dois como MCP servers ou chamadas de API diretas — a skill em si é agnóstica de transporte.
  6. Agende o run. Sexta-feira às 16:00 hora local é o default; o output vai para o DM do rep via a integração de Slack ou e-mail do time. Manager auto-cc deliberadamente não é uma opção configurável na skill; se o gestor quiser visibilidade, o rep encaminha.

O que a skill realmente faz

Duas chamadas de API rodam em paralelo: SOQL no Salesforce para linhas de Task, Event e OpportunityHistory na janela, e /v2/calls do Gong filtrado pelo e-mail do rep (Gong indexa por e-mail, não por user ID do Salesforce — traduza primeiro ou a lista de calls volta vazia). O filtro do Salesforce explicitamente descarta Tasks Logged Email com Description vazio, porque isso é ruído de higiene de CRM, não engajamento; dez dessas sem uma única resposta não significa que o deal está quente.

Cada oportunidade aberta então recebe um registro com estágio, valor, tempo em estágio, contagem de toques significativos e os campos exigidos pelo framework de qualificação. Cada oportunidade é classificada como Heating, Cooling ou Stuck contra os thresholds em signal-rubric.md. Uma regra de precedência resolve sobreposições — Cooling vence Stuck vence Heating — o que mata o falso positivo mais comum (um deal cujo estágio avançou por motivos procedurais mas em que todo o resto do sinal está morto). Transições para Closed Lost são explicitamente excluídas de Heating; sem essa regra, um rep zerando deals mortos numa sexta à tarde geraria um relatório brilhante.

O passo de render escolhe os top três Heating, top dois Stuck (ou Cooling, se não houver Stuck) e produz uma sugestão. A sugestão tem três guardrails — precisa nomear uma conta, nomear um estágio e nomear um blocker específico. Se a rubrica não consegue produzir uma sugestão que cumpra os três, a skill escreve “Sem sugestão essa semana — pipeline está limpo” em vez de fabricar um genérico “siga up com leads parados”.

Realidade de custo

Um único run semanal em um rep com vinte oportunidades abertas dá em torno de 6.000 input tokens e 800 output tokens em Sonnet — cerca de US$ 0,05 por run. Conta de escala:

  • 1 rep, semanal: US$ 0,20/mês
  • 20 reps, semanal: US$ 4/mês
  • 100 reps, semanal: US$ 20/mês
  • 100 reps, diário: US$ 140/mês
  • 200 reps, diário: US$ 280/mês — nesse ponto, troque para Haiku (US$ 0,04/run, US$ 112/mês) ou batche os runs em um único prompt com múltiplos contextos de rep

O custo escondido é a quota de API no Salesforce e no Gong, não no Claude. A REST API do Salesforce tem limite diário por org (tipicamente 15 mil chamadas para uma org Enterprise); cada run de rep consome de 4 a 8 chamadas dependendo do volume de atividade. Em 200 reps diários, são 1.600 chamadas/dia no Salesforce — bem dentro do orçamento, mas vale checar o uso da sua org se você já roda outras automações pesadas.

Custo de tempo: 30 minutos de setup inicial se os nomes de campo do seu CRM estão limpos, uma hora se você tem que caçar os API names dos custom fields certos. Ongoing por semana: zero — roda agendado.

Como é o sucesso

Uma instalação que funciona produz um output que o rep lê em 90 segundos e que muda pelo menos uma ação na manhã de segunda. Concretamente, depois de quatro semanas rodando:

  • Os deals “stuck” do rep aparecem no relatório ≥ 1 semana antes de aparecerem no review de pipeline parado do gestor. Se não, os thresholds de tempo mediano em estágio em qualification-framework.md estão generosos demais — aperte.
  • A linha “uma sugestão” produz uma ação que o rep de fato toma em ≥ 60% das semanas. Se for menos, a rubrica está produzindo sugestões genéricas e o guard de renderização não está apertado o bastante — confira que a skill está rejeitando sugestões sem conta, estágio e blocker nomeados.
  • O bucket Cooling sinaliza um deal que depois vira Closed Lost ≥ 70% das vezes. Se a precisão for muito menor, os thresholds de cooling estão sensíveis demais (falsos positivos afogam o sinal).

Estas não são vanity metrics — são o sinal de que a skill está fazendo o trabalho para o qual foi construída. Se elas não mexem, a skill está gerando material de leitura de sexta, não decisões de sexta.

Versus as alternativas

vs. digests nativos do CRM (Salesforce Einstein Activity Capture, o weekly summary do próprio Gong). Esses te dão contagens cruas de atividade e resumos de call, mas não sintetizam entre os dois streams nem aplicam seu framework de qualificação. O Einstein vai te dizer “47 e-mails essa semana”; esta skill te diz “Acme foi para Proposal porque o CTO entrou e perguntou preço”. Camadas de abstração diferentes.

vs. resumos manuais escritos pelo rep. Um rep que escreve o próprio recap de sexta vai produzir estratégia melhor do que essa skill — ele sabe o contexto do deal. Mas 80% dos reps não escrevem o recap, e os que escrevem pulam em fim de quarter. Esta skill produz um resumo 90% tão bom em 100% das semanas, o que ganha de um resumo 100% bom em 30% das semanas.

vs. e-mail de weekly summary do próprio Gong. O resumo do Gong é só de calls; perde o e-mail e a atividade de CRM que muitas vezes carregam o sinal de cooling. Também não aplica seu framework de qualificação, então não consegue surfar “stuck porque não tem Economic Buyer nomeado”. Complemento útil, não substituto.

vs. status quo (uma 1:1 com o gestor a cada duas sextas). As 1:1s do gestor pegam problemas duas semanas atrasadas e na largura de banda do gestor. Esta skill pega na mão do rep na mesma semana, o que mantém a ação onde ela pertence.

Watch-outs

  • Postura de privacidade: rep-facing only. O recipient default é dm e a skill se recusa a mandar para canal de gestor. Auto-cc mudaria o contrato social de “self-review semanal” para “delação semanal” — e os reps vão manipular os dados de entrada em uma semana. Guard: a skill rejeita IDs de canal de gestor no parâmetro recipient, e o SKILL.md do bundle documenta isso como não configurável.
  • A qualidade do transcript do Gong puxa a qualidade do sinal. Calls internacionais, áudio ruim e voicemails curtos produzem resumos ruidosos que alimentam bullets ruins. Guard: min_call_duration_seconds = 300 filtra voicemails e calls de teste; a skill também lê o campo transcriptionConfidence por call do Gong e descarta qualquer coisa abaixo de 0.6.
  • Drift na definição de atividade. “Logged Email” sem corpo e sem resposta não é engajamento; é teatro de higiene de CRM. Dez entradas dessas não significa que o deal está quente. Guard: o filtro SOQL exige Description não vazio em Tasks e ignora explicitamente Tasks em que o Subject casa com os patterns de auto-log do time (/^(Email\: |Logged via )/).
  • Fadiga de sugestão. A linha “uma sugestão para a próxima semana” deriva para o genérico (“siga up com leads parados”) quando a rubrica está frouxa. Guard: o passo de render rejeita qualquer sugestão que não nomeie uma Conta, um Estágio e um Blocker específico. Se a rubrica não consegue produzir uma, a skill escreve “Sem sugestão essa semana — pipeline está limpo” em vez de encher linguiça.
  • Mudança de estágio como sinal pode mentir. Um rep movendo um deal para Closed Lost aparece como mudança de estágio mas não deve alimentar Heating. Guard: as regras de bucketing tratam rollbacks de estágio e transições para Closed Lost explicitamente sob Cooling, nunca Heating.
  • A skill não substitui um deal review. Ela surfa sinais, não estratégia. Uma flag de Stuck diz ao rep “Initech passou do tempo mediano em estágio sem Economic Buyer”; não diz ao rep o que fazer a respeito além da uma sugestão. Trate como triagem, não coaching.

Stack

  • Salesforce — fonte da verdade de atividade, oportunidade e histórico de estágio
  • Gong — transcripts de call, talk-listen ratios, perguntas de compra sinalizadas
  • Claude — extração de sinal, ranking ciente do framework, renderização contra a referência de tom do bundle

Arquivos deste artefato

Baixar tudo (.zip)