Agentes de IA e SQLite automatizam análise de propostas técnicas em arquivos Word

Uma solução caseira desenvolvida com SQLite, C# e agentes de inteligência artificial está transformando documentos Word semiestruturados em uma base de dados consultável. O sistema, criado para resolver um problema antigo em uma empresa de engenharia, extrai informações de propostas técnicas e as armazena diretamente em JSON dentro do banco de dados, permitindo consultas complexas sem a necessidade de um banco NoSQL dedicado.

O problema da informação presa em documentos Word

Propostas técnicas para plantas industriais, frequentemente elaboradas em Microsoft Word, representam um desafio de gestão do conhecimento. Esses documentos, embora ricos em detalhes técnicos, mantêm as informações “presas” na cabeça de quem os criou ou em arquivos difíceis de pesquisar. Quando um novo engenheiro entra na equipe ou quando é necessário referenciar um projeto específico, a busca por informações se transforma em uma tarefa manual de perguntas a colegas e varredura de pastas, um processo ineficiente e propenso a erros.

A dificuldade central reside na natureza semiestruturada dos arquivos. Embora sigam um formato geral, detalhes como potência de motores, tipos de materiais, dimensões de equipamentos e condições do cliente não estão organizados de maneira que um sistema computacional possa acessar e cruzar facilmente. Transformar essa pilha de documentos em dados estruturados e consultáveis era o objetivo principal do projeto.

Arquitetura do fluxo com agentes de IA sequenciais

A solução implementada funciona através de uma sequência de agentes de IA especializados, cada um responsável por uma etapa do processo. O fluxo começa com a extração de dados brutos. Um agente inicial é responsável por ler o conteúdo da proposta técnica, que atualmente é convertida manualmente de Word para um arquivo de texto simples (.txt). Esse agente analisa o texto e gera um objeto JSON perfeitamente estruturado, organizando as informações técnicas, comerciais e de projeto em campos definidos.

Armazenamento direto de JSON no SQLite

O JSON gerado é então inserido diretamente em uma coluna do tipo TEXT em um banco de dados SQLite. Esta abordagem simples revelou uma potência inesperada através das funções nativas do SQLite para manipulação de JSON, como json_extract, json_each e json_tree. Com essas funções, é possível realizar consultas SQL que “entram” dentro do objeto JSON armazenado, filtrando e cruzando dados como se estivessem em colunas tradicionais, sem a complexidade de migrar para um banco de dados NoSQL.

Do pedido do usuário à query SQL final

Para tornar o sistema acessível, dois outros agentes completam o ciclo. Um agente atua como um “Construtor de Queries”. Ele recebe o schema (a estrutura) do JSON armazenado e a intenção do usuário, expressa em linguagem natural. Por exemplo, um usuário pode pedir: “Quero todas as propostas com motores entre 150 e 200 kW para o cliente X”. O agente interpreta essa solicitação, entende quais campos do JSON correspondem aos critérios e monta automaticamente a query SQL correta.

Finalmente, um agente “Executor” entra em ação. Este possui uma ferramenta que se conecta ao banco de dados SQLite, executa a query gerada pelo agente anterior e devolve os resultados ao usuário de forma formatada e clara, incluindo número da proposta, cliente e os detalhes técnicos solicitados.

Stack tecnológica: Microsoft Agent Framework, C# e Vue

No backend, a implementação foi feita em C# utilizando o Microsoft Agent Framework (MAF). A escolha pelo MAF sobre outras opções como o Semantic Kernel se deu pela sua lógica de fluxo sequencial de agentes, que lembra a interface visual de automação de nós do n8n, facilitando a orquestração das etapas. O MAF é visto como uma evolução de frameworks anteriores como Semantic Kernel e AutoGen. A persistência de dados segue o padrão Repository utilizando o micro-ORM Dapper para operações no SQLite.

No frontend, a decisão foi por Vue.js, marcando uma primeira experiência de integração de um framework JavaScript moderno com ASP.NET Core. O resultado foi considerado fluido, criando uma interface onde os engenheiros podem fazer perguntas em linguagem natural e receber respostas instantâneas a partir do histórico de propostas.

Próximos passos: automação total e avaliação de FTS e RAG

Com o núcleo do sistema funcionando, os próximos desafios são a automação completa do pipeline e a avaliação de funcionalidades avançadas do SQLite. A conversão manual de Word para TXT é um gargalo que precisa ser eliminado, possivelmente através de bibliotecas de processamento de documentos.

Full Text Search do SQLite em produção

Uma das dúvidas técnicas que surgiram é sobre a aplicação do módulo de Full Text Search (FTS) do SQLite em um ambiente de produção. Este módulo permitiria buscas textuais rápidas e robustas em todo o conteúdo das propostas, indo além dos campos estruturados no JSON. A comunidade de desenvolvedores é consultada para compartilhar experiências sobre a robustez e performance do FTS do SQLite em cenários reais.

Busca vetorial (RAG) versus extração estruturada em JSON

Outra questão em aberto é a comparação entre a abordagem atual de extração estruturada para JSON e uma possível implementação de RAG (Retrieval-Augmented Generation) com busca vetorial. Enquanto o JSON cria um “esqueleto” de dados fixo, o RAG poderia permitir buscas semânticas mais flexíveis no texto completo dos documentos. A pergunta para especialistas é qual abordagem teria melhor desempenho e utilidade para documentos técnicos complexos, onde a precisão é crítica.

Divulgação do conhecimento: repositório e system prompts

Como parte do compartilhamento da solução, está planejada a criação de um repositório público no GitHub. Ele conterá a estrutura dos códigos e, crucialmente, os “system prompts” utilizados para configurar e guiar o comportamento de cada agente de IA. Esses prompts são fundamentais para a qualidade da extração e interpretação dos dados.

Para proteger informações sensíveis da empresa, o repositório será populado com arquivos de exemplo genéricos, servindo como um guia prático para replicar a arquitetura do fluxo. O desenvolvimento envolveu intensamente a prática de “vibecoding”—codificação iterativa baseada em tentativa, erro e ajuste fino—resultando em uma solução considerada robusta e interessante para um problema corporativo comum.

O sistema demonstra que a combinação de ferramentas acessíveis como SQLite, frameworks de agentes de IA e uma arquitetura bem pensada pode resolver problemas concretos de gestão do conhecimento. Ele transforma um ativo digital inerte—os documentos Word—em um banco de dados inteligente e conversável, democratizando o acesso à informação técnica e reduzindo a dependência de memórias individuais. A solução caseira prova que barreiras tecnológicas complexas podem ser transpostas com os recursos já disponíveis, desde que aplicados com criatividade e foco no problema real do usuário final.

Compartilhar este artigo
Canal oficial de conteúdo do portal Overcentral. A Equipe Central produz notícias, guias e análises com foco em credibilidade e relevância, garantindo que você receba o melhor conteúdo editorial diariamente.