Agente de IA para Análise de Currículo Acadêmico

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

Como criar um agente de IA que revisa o currículo acadêmico dos alunos, identifica disciplinas pendentes e sugere um plano de estudos.

1. Propósito e Escopo

Este documento define todos os prompts, configurações de memória, transição entre estados e requisitos funcionais para o Agente de IA "Análise de Currículo Acadêmico", projetado para revisar o currículo acadêmico dos alunos, identificar disciplinas pendentes e sugerir um plano de estudos personalizado. 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 é automatizar a análise do histórico acadêmico, fornecendo uma visão clara do progresso do aluno e ajudando na organização de futuros semestres, com recomendações sobre carga horária ideal e possíveis sobreposições de disciplinas.

2. Contexto e Problema

Cenário Atual

Os alunos enfrentam desafios significativos em visualizar seu progresso acadêmico e planejar seus semestres futuros. A falta de clareza sobre quais disciplinas ainda precisam ser cursadas para finalizar o curso é um problema recorrente.


Problemas Identificados

  • Dificuldade de planejamento: Os alunos têm dificuldade em visualizar o que já foi concluído e o que ainda precisa ser feito, o que complica o planejamento dos semestres seguintes.
  • Falta de clareza: A falta de clareza sobre as disciplinas pendentes pode atrasar a conclusão do curso e impactar o desempenho acadêmico.

3. Impactos Esperados

A implementação deste agente de IA visa alcançar os seguintes resultados:

  • Melhorar a visualização do progresso acadêmico, permitindo que os alunos planejem seus semestres de maneira mais eficaz.
  • Fornecer clareza sobre as disciplinas pendentes, ajudando os alunos a compreender melhor o que é necessário para concluir seu curso.
  • Sugerir planos de estudo personalizados que considerem a carga horária ideal e possíveis sobreposições de disciplinas.

4. Visão Geral da Solução

O agente de IA para análise de currículo acadêmico revisa automaticamente o histórico acadêmico dos alunos, identificando disciplinas pendentes e sugerindo planos de estudo personalizados com base no tempo restante para conclusão do curso. 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 do currículo acadêmico dos alunos.

A solução consiste em um fluxo de automação composto por três agentes de IA. O processo inicia com a análise do histórico acadêmico do aluno e termina com a sugestão de um plano de estudos personalizado.

A execução dos agentes é sequencial e linear, seguindo a ordem definida na tabela abaixo.

Agentes Função Principal
Agente de Análise de Histórico Acadêmico (RF 1) Consolidar o histórico acadêmico do aluno, confrontar com a matriz curricular vigente e identificar todas as pendências para conclusão do curso.
Agente de Execução de Chamada à API (RF 2) Realizar consulta em sistema acadêmico para obter oferta de disciplinas, turmas e horários da próxima(s) janela(s) de matrícula.
Agente de Planejamento de Estudos (RF 3) Gerar um plano de estudos personalizado por semestre, equilibrando carga horária, respeitando pré/co-requisitos e evitando sobreposição de horários.


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 o aluno receberá. Explore os links abaixo para entender melhor a solução em ação.

6. Requisitos Funcionais

RF 1. Agente de Análise de Histórico Acadêmico

1.1 Tarefa do Agente

Consolidar o histórico acadêmico do aluno, confrontar com a matriz curricular vigente e identificar com precisão todas as pendências para conclusão do curso.

1.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON contendo o histórico acadêmico de um aluno. Este JSON inclui informações detalhadas sobre disciplinas cursadas, notas, frequência e tentativas.

# 2. Objetivo
Consolidar o histórico acadêmico do aluno, confrontar com a matriz curricular vigente e identificar com precisão todas as pendências para conclusão do curso.

# 3. Regras que você deve seguir para gerar sua resposta
- Priorizar versão da matriz: se existir versão em histórico e versão em matriz_curricular, usar a informada em matriz_curricular; se ausente, assumir a mais recente recebida no input.
- Critério de aprovação: considerar APROVADO quando nota_final >= min_nota_aprovacao da disciplina (ou política padrão) e frequência >= min_frequencia da disciplina (ou padrão). Se status = EQUIVALENCIA ou disciplina em dispensas, marcar como CONCLUIDA com origem correspondente.
- Disciplinas EM_ANDAMENTO contam como EM_ANDAMENTO e permanecem como pendentes para fins de conclusão até mudança de status; não contam para créditos concluídos.
- Trancamentos: TRANCADO não agrega créditos nem conclui requisito; manter contagem de tentativas quando aplicável, mas não somar ao GPA.
- GPA: calcular média ponderada pela carga_horaria ou créditos (preferir créditos se existirem ambos). Excluir disciplinas reprovadas sem nota final e as dispensadas/equivalências.
- Equivalências: mapear historico.disciplina_id para requisito destino_id antes de avaliar pendências; se múltiplas equivalências, escolher a que satisfaz requisito obrigatório primeiro; não duplicar créditos por equivalência.
- Eletivas/optativas: cumprir por soma de créditos, não por IDs específicos; computar créditos aprovados em qualquer disciplina com tipo compatível na matriz. Excedentes não compensam obrigatórias.
- Pré-requisitos: para cada disciplina pendente, listar bloqueios_pre_requisito não atendidos (status diferente de CONCLUIDA). Considerar co-requisitos: só elegível se co-requisitos estiverem CONCLUIDA ou EM_ANDAMENTO simultâneo na mesma janela (marcar como co_requisito necessário).
- Cadeias críticas: identificar correntes onde uma disciplina é pré-requisito de outras e marcar risco tipo cadeia_pre_requisito se o comprimento da cadeia restante >= 2.
- Reprovações: registrar tentativas e sinalizar risco alto_reprova se tentativas >= 2 na mesma disciplina.
- Oferta: se matriz_curricular.oferta existir por disciplina, usar para projetar elegibilidade_proxima_janela; caso não exista, não restringir por oferta e marcar motivo NAO_OFERTADA apenas quando explicitamente indicado.
- Políticas de créditos: computar creditos_concluidos, pendentes e carga_horaria; respeitar min/max definidos em políticas apenas para sinalização (não para reprojetar histórico).
- Integridade: se disciplina em histórico não pertence à matriz e não for eletiva/optativa, classificar como EXTRACURRICULAR e não contar créditos; não lançar erro.
- Saída consistente: preencher todos os campos do expected_output; arrays vazios quando aplicável; números inteiros onde definido; usar null somente quando dado ausente no input de origem.

# 4. Exemplo de Output que você deve produzir
{"resumo_progresso":{"creditos_concluidos":120,"creditos_pendentes":60,"carga_horaria_concluida":1800,"gpa":3.5},"status_por_requisito":[{"disciplina_id":"MAT101","nome":"Cálculo I","tipo":"OBRIGATORIA","status":"CONCLUIDA","motivo_status":"Aprovado com nota 8.5","nota_final":8.5,"frequencia":95,"tentativas":1,"bloqueios_pre_requisito":[],"co_requisitos_nao_atendidos":[]}],"pendencias":{"obrigatorias":["MAT102"],"eletivas":{"creditos_faltantes":6,"opcoes_sugeridas":["MAT205","MAT206"]},"optativas":{"creditos_faltantes":4,"opcoes_sugeridas":["MAT207"]},"acompl_horas_faltantes":30},"riscos_identificados":[{"tipo":"cadeia_pre_requisito","detalhe":"MAT102 é pré-requisito para MAT201 e MAT202"}],"elegibilidade_proxima_janela":{"disciplinas_elegiveis":["MAT102","MAT103"],"disciplinas_bloqueadas":[{"disciplina_id":"MAT201","motivo":"PRE_REQUISITO"}]}}
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 JSON contendo o histórico acadêmico do aluno via API. Na fase de testes, os dados serão enviados diretamente por upload na interface da Prototipe AI, para acelerar o processo de validação.
  • Tipo do input: O input inicial para o fluxo é um JSON contendo detalhes do histórico acadêmico do aluno.
  • Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato: .json.
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de texto com até 30.000 caracteres.

1.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON estruturado que resume o progresso acadêmico e identifica pendências para conclusão do curso.
  • Exemplo de Estrutura de Output:
     {"resumo_progresso":{"creditos_concluidos":120,"creditos_pendentes":60,"carga_horaria_concluida":1800,"gpa":3.5},"status_por_requisito":[{"disciplina_id":"MAT101","nome":"Cálculo I","tipo":"OBRIGATORIA","status":"CONCLUIDA","motivo_status":"Aprovado com nota 8.5","nota_final":8.5,"frequencia":95,"tentativas":1,"bloqueios_pre_requisito":[],"co_requisitos_nao_atendidos":[]}],"pendencias":{"obrigatorias":["MAT102"],"eletivas":{"creditos_faltantes":6,"opcoes_sugeridas":["MAT205","MAT206"]},"optativas":{"creditos_faltantes":4,"opcoes_sugeridas":["MAT207"]},"acompl_horas_faltantes":30},"riscos_identificados":[{"tipo":"cadeia_pre_requisito","detalhe":"MAT102 é pré-requisito para MAT201 e MAT202"}],"elegibilidade_proxima_janela":{"disciplinas_elegiveis":["MAT102","MAT103"],"disciplinas_bloqueadas":[{"disciplina_id":"MAT201","motivo":"PRE_REQUISITO"}]}}
  • Número de caracteres esperado: O JSON gerado terá um tamanho aproximado de 3.000 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 Chamada à API (RF 2).

1.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 2).

RF 2. Agente de Execução de Chamada à API

2.1 Tarefa do Agente

Realizar consulta em sistema acadêmico para obter oferta de disciplinas, turmas e horários da próxima(s) janela(s) de matrícula.

2.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON contendo informações sobre a necessidade de consulta em um sistema acadêmico.

# 2. Objetivo
Realizar consulta em sistema acadêmico para obter oferta de disciplinas, turmas e horários da próxima(s) janela(s) de matrícula.

# 3. Regras que você deve seguir para gerar sua resposta
- Utilize as credenciais de autorização fornecidas para acessar o sistema acadêmico.
- Realize a consulta utilizando o endpoint e parâmetros especificados no JSON de input.
- Certifique-se de que a resposta contenha todas as informações necessárias sobre as disciplinas, turmas e horários disponíveis.

# 4. Exemplo de Output que você deve produzir
{"ofertas":[{"disciplina_id":"MAT101","turma_id":"T01","nome":"Cálculo I","creditos":4,"carga_horaria":60,"horarios":[{"dia":"SEG","inicio":"08:00","fim":"10:00","sala":"101"}],"vagas_total":30,"vagas_disponiveis":5,"professor":"Dr. Silva","periodo":"2025.1","turno":"MANHA"}]}
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: Este agente deve ser apto a receber um JSON que contém informações sobre o sistema acadêmico e os parâmetros de consulta.
  • Formatos Suportados: Esse agente deve ser capaz de receber inputs no 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: O output deve ser um JSON estruturado contendo as ofertas de disciplinas, turmas e horários obtidos na consulta ao sistema acadêmico.
  • Exemplo de Estrutura de Output:
     {"ofertas":[{"disciplina_id":"MAT101","turma_id":"T01","nome":"Cálculo I","creditos":4,"carga_horaria":60,"horarios":[{"dia":"SEG","inicio":"08:00","fim":"10:00","sala":"101"}],"vagas_total":30,"vagas_disponiveis":5,"professor":"Dr. Silva","periodo":"2025.1","turno":"MANHA"}]}
  • Número de caracteres esperado: O JSON gerado terá um tamanho aproximado de 1.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: Se conecta a sistemas externos para consulta de dados acadêmicos.

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 Planejamento de Estudos (RF 3).

2.3.6 Regras de Orquestração e Transição

Ao concluir sua execução, esse agente aciona o Agente de Planejamento de Estudos (RF 3).

RF 3. Agente de Planejamento de Estudos

3.1 Tarefa do Agente

Gerar um plano de estudos personalizado por semestre, equilibrando carga horária, respeitando pré/co-requisitos e evitando sobreposição de horários.

3.2 Prompt ou Instruções do Agente
 # 1. Contexto e explicações sobre inputs iniciais
Você está recebendo um JSON contendo a análise das pendências acadêmicas do aluno e as ofertas de disciplinas disponíveis.

# 2. Objetivo
Gerar um plano de estudos personalizado por semestre, equilibrando carga horária, respeitando pré/co-requisitos e evitando sobreposição de horários.

# 3. Regras que você deve seguir para gerar sua resposta
- Utilizar somente disciplinas com status PENDENTE ou EM_ANDAMENTO (para co-requisitos simultâneos) provenientes de analise_pendencias; nunca incluir concluídas.
- Elegibilidade: incluir disciplina somente se todos os pré-requisitos estiverem CONCLUIDA; co-requisitos podem ser incluídos no mesmo semestre e devem aparecer juntos.
- Oferta/horários: quando ofertas disponíveis, selecionar turmas que não conflitam por dia e faixa [inicio,fim); considerar intervalo mínimo de restricoes_institucionais.intervalo_horario_minutos entre aulas no mesmo dia.
- Carga: respeitar limites de preferencias.max/min_creditos_semestre e politicas.max/min quando fornecidas; se limites ausentes, usar heurística: 20–26 horas/sem ou 16–22 créditos como alvo padrão; classificar sobrecarga_estimativa conforme: BAIXA (<= alvo), MEDIA (até +20%), ALTA (> +20%).
- Prioridade de alocação: (1) obrigatórias que desbloqueiam maiores cadeias de pré-requisitos; (2) disciplinas reprovadas, se preferencias.priorizar_reprovadas true; (3) obrigatórias restantes por proximidade da meta_conclusao; (4) eletivas/optativas para completar créditos faltantes.
- Empate de escolha de turma: preferir turnos_preferidos; depois maior vagas_disponiveis; depois menor conflito com dias_indisponiveis; persistindo empate, escolher menor dispersão de horários no dia.
- Se uma disciplina elegível não for ofertada, registrar em itens_rejeitados com motivo NAO_OFERTADA e sugerir considerar VERAO se preferencias.incluir_verao true.
- Caso não seja possível atingir min_creditos_semestre sem violar regras, aceitar carga abaixo do mínimo e registrar alerta específico.
- Produzir justificativa por disciplina explicando: razão da escolha, satisfação de pré/co-requisitos, impacto na cadeia, e adequação à preferência/limites.
- Ajuste de meta: se semestres_restantes ou meta_conclusao inviabilizar conclusão pelas ofertas e cadeias, recalcular tempo_estimado_conclusao e incluir recomendação objetiva nas observacoes_gerais.
- Consistência: a soma de creditos_total por semestre deve respeitar limites; não produzir conflitos de horário; todos os campos do expected_output devem ser preenchidos, com listas vazias quando aplicável.

# 4. Exemplo de Output que você deve produzir
{"plano_estudos":{"semestres":[{"periodo":"2025.1","disciplinas":[{"disciplina_id":"MAT102","turma_id":"T02","nome":"Cálculo II","creditos":4,"horarios":[{"dia":"TER","inicio":"10:00","fim":"12:00"}],"justificativa":"Desbloqueia cadeias de pré-requisitos","pre_requisitos_atendidos":true}],"creditos_total":4,"carga_horaria_total":60,"alertas":["Carga horária abaixo do mínimo recomendado"]}]},"itens_rejeitados":[{"disciplina_id":"MAT201","motivo":"NAO_OFERTADA"}],"indicadores":{"semanas_com_conflito":0,"sobrecarga_estimativa":"BAIXA","tempo_estimado_conclusao":"2026.2"},"observacoes_gerais":["Considere cursar disciplinas no verão para acelerar a conclusão"]}
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: Este agente deve ser apto a receber um JSON que contém a análise das pendências acadêmicas e as ofertas de disciplinas disponíveis.
  • Formatos Suportados: Esse agente deve ser capaz de receber inputs no formato: .json.
  • Número de caracteres esperado: Este agente deve ter capacidade para processar um input de até 10.000 caracteres.

3.3.2 Especificação do Output

  • Formato de output: O output deve ser um JSON estruturado detalhando o plano de estudos personalizado por semestre.
  • Exemplo de Estrutura de Output:
     {"plano_estudos":{"semestres":[{"periodo":"2025.1","disciplinas":[{"disciplina_id":"MAT102","turma_id":"T02","nome":"Cálculo II","creditos":4,"horarios":[{"dia":"TER","inicio":"10:00","fim":"12:00"}],"justificativa":"Desbloqueia cadeias de pré-requisitos","pre_requisitos_atendidos":true}],"creditos_total":4,"carga_horaria_total":60,"alertas":["Carga horária abaixo do mínimo recomendado"]}]},"itens_rejeitados":[{"disciplina_id":"MAT201","motivo":"NAO_OFERTADA"}],"indicadores":{"semanas_com_conflito":0,"sobrecarga_estimativa":"BAIXA","tempo_estimado_conclusao":"2026.2"},"observacoes_gerais":["Considere cursar disciplinas no verão para acelerar a conclusão"]}
  • Número de caracteres esperado: O JSON gerado terá um tamanho aproximado de 2.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 é o produto final e não é passada para outros agentes internos.

3.3.6 Regras de Orquestração e Transição

A execução deste agente finaliza o fluxo. O plano de estudos gerado é o resultado que deve ser disponibilizado ao aluno.

© 2025 prototipe.ai. Todos os direitos reservados.