Skip to content

Pedroodelvalle/algoritmo-score

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

Score de Priorização de Campanhas (SPC)

Resumo

O Score de Priorização de Campanhas (SPC) é uma estrutura lógica open-source projetada para otimizar fluxos de trabalho operacionais em ambientes de marketing digital e produção de mídia. Seu objetivo principal é classificar algoritmicamente as campanhas ativas para garantir que os recursos sejam alocados onde geram o maior impacto: prevenindo a subutilização do orçamento ("dinheiro na mesa"), cumprindo prazos críticos e nutrindo relacionamentos estratégicos com clientes.

Este documento detalha o modelo matemático, o fluxo lógico e as diretrizes de implementação para o algoritmo. Destina-se a desenvolvedores, cientistas de dados e gerentes de operações que buscam implementar sistemas de priorização automatizados.


1. Introdução

Em ambientes operacionais de alto volume, a priorização manual frequentemente leva a ineficiências, tais como:

  • Viés de Recência: Focar apenas nas solicitações mais novas enquanto as antigas estagnam.
  • Efeito "Quem Chora Mais Não Mama": Priorizar os clientes mais vocais em detrimento dos financeiramente mais críticos.
  • Custo de Oportunidade: Negligenciar contas de alto potencial devido à fricção operacional em tarefas complexas e de menor valor.

O Algoritmo SPC resolve isso normalizando vários fatores de negócios urgência financeira, estratégia do cliente e complexidade operacional em um único valor escalar entre 0 e 100.


2. O Modelo Lógico

O score é construído usando uma abordagem em camadas. A base é a Urgência Financeira, que é então modulada por Bônus Estratégicos e Penalidades Operacionais.

graph TD
    subgraph "Cálculo Base"
        A[Saldo Restante & Prazo] -->|Calcular| B(Taxa de Urgência)
        C[Tempo Ocioso] -->|Calcular| D(Fator de Estagnação)
        E[Potencial do Cliente] -->|Calcular| F(Fator de Crescimento)
        B & D & F --> G{Score Base}
    end

    subgraph "Ajustes Estratégicos"
        H[Investimento Histórico Total] -->|Bônus| I[Bônus Estratégico]
        J[Contagem de Campanhas Ativas] -->|Bônus| I
    end

    subgraph "Realidade Operacional"
        L[Complexidade Operacional] -->|Penalidade %| M(Coeficiente de Fricção)
    end

    G --> K[Score Intermediário]
    I --> K
    K --> M --> N[SCORE DE PRIORIDADE FINAL]
Loading

3. Componentes do Algoritmo

O algoritmo avalia cinco dimensões distintas para calcular a prioridade final.

3.1. Urgência Financeira (O Motor)

Peso: ~70% do Score Base

Este é o motor principal. Ele responde à pergunta: "Se não fizermos nada hoje, quanto do orçamento deixará de ser gasto?"

  • Conceito da Fórmula: $\frac{\text{Saldo Restante}}{\text{Dias Restantes}}$
  • Comportamento: À medida que o prazo se aproxima, se o orçamento não tiver sido consumido, a taxa de queima diária necessária dispara, aumentando exponencialmente o score.

3.2. Fator de Estagnação (Tempo de Espera)

Peso: ~15% do Score Base

Previne "campanhas zumbis". Mesmo tarefas de baixa urgência devem ser entregues eventualmente. Este fator aumenta o score linearmente com base no número de dias desde a última entrega realizada.

3.3. Potencial Estratégico (Crescimento)

Peso: ~15% do Score Base

Um multiplicador qualitativo (1.0 - 1.5x) baseado no potencial do cliente para upsell ou expansão. Isso garante que "futuros gigantes" não sejam enterrados por "gigantes atuais".

3.4. Bônus de Valor do Cliente (O Efeito "Baleia")

Mecanismo: Pontos Aditivos

Clientes de alto valor recebem um aumento permanente de pontos em seu score, garantindo que mantenham visibilidade mesmo quando suas campanhas específicas não estão atualmente em um estado de "alerta vermelho".

  • Métrica A: Investimento Histórico Total (LTV).
  • Métrica B: Volume de Campanhas Ativas.

3.5. Fricção Operacional (O Redutor)

Mecanismo: Penalidade Multiplicativa (< 1.0)

Tarefas complexas com baixo retorno financeiro frequentemente entopem os pipelines de produção. O algoritmo aplica um "Coeficiente de Fricção" a tarefas difíceis.

  • Lógica: Se uma campanha requer esforço desproporcional (ex: revisões excessivas, requisitos técnicos complexos) em relação ao seu valor, sua prioridade é amortecida para evitar que bloqueie o fluxo de tarefas de alta velocidade e alto retorno.

Restrição Rígida: Se Status != Ativo, Score = 0.


4. Cenários Teóricos

Para entender o comportamento do algoritmo, analisamos sua saída em quatro cenários arquetípicos distintos.

Caso A: O "Incêndio" (Alta Urgência / Baixa Complexidade)

Cenário: Um cliente pequeno com prazo apertado e orçamento não gasto.

  • Urgência: Alta. A taxa de queima diária necessária é substancial.
  • Bônus: Baixo (Cliente novo).
  • Fricção: Baixa.
  • Resultado: Prioridade Máxima. O algoritmo identifica que uma ação imediata é necessária para garantir a receita.

Caso B: A "Baleia" (Baixa Urgência / Alto Valor)

Cenário: Um cliente corporativo com orçamento massivo, mas prazo longo.

  • Urgência: Moderada/Baixa. A taxa de queima diária é confortável.
  • Bônus: Alto. Pontos aditivos significativos devido ao valor histórico.
  • Fricção: Moderada.
  • Resultado: Prioridade Média-Alta. A campanha raramente está no topo da lista (a menos que o prazo aperte), mas os bônus estratégicos a mantêm consistentemente visível, impedindo que caia para o fundo.

Caso C: O "Gargalo" (Urgência Padrão / Extrema Complexidade)

Cenário: Uma campanha padrão que é operacionalmente difícil/dolorosa.

  • Urgência: Padrão.
  • Bônus: Nenhum.
  • Fricção: Alta (Penalidade Severa).
  • Resultado: Prioridade Baixa. O algoritmo desprioriza esta tarefa para proteger o fluxo (throughput) da operação mais ampla. Ela só subirá na prioridade se a Urgência se tornar crítica o suficiente para superar a penalidade de fricção.

Caso D: A "Semente" (Alto Potencial)

Cenário: Uma campanha padrão para um cliente identificado como oportunidade de alto crescimento.

  • Urgência: Padrão.
  • Potencial: Máximo.
  • Resultado: Prioridade Elevada. O multiplicador de potencial eleva esta campanha acima de pares com orçamentos similares, garantindo que a operação nutra o relacionamento.

5. Referência de Implementação

5.1. Tabela de Lógica de Bônus

Parâmetros recomendados para implementar bônus estratégicos.

Métrica Recomendação Lógica Sugestão de Teto
Bônus de Volume Adicionar $N$ pontos para cada campanha ativa > 1. Teto de +15 pontos
Bônus de LTV Adicionar $N$ pontos a cada $10k (ou unidade monetária) em Valor Vitalício (LTV). Teto de +10 pontos

5.2. Tabela de Coeficiente de Fricção

Multiplicadores de penalidade recomendados com base na complexidade (escala 1-10).

Nível de Complexidade Multiplicador ($\alpha$) Efeito
Baixa (1-3) $1.0$ - $0.9$ Impacto negligenciável.
Média (4-6) $0.8$ - $0.7$ Amortecimento moderado (-30%).
Alta (7-10) $0.6$ Amortecimento severo (-40%).

6. Primeiros Passos

Para implementar este algoritmo, você precisará de um conjunto de dados contendo:

  1. Dados de Orçamento: Orçamento total vs. Orçamento gasto.
  2. Dados de Tempo: Data de início, Data de fim, Data da última entrega.
  3. Dados do Cliente: Investimento histórico, Contagem de campanhas ativas.
  4. Dados Qualitativos: Pontuação de complexidade (manual ou calculada), Pontuação de potencial.

Exemplo de Código

def calcular_score_prioridade(campanha):
    if campanha.status != 'ATIVO':
        return 0
    
    # 1. Calcular Urgência (Base)
    queima_diaria_necessaria = campanha.orcamento_restante / campanha.dias_restantes
    score_base = normalizar(queima_diaria_necessaria, 0, 100)
    
    # 2. Adicionar Estagnação & Potencial
    fator_dias_ociosos = crescimento_log(campanha.dias_desde_ultimo_video)
    multiplicador_potencial = 1 + (campanha.potencial_cliente / 100)
    
    score_intermediario = (score_base + fator_dias_ociosos) * multiplicador_potencial
    
    # 3. Adicionar Bônus Estratégicos
    bonus_estrategico = (campanha.campanhas_ativas * 5) + (campanha.ltv / 10000)
    score_intermediario += min(bonus_estrategico, 25) # Limitar bônus
    
    # 4. Aplicar Penalidade de Fricção
    coeficiente_friccao = obter_coeficiente_friccao(campanha.complexidade)
    score_final = score_intermediario * coeficiente_friccao
    
    return min(score_final, 100)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors