Skip to main content

Cenário

Uma fintech que oferece crédito pessoal ou capital de giro para empresas precisa:
  • Analisar automaticamente cada solicitação
  • Aprovar, alertar ou negar em menos de 2 minutos
  • Manter rastreabilidade de cada decisão
  • Integrar com seu sistema de originação existente

Arquitetura recomendada


Passo a passo

1. Definir a política de crédito

Configure uma política que avalie os critérios do seu produto. Para crédito pessoal (CPF), um exemplo:
GrupoRegraCritérioResultado
CadastralAGE_PERSON>= 21 anosAPPROVED
CadastralDEATHIS_FALSEDENIED se óbito
ScoreSCORE>= 500APPROVED
ScoreSCOREBETWEEN 300–499ALERT
ScoreSCORE< 300DENIED
DívidasPEFIN_AMOUNT= 0APPROVED
DívidasPEFIN_AMOUNTBETWEEN 1–3ALERT
DívidasTOTAL_DEBT< R$ 5.000APPROVED
Para capital de giro (CNPJ), adicione:
GrupoRegraCritérioResultado
CadastralCOMPANY_OPENING_TIME>= 12 mesesAPPROVED
CadastralCOMPANY_SITUATION= “Ativa”APPROVED
CadastralBANKRUPTIS_FALSEDENIED
SCRSCR_TOTAL_LOSSES= 0APPROVED
SCRSCR_CALCULATED_REVENUE_EXPIRED< 5%APPROVED

2. Integrar o fluxo de solicitação

Quando uma solicitação chega no seu sistema de originação:
// No seu backend — quando solicitação é recebida
async function processarSolicitacao(solicitacao) {
  const report = await gyraApi.post('/report', {
    document: solicitacao.cpfOuCnpj,
    type: solicitacao.tipo,          // 'CPF' ou 'CNPJ'
    policyId: POLICY_ID,
    externalId: solicitacao.id,      // ID da solicitação no seu sistema
  });

  // Salvar reportId para rastreabilidade
  await db.solicitacoes.update(solicitacao.id, {
    gyraReportId: report.id,
    status: 'analise_em_andamento',
  });
}

3. Processar a decisão via webhook

// Endpoint que recebe o webhook da GYRA+
app.post('/webhooks/gyra', async (req, res) => {
  res.sendStatus(200); // Responder antes de processar

  const { reportId, policyStatus, score, externalId } = req.body;

  const solicitacao = await db.solicitacoes.findByExternalId(externalId);

  if (policyStatus === 'APPROVED') {
    await aprovarCredito(solicitacao.id);
    await notificarCliente(solicitacao, 'aprovado');

  } else if (policyStatus === 'ALERT') {
    await enviarParaAnalistas(solicitacao.id, reportId);
    await notificarCliente(solicitacao, 'em_analise');

  } else if (policyStatus === 'DENIED') {
    await recusarCredito(solicitacao.id);
    await notificarCliente(solicitacao, 'negado');
  }
});

Métricas que você pode monitorar

Com a rastreabilidade do externalId e reportId, você consegue acompanhar:
  • Taxa de aprovação automática por período e produto
  • Tempo médio de análise (do POST ao webhook)
  • Distribuição de score da base de solicitantes
  • Principais motivos de negação (quais regras são mais acionadas)
  • Taxa de ALERT convertidos após revisão manual

Boas práticas para fintechs

Guarde o reportId de cada decisão. Em casos de contestação ou auditoria regulatória, o relatório completo fica disponível na GYRA+ e pode ser acessado a qualquer momento via GET /report/:id.
  • Configure Risk Bands com pelo menos 3 faixas: aprovação automática, alerta para revisão, negação
  • Defina um SLA claro para tratamento manual dos casos ALERT
  • Use o score (não só o status) para definir o valor do limite de crédito aprovado
  • Implemente logging de todas as chamadas e webhooks para auditoria