1. Propósito e Escopo
Este documento define todos os prompts, configurações de memória, transição entre estados e demais requisitos funcionais para um agente de IA que automatiza a organização e categorização de documentos acadêmicos. Essa documentação é um modelo de PRD ou Documento de Requisitos de Produto específicos para construção de Agentes de IA.
O objetivo principal é garantir que registros de alunos e documentos institucionais estejam sempre atualizados e acessíveis, reduzindo a necessidade de atualizações manuais demoradas.
2. Contexto e Problema
Cenário Atual
Atualmente, as instituições acadêmicas enfrentam desafios significativos relacionados à organização e acesso a documentos. Os principais problemas incluem:
- Falta de organização e categorização adequada de documentos acadêmicos.
- Dificuldade de acesso rápido a registros de alunos e documentos institucionais.
- Atualização manual e demorada de arquivos.
A gestão ineficiente desses documentos resulta em atrasos no acesso à informação e aumenta o risco de erros e inconsistências.
Problemas Identificados
- Consumo de tempo: A atualização manual de documentos consome tempo valioso que poderia ser destinado a outras atividades acadêmicas.
- Risco de erros: A manipulação manual de documentos aumenta a probabilidade de erros e inconsistências nos registros.
- Acesso ineficiente: A falta de um sistema de busca eficiente dificulta o acesso rápido a documentos específicos.
3. Impactos Esperados
A implementação deste agente de IA visa alcançar os seguintes resultados:
- Reduzir o tempo de atualização de documentos em pelo menos 70%.
- Melhorar a precisão das informações documentadas.
- Aumentar a eficiência no acesso a registros acadêmicos e documentos institucionais.
4. Visão Geral da Solução
O agente de IA para organização de arquivos acadêmicos categoriza documentos automaticamente com base em metadados e conteúdo, além de criar um sistema de busca eficiente para acesso rápido a documentos específicos. A seguir são detalhadas todas as regras de negócio e especificações funcionais necessárias para que esse agente atue como um assistente útil e autônomo na gestão de documentos acadêmicos.
A solução consiste em um fluxo de automação composto por 5 agentes de IA. O processo inicia com a classificação e normalização de metadados de documentos acadêmicos e termina com a execução de operações de sincronização em registros acadêmicos.
| Agentes | Função Principal |
|---|---|
Agente de Classificação e Normalização de Metadados de Documentos Acadêmicos | Classificar automaticamente documentos acadêmicos a partir de metadados e conteúdo. |
Agente de Execução de Consulta a Documento | Realizar consulta ao repositório para obter candidatos de resultados de busca. |
Agente de Orquestração de Busca, Ranqueamento e Facetas | Transformar resultados brutos de busca em uma lista ranqueada e explicável. |
Agente de Reconciliação e Sincronização de Registros Acadêmicos | Detectar mudanças em registros acadêmicos e gerar operações de upsert/remoção. |
Agente de Execução de Chamada à API | Realizar chamadas à API do repositório para aplicar upserts e remoções. |
5. Protótipos
Para proporcionar uma visão clara e tangível da solução proposta, criamos protótipos interativos que demonstram tanto o fluxo de trabalho dos agentes quanto o resultado final que a instituição receberá. Explore os links abaixo para entender melhor a solução em ação.
6. Requisitos Funcionais
RF 1. Agente de Classificação e Normalização de Metadados de Documentos Acadêmicos
1.1 Tarefa do Agente
Classificar automaticamente documentos acadêmicos a partir de metadados e conteúdo, padronizando campos-chave e preparando-os para arquivamento e indexação.
1.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo arquivos de documentos acadêmicos juntamente com metadados brutos. Esses documentos precisam ser classificados e normalizados para arquivamento.
# 2. Objetivo
Classificar automaticamente documentos acadêmicos a partir de metadados e conteúdo, padronizando campos-chave e preparando-os para arquivamento e indexação.
# 3. Regras que você deve seguir para gerar sua resposta
- Sempre gerar document_id único e checksum SHA256 a partir do conteúdo para controle de duplicidade. Caso checksum já exista, marcar padronizacao_realizada='nao' e registrar similaridade_possiveis_duplicados com o id existente.
- Determinar categoria_principal a partir de metadados e conteúdo com prioridade: (1) tipo_documento informado; (2) termos no conteúdo; (3) pasta/origem. Mapear para um catálogo fechado: ['Registros de Alunos','Documentos Institucionais','Pesquisa Acadêmica','Administrativo Acadêmico'].
- Definir subcategoria com base em regras específicas por categoria. Exemplos: Registros de Alunos -> ['Histórico','Matrícula','Diploma','Ementa','Atestado']; Documentos Institucionais -> ['Portaria','Regulamento','Calendário Acadêmico']; Pesquisa Acadêmica -> ['Artigo','Projeto','Relatório','Tese','Dissertação'].
- Normalizar tipo_documento_norm em snake_case a partir da subcategoria (ex.: 'Historico Escolar' -> 'historico_escolar').
- Extrair aluno_id e curso_id quando houver menções de matrícula, CPF/ID interno, ou cabeçalho padrão de secretaria; se ausente e for documento institucional, deixar null.
- Inferir periodo_letivo (ex.: '2025.1', '2025.2') e ano_letivo a partir de datas e expressões como '1º semestre/2025'; quando ambíguo, definir periodo_letivo=null e manter ano_letivo da data principal do documento.
- Classificar sensibilidade_dado conforme presença de PII/PHI: ['alta','media','baixa']. Se houver CPF, RG, endereço ou notas, definir 'alta'. status_privacidade: ['publico','restrito_aluno','restrito_interno'] de acordo com categoria/subcategoria.
- Definir politica_retenção a partir de tabela de negócio: histórico e diploma = retenção permanente; documentos financeiros de aluno = 5 anos após desligamento; portarias = 10 anos; pesquisa (trabalhos) = permanente, salvo política institucional diversa.
- Montar termos_indexacao com: entidades_extraidas (nomes, cursos, disciplinas), tipo_documento_norm, periodo_letivo, ano_letivo e palavras-chave do título.
- Gerar decisão_arquivamento com pasta_destino no padrão: '/repositorio/{categoria_principal}/{subcategoria}/{ano_letivo}/' e nome_arquivo_norm = '{aluno_id|unidade}-{tipo_documento_norm}-{data_documento}-{document_id}.pdf' (ajustar extensão conforme origem).
- Preencher referencia_registro_academico com chave composta quando aplicável: '{aluno_id}:{tipo_documento_norm}:{periodo_letivo}'.
- Atribuir confidence_scores entre 0 e 1 para classificacao, entidades e metadados. Se classificacao < 0.7, definir flag review_recomendada=true no output (campo adicional) para revisão humana posterior.
- Não alterar conteúdo do arquivo; atuar apenas na geração do JSON de classificação e normalização. 1.3 Configurações do Agente
1.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente é o ponto de partida do fluxo e deve ser acionado pelo envio de um arquivo de documento acadêmico via API. Na fase de testes, o fluxo será iniciado pelo envio manual dos dados, que serão enviados para o agente diretamente por upload do documento na interface da Prototipe AI, para acelerar o processo de validação.
- Tipo do input: Arquivos de documentos acadêmicos acompanhados de metadados brutos.
-
Formatos Suportados: Esse agente deve ser capaz de receber documentos nos formatos:
.pdf,.docx,.txt. - Número de caracteres esperado: Este agente deve ter capacidade para processar um input de texto com até 50.000 caracteres.
1.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON por documento com campos normalizados, contendo informações detalhadas sobre a classificação e decisão de arquivamento.
-
Exemplo de Estrutura de Output:
{ "document_id": "abc123", "categoria_principal": "Registros de Alunos", "subcategoria": "Histórico", "tipo_documento_norm": "historico_escolar", "aluno_id": "202520001", "curso_id": "ENG001", "periodo_letivo": "2025.1", "ano_letivo": "2025", "pasta_destino": "/repositorio/Registros de Alunos/Histórico/2025/", "nome_arquivo_norm": "202520001-historico_escolar-2025-abc123.pdf" } - Número de caracteres esperado: O JSON gerado deve ter um tamanho estimado em torno de 1.500 caracteres.
1.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
1.3.4 Ferramentas do Agente
- Documentos: Não consulta documentos externos.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: Não se conecta a sistemas externos.
1.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Execução de Consulta a Documento.
1.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Execução de Consulta a Documento.
RF 2. Agente de Execução de Consulta a Documento
2.1 Tarefa do Agente
Realizar consulta ao repositório/document store para obter candidatos de resultados de busca com base em parâmetros de consulta.
2.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais Você está recebendo parâmetros de consulta que devem ser usados para buscar documentos em um repositório acadêmico. # 2. Objetivo Realizar consulta ao repositório/document store para obter candidatos de resultados de busca com base em parâmetros de consulta. # 3. Regras que você deve seguir para gerar sua resposta - Este agente executa apenas a consulta ao repositório com os parâmetros recebidos, sem aplicar lógica adicional de LLM.
2.3 Configurações do Agente
2.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 1).
- Tipo do input: Parâmetros prontos de consulta.
- Formatos Suportados: Esse agente deve ser capaz de receber inputs em formato JSON.
- Número de caracteres esperado: Este agente deve ter capacidade para processar um input de até 5.000 caracteres.
2.3.2 Especificação do Output
- Formato de output: Dados recuperados em formato JSON, contendo informações detalhadas sobre os documentos encontrados.
-
Exemplo de Estrutura de Output:
{ "raw_hits": [ { "document_id": "doc123", "score_bruto": 0.85, "titulo_norm": "Histórico Escolar", "caminho": "/repositorio/Registros de Alunos/Histórico/2025/doc123.pdf", "snippet_raw": "Este documento contém o histórico escolar do aluno...", "categoria_principal": "Registros de Alunos", "subcategoria": "Histórico", "aluno_id": "202520001", "ano_letivo": "2025", "periodo_letivo": "2025.1" } ], "total": 1, "facets_raw": { "categoria_principal": ["Registros de Alunos"], "subcategoria": ["Histórico"], "ano_letivo": ["2025"], "periodo_letivo": ["2025.1"] } } - Número de caracteres esperado: O JSON gerado deve ter um tamanho estimado em torno de 2.000 caracteres.
2.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
2.3.4 Ferramentas do Agente
- Documentos: Não consulta documentos externos.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: Não se conecta a sistemas externos.
2.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Orquestração de Busca, Ranqueamento e Facetas.
2.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Orquestração de Busca, Ranqueamento e Facetas.
RF 3. Agente de Orquestração de Busca, Ranqueamento e Facetas
3.1 Tarefa do Agente
Transformar os resultados brutos de busca em uma lista ranqueada e explicável, com facetas utilizáveis e snippets contextuais.
3.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais Você está recebendo resultados brutos de busca que precisam ser transformados em uma lista ranqueada e explicável. # 2. Objetivo Transformar os resultados brutos de busca em uma lista ranqueada e explicável, com facetas utilizáveis e snippets contextuais. # 3. Regras que você deve seguir para gerar sua resposta - Normalizar consulta (consulta_normalizada) removendo stopwords irrelevantes e padronizando termos comuns acadêmicos (ex.: 'histórico' ~ 'historico escolar'). - Recalcular score combinando: 0.6*score_bruto + 0.2*match_em_metadados (aluno_id, tipo_documento_norm, periodo_letivo) + 0.2*recencia (decresce após 24 meses). Escalar resultado para 0..1. - Construir motivo_relevancia com até 3 itens objetivos (ex.: 'termo no título', 'match com aluno_id', 'documento recente'). - Gerar snippet de até 300 caracteres, preservando contexto e destacando até 3 termos-chave da consulta. - Filtrar resultados com sensibilidade_dado superior à sensibilidade_max informada, quando fornecida, excluindo-os da lista final. - Consolidar facets a partir de facets_raw, retornando até 10 valores mais frequentes por faceta, ordenados por frequência descrescente. - Garantir estabilidade de ordenação: empates são decididos por (score_bruto desc, ano_letivo desc, document_id asc). - Se nenhum resultado, retornar resultados=[] e facets coletadas do universo de consulta (se disponível) e sugerir ajustes de filtro no campo 'motivo_relevancia' do item explicativo 'sugestoes'.
3.3 Configurações do Agente
3.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 2).
- Tipo do input: Payload de busca do usuário + raw_hits do Agente de Execução de Consulta a Documento.
- Formatos Suportados: Esse agente deve ser capaz de receber inputs em formato JSON.
- Número de caracteres esperado: Este agente deve ter capacidade para processar um input combinado de até 10.000 caracteres.
3.3.2 Especificação do Output
- Formato de output: JSON contendo uma lista ranqueada de resultados, facetas utilizáveis e snippets contextuais.
-
Exemplo de Estrutura de Output:
{ "consulta_normalizada": "historico escolar aluno 2025", "filtros_aplicados": {"categoria": "Registros de Alunos"}, "resultados": [ { "document_id": "doc123", "titulo": "Histórico Escolar", "caminho": "/repositorio/Registros de Alunos/Histórico/2025/doc123.pdf", "score": 0.92, "motivo_relevancia": ["termo no título", "match com aluno_id"], "snippet": "Este documento contém o histórico escolar do aluno...", "meta": {"categoria": "Registros de Alunos", "subcategoria": "Histórico", "aluno_id": "202520001", "ano_letivo": "2025", "periodo_letivo": "2025.1"} } ], "facets": {"categoria_principal": ["Registros de Alunos"], "subcategoria": ["Histórico"], "ano_letivo": ["2025"], "periodo_letivo": ["2025.1"]}, "paginacao": {"page": 1, "page_size": 10, "total": 1} } - Número de caracteres esperado: O JSON gerado deve ter um tamanho estimado em torno de 3.000 caracteres.
3.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
3.3.4 Ferramentas do Agente
- Documentos: Não consulta documentos externos.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: Não se conecta a sistemas externos.
3.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Reconciliação e Sincronização de Registros Acadêmicos.
3.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Reconciliação e Sincronização de Registros Acadêmicos.
RF 4. Agente de Reconciliação e Sincronização de Registros Acadêmicos
4.1 Tarefa do Agente
Detectar mudanças em registros acadêmicos e gerar operações de upsert/remoção coerentes no repositório de documentos e metadados.
4.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais Você está recebendo eventos de mudança que precisam ser reconciliados com os registros acadêmicos existentes. # 2. Objetivo Detectar mudanças em registros acadêmicos e gerar operações de upsert/remoção coerentes no repositório de documentos e metadados. # 3. Regras que você deve seguir para gerar sua resposta - Para eventos em 'aluno' ou 'curso', propagar alterações de chaves (aluno_id, curso_id) para todos os documentos com referencia_registro_academico correspondente. - Para 'removido' de documento, incluir em removals se politica_retenção permitir; se política for 'permanente', bloquear remoção e registrar conflito com criterio_resolucao='bloquear_por_politica'. - Em 'matricula' atualizado, ajustar periodo_letivo e status_privacidade dos documentos de matrícula e atestados do aluno no período impactado. - Resolver conflitos por ordem: política de retenção > status_privacidade mais restritivo > dado mais recente (timestamp maior). Registrar conflito quando houver divergência não resolvível sem intervenção. - Definir consistencia_ok=true somente quando total_conflitos=0 e todas as referencias cruzadas (referencia_registro_academico) permanecerem válidas. - Preencher requires_operations=true se houver qualquer item em upserts ou removals; caso contrário, false.
4.3 Configurações do Agente
4.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 3).
- Tipo do input: Eventos de mudança em registros acadêmicos.
- Formatos Suportados: Esse agente deve ser capaz de receber inputs em formato JSON.
- Número de caracteres esperado: Este agente deve ter capacidade para processar um input de até 8.000 caracteres.
4.3.2 Especificação do Output
- Formato de output: Plano de sincronização em formato JSON, detalhando operações de upsert/remoção e conflitos detectados.
-
Exemplo de Estrutura de Output:
{ "requires_operations": true, "upserts": [ { "document_id": "doc456", "campos_atualizados": {"aluno_id": "202520002", "status_privacidade": "restrito_aluno"} } ], "removals": [ {"document_id": "doc789"} ], "reconciliacoes": [], "conflitos": [], "consistencia_ok": true, "resumo": {"total_upserts": 1, "total_removals": 1, "total_conflitos": 0} } - Número de caracteres esperado: O JSON gerado deve ter um tamanho estimado em torno de 2.500 caracteres.
4.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
4.3.4 Ferramentas do Agente
- Documentos: Não consulta documentos externos.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: Não se conecta a sistemas externos.
4.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta gerada por este agente deve ser visível para o Agente de Execução de Chamada à API.
4.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o Agente de Execução de Chamada à API.
RF 5. Agente de Execução de Chamada à API
5.1 Tarefa do Agente
Realizar chamadas à API do repositório/indice para aplicar upserts e remoções gerados no plano de sincronização.
5.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais Você está recebendo um plano de sincronização que deve ser executado no repositório de documentos. # 2. Objetivo Realizar chamadas à API do repositório/indice para aplicar upserts e remoções gerados no plano de sincronização. # 3. Regras que você deve seguir para gerar sua resposta - Este agente apenas executa as chamadas necessárias com o payload recebido e retorna os resultados de sucesso/falha, sem lógica adicional de LLM.
5.3 Configurações do Agente
5.3.1 Especificação do Input
- Mecanismo de Acionamento: Este agente deve ser acionado automaticamente após a conclusão do agente anterior (RF 4).
- Tipo do input: Payload pronto de operações de sincronização.
- Formatos Suportados: Esse agente deve ser capaz de receber inputs em formato JSON.
- Número de caracteres esperado: Este agente deve ter capacidade para processar um input de até 5.000 caracteres.
5.3.2 Especificação do Output
- Formato de output: Resultados da execução em formato JSON, detalhando sucesso e falhas das operações.
-
Exemplo de Estrutura de Output:
{ "aplicados": {"upserts_sucesso": ["doc456"], "removals_sucesso": ["doc789"]}, "falhas": [], "resumo": {"total_sucesso": 2, "total_falhas": 0} } - Número de caracteres esperado: O JSON gerado deve ter um tamanho estimado em torno de 1.000 caracteres.
5.3.3 Parâmetros de Geração
- Modelo: GPT-5
- Temperatura: 0.6
5.3.4 Ferramentas do Agente
- Documentos: Não consulta documentos externos.
- Calculadora: Não utiliza.
- Busca Online: Não utiliza.
- Sistemas Externos: O agente deverá enviar o JSON recebido para a API externa e retornar os resultados de sucesso/falha.
5.3.5 Memória
- Visibilidade das Instruções (Prompt): As instruções deste agente não devem ser visíveis para nenhum agente subsequente.
- Visibilidade da Resposta: A resposta (resultados de execução) é o entregável final e não é passada para outros agentes internos.
5.3.6 Regras de Orquestração e Transição
A execução deste agente finaliza o fluxo. Os resultados são o entregável final que deve ser disponibilizado ao usuário.