Aranisdocs
aranis.ai
Docs/Methodology/Scoring model

Scoring model

Updated on July 17, 2026

Visão geral do pipeline matemático

O modelo de scoring do Aranis transforma respostas binárias e semi-binárias em métricas quantitativas comparáveis. O pipeline passa por quatro camadas: conversão de respostas em pesos, cálculo de maturidade por domínio, cálculo de Risk Score por categoria de risco, e agregação em Risco do Negócio organizacional. Todos os parâmetros do modelo são configuráveis por organização na tabela org_scoring_config — não há valores hardcoded, permitindo calibração sem redeploy.

Cálculo de maturidade

A maturidade bruta é calculada separadamente para cada domínio (Cyber, Privacidade, BCN) usando apenas os controles daquele domínio respondidos pelo fornecedor. Respostas válidas são SIM e NÃO (PARCIAL validado conta como 0,5 SIM; NA é excluído do denominador). A fórmula é: Maturidade = (Σ pesos_SIM / count_respostas_válidas) × 4. O resultado é normalizado para 0–1 dividindo por 4.

As quatro bandas de maturidade são: Imaturo (0–0,25), Básico (0,25–0,50), Operacional (0,50–0,75) e Avançado (0,75–1,00). Essas bandas são estáticas e independentes da calibração dinâmica de quartis usada no Risk Score.

Probabilidade ponderada por CVSS

Para cada controle respondido como NÃO, o sistema calcula: Prob = count_NÃO / count_válidas (frequência de não-conformidade no universo de fornecedores), depois Prob_Ponderada = Prob × (CVSS_Score / 10). O CVSS Score vem da tabela control_cve_map, pré-populada via NVD API e sincronizada periodicamente pelo Inngest. Para controles LGPD, usa-se CVSS fixo de 7.5 (via campo cvss_override), refletindo risco regulatório mandatório.

Risk Score por categoria — matriz 4×4

Para cada categoria RC01–RC10, a Prob_Risco é a mediana das Prob_Ponderadas dos controles mapeados àquela categoria que estão em NÃO. O Impacto_Final é calculado como: 0,4 × (Exp_Médio/10) + 0,3 × (%crítico) + 0,3 × (DesvPad_Norm), onde Exp_Médio usa escala exponencial (baixo=1, médio=3, alto=6, crítico=10) da criticidade dos fornecedores, e o desvio padrão penaliza portfolios de fornecedores com criticidades heterogêneas.

Prob_Risco e Impacto_Final são classificados em quartis (1–4) para gerar Prob_Ref e Impacto_Ref. O Risk Score final da categoria é: 0,4 × Prob_Ref + 0,6 × Impacto_Ref. O peso maior no impacto reflete que o dano potencial ao negócio é mais determinante que a frequência de gaps observados.

RiskScore do fornecedor

O RiskScore individual do fornecedor combina maturidade e scanner. Sem scanner: RiskScore = 1 − Maturidade_Normalizada. Com scanner: RiskScore = (1 − MatNorm) × 0,6 + (1 − ScannerNorm) × 0,4. O scanner ocupa 40% do peso quando disponível. O ScannerNorm é o score normalizado 0–1 do scan de superfície de domínio, calculado pelos quatro grupos de sinais (email, TLS, headers, reputação) com pesos 0,30/0,30/0,20/0,20.

Penalidade de governança RC10

A maturidade dos controles GV.* é calculada separadamente como GV_norm. Esse valor é aplicado como fator de credibilidade sobre as demais maturidades: Maturidade_Ajustada = Maturidade × (1 − 0,20 × (1 − GV_norm)). O fator 0,20 significa que no pior caso (GV_norm=0), as maturidades são reduzidas em 20%. Quando GV_norm < 0,40, um bloco de alerta explícito é adicionado ao relatório.

Risco do Negócio — agregação organizacional

O Risco do Negócio por categoria é ponderado pelo volume de fornecedores: peso_volume = 1 + 0,15 × log10(n_fornecedores + 1). Com 1 fornecedor: ×1,045. Com 10: ×1,15. Com 100: ×1,30. O fator 0,15 é configurável em org_scoring_config. O Risco do Negócio final da organização é a mediana dos Riscos_Negócio_categoria ponderados — mediana por ser robusta a outliers de categorias com poucos fornecedores.