Quando Regex Ganha de um LLM — Echology
Description: Voce nao precisa de um modelo de 70B pra saber que 'shall' significa obrigatorio. Decompose classifica estrutura de documentos em 3ms sem nenhuma chamada de API.

# Quando Regex
Ganha de um LLM

Voce nao precisa de um modelo de 70B pra saber que "shall" significa obrigatorio.

15 de fevereiro de 2026
8 min de leitura

Uma tarefa de classificacao de documentos: dado um trecho da Especificacao de Transporte do MCP, determine quais partes sao requisitos obrigatorios, quais sao riscos de seguranca e quais sao preenchimento informativo que seu agente pode pular.

Um LLM faz isso. Voce pode pedir pro Claude ou GPT-4 ler o texto e classificar cada secao. Vai levar 2-10 segundos, custar $0,003-0,02 por chamada, e dar respostas levemente diferentes toda vez que rodar.

Ou voce pode fazer com regex em 3,78 milissegundos. Deterministicamente. Offline. De graca.

E isso que o Decompose faz. E uma biblioteca Python que divide texto em unidades semanticas classificadas — sem LLM, sem chave de API, sem GPU. Uma chamada de funcao. Aqui esta a saida completa do processamento da spec de transporte do MCP:

## A entrada

1.786 caracteres de texto de especificacao. Cinco secoes cobrindo transportes, um aviso de seguranca, stdio, SSE (deprecado), streamable HTTP e requisitos de seguranca. O tipo de documento que toda implementacao MCP precisa ler com cuidado.

# Duas linhas de Python from decompose import decompose result = decompose(spec_text) # 3,78ms

## A saida

9 unidades. Cada uma tem nivel de autoridade, categoria de risco, score de atencao e flag de acionabilidade. Nenhum LLM foi consultado. Aqui estao as tres que importam:

Unidade 2 — Aviso de Seguranca
authority: directive risk: security attention: 2.2 actionable: true "Implementations SHOULD be cautious about exposing MCP servers via SSE to untrusted networks..." → SHOULD = autoridade diretiva. "untrusted networks" = risco de seguranca. Atencao: 2.2
Unidade 9 — Requisitos de Seguranca
authority: mandatory risk: security attention: 3.0 actionable: true "All implementations MUST: - Use HTTPS for non-local connections - Validate Origin headers on all requests - Implement proper session management - Follow OAuth 2.1 for authentication" → MUST = autoridade obrigatoria. Risco de seguranca + obrigatorio = atencao 3.0 Esta e a unidade que seu agente le primeiro.

E as unidades que nao importam:

Unidade 1 — Transports (visao geral) authority: mandatory risk: informational attention: 0.3 → "must handle message framing" — boilerplate Unidade 3 — Standard Input/Output (stdio) authority: informational risk: informational attention: 0.0 → descricao, sem obrigacoes, pular Unidade 7 — Streamable HTTP authority: informational risk: informational attention: 0.0 → mesma coisa — so descricao, pular Unidade 8 — Request-Response Flow authority: permissive risk: informational attention: 0.1 → "server MAY send multiple messages" — bom saber

Um agente usando esses scores leria 2 de 9 unidades. Saberia que os requisitos de seguranca sao obrigatorios (MUST) e o aviso de seguranca e consultivo (SHOULD). Pularia a visao geral, a descricao do stdio e o aviso de deprecacao do SSE. Economizaria 78% da janela de contexto so nesse documento.

## Como funciona

Sem magica. A classificacao roda em tres coisas:

### 1. Deteccao de palavras-chave RFC 2119

"MUST", "SHALL", "MUST NOT" → `mandatory` ou `prohibitive`. "SHOULD", "RECOMMENDED" → `directive`. "MAY" → `permissive`. Sem palavras-chave → `informational`.

Isso nao e opiniao. E o padrao real. A RFC 2119 foi escrita em 1997 especificamente pra tornar essas palavras inequivocas em especificacoes. Um LLM tem que descobrir isso a partir dos dados de treinamento. Regex so faz match na palavra.

### 2. Padroes de categoria de risco

Palavras como "attack", "untrusted", "authentication", "HTTPS" → `security`. Valores em dolar e termos financeiros → `financial`. "OSHA", "safety-critical", "load-bearing" → `safety-critical`. "compliance", "violation", "regulation" → `compliance`.

Esses padroes sao deterministicos. Nao variam entre execucoes. Nao alucinam risco onde nao existe.

### 3. Scoring de atencao

Uma formula simples: peso de autoridade × multiplicador de risco. Obrigatorio + seguranca = score alto. Informativo + informativo = 0.0. Os numeros nao sao arbitrarios — sao calibrados pra colocar conteudo genuinamente critico no topo da lista de leitura.

E isso. Tres sistemas de regex, um splitter de Markdown com reconhecimento de headers e uma calculadora de atencao. Total de codigo: ~2.000 linhas de Python. Dependencias externas: zero.

## Quando isso realmente ganha de um LLM?

Nem sempre. Vou ser especifico sobre os tradeoffs.

Regex ganha quando:

- Voce precisa de classificacao consistente e reproduzivel entre documentos
- Voce esta pre-processando centenas ou milhares de documentos antes de mandarem pro modelo
- Voce esta rodando local / air-gapped / controlado por ITAR
- Voce precisa de uma trilha de auditoria que explique exatamente por que uma secao foi marcada
- Voce nao pode gastar $0,01 por documento em escala
- Voce precisa da resposta em 4ms, nao em 4 segundos

LLMs ganham quando:

- Voce precisa entender nuance, implicacao ou raciocinio entre documentos
- O documento usa linguagem de dominio especifico que nao casa com padroes standard
- Voce esta classificando intencao, nao estrutura
- Voce tem um documento, nao mil

O insight e que nao sao mutuamente exclusivos. Decompose roda antes do seu LLM. E um pre-processador. Seu agente le 9 unidades de metadata em vez de 1.786 caracteres de texto cru. Decide quais 2 unidades mandar pro modelo pra analise mais profunda. O LLM ainda faz o trabalho dificil — so faz menos trabalho facil.

## A conta do custo

Digamos que voce tem 10.000 documentos de especificacao. Media de 5.000 caracteres cada.

# Classificacao por LLM (Claude Sonnet, est.) 10.000 docs × ~2.000 tokens de input × $3/M = $60 input 10.000 docs × ~500 tokens de output × $15/M = $75 output Total: ~$135 Tempo: ~10.000 × 3s = 8,3 horas (sequencial) # Decompose 10.000 docs × 14ms = 2,3 minutos Custo: $0

Depois do decompose, seu agente talvez mande 20% das unidades pro LLM pra analise mais profunda. Agora seu custo de LLM e $27 em vez de $135, e o modelo recebe texto pre-classificado e estruturalmente anotado em vez de blobs crus.

## Teste voce mesmo

pip install decompose-mcp # Processar qualquer documento from decompose import decompose result = decompose(open("spec.md").read()) for unit in result["units"]: if unit["attention"] > 1.0: print(f"{unit['heading']}: {unit['authority']} / {unit['risk']} / {unit['attention']}") # Ou pipe pelo CLI cat spec.md | python -m decompose --compact # Ou rode como ferramenta MCP pro seu agente python -m decompose --serve

Cada unidade retorna com: `authority`, `risk`, `attention`, `actionable`, `irreducible`, `entities`, `dates`, `financial`, `heading_path`. Sem chave de API. Sem setup. Roda num Raspberry Pi.

## O que estamos construindo

Decompose e o primitivo open-source. AECai e o produto — uma plataforma local-first de inteligencia documental para empresas de Arquitetura, Engenharia e Construcao. Usa Decompose como camada de chunking e classificacao, depois adiciona verificacao contra normas tecnicas, referencia cruzada contra padroes jurisdicionais e busca vetorial em todo o acervo do projeto.

Ambos sao construidos pela Echology. Ambos rodam no seu hardware. Nenhum dado sai pra nuvem de ninguem.

Se voce esta construindo agentes que leem documentos, vamos conversar. Se quer ver o que o Decompose encontra nos seus documentos, manda pra gente.

pip install decompose-mcp GitHub Contato