Agente de IA para Organização de Arquivos Acadêmicos

07 de December de 2025 • Tempo de leitura: 5 min

Como criar um agente de IA que automatiza a organização e a categorização de documentos acadêmicos.

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

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

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.

© 2025 prototipe.ai. Todos os direitos reservados.