1. Propósito e Escopo
Este documento define todos os prompts, configurações de memória, transição entre estados, ferramentas como chamadas a sistemas externos e demais requisitos funcionais para o Agente de IA para Detecção de Oportunidades de Investimento. Esta documentação é um modelo de PRD ou Documento de Requisitos de Produto específicos para construção de Agentes de IA.
O agente tem como objetivo monitorar o mercado financeiro em tempo real para identificar e notificar clientes sobre novas oportunidades de investimento, personalizando as notificações de acordo com o perfil de cada cliente.
2. Contexto e Problema
Os investidores enfrentam dificuldades em identificar e reagir rapidamente a novas oportunidades de investimento no mercado financeiro. Muitas vezes, a falta de um sistema eficiente para monitorar o mercado em tempo real impede que os investidores aproveitem essas oportunidades. Além disso, é necessário personalizar as notificações de oportunidades de investimento com base nos interesses e perfil dos clientes.
3. Impactos Esperados
A implementação deste agente de IA visa alcançar os seguintes resultados:
- Agilidade na identificação de oportunidades: Permitir que os investidores recebam notificações em tempo real sobre novas oportunidades de investimento.
- Personalização das notificações: Enviar informações relevantes e personalizadas de acordo com o perfil de cada cliente.
- Eficiência no monitoramento de mercado: Monitorar continuamente o mercado financeiro e identificar oportunidades relevantes de forma automatizada.
4. Visão Geral da Solução
O agente de IA para detecção de oportunidades de investimento monitora o mercado financeiro em tempo real e personaliza notificações para clientes com base em seus perfis de investimento. 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 identificação de oportunidades de investimento.
A solução é composta por uma sequência de agentes de IA que realizam desde a preparação dos parâmetros de consulta até a personalização das notificações para os clientes.
| Agentes | Função Principal |
|---|---|
Agente de Preparação de Parâmetros da Consulta de Mercado | Construir o payload de consulta à API de mercado, definindo universo de ativos, janelas temporais e campos necessários para detecção de oportunidades. |
Agente de Execução de Chamada à API | Realizar chamada à API do sistema de mercado financeiro para obter cotações, volumes e dados históricos necessários ao monitoramento. |
Agente de Detecção e Priorização de Oportunidades | Analisar os dados de mercado brutos e identificar eventos configurados como oportunidades, calculando score de relevância. |
Agente de Enriquecimento e Contextualização da Oportunidade | Gerar um card informativo por oportunidade com métricas-chave, contexto sucinto e campos padronizados para notificação. |
Agente de Personalização e Geração de Notificações por Cliente | Filtrar e priorizar os cards de oportunidade conforme o perfil de investimento do cliente e produzir a mensagem de notificação. |
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 cliente receberá. Explore os links abaixo para entender melhor a solução em ação.
6. Requisitos Funcionais
RF 1. Agente de Preparação de Parâmetros da Consulta de Mercado
1.1 Tarefa do Agente
Construir o payload de consulta à API de mercado, definindo universo de ativos, janelas temporais e campos necessários para detecção de oportunidades.
1.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais Você está recebendo as configurações de monitoramento do mercado financeiro, incluindo classes de ativos, mercados e eventos alvo. # 2. Objetivo Construir o payload de consulta à API de mercado, definindo universo de ativos, janelas temporais e campos necessários para detecção de oportunidades. # 3. Regras que você deve seguir para gerar sua resposta - Se classes_ativos não forem informadas, definir padrão: acoes e etfs dos mercados informados; se mercados não informados, usar B3 e NASDAQ. - Gerar tickers a partir de universos padrão do mercado alvo quando não vier lista explícita; remover duplicidades e tickers em exclusoes_e_restricoes. - Incluir sempre campos: preco_ult, preco_abertura, max_20d, min_20d, volume, media_volume_20, timestamp, book_liquidez (se disponível). - Definir timezone como 'UTC' e incluir no payload. - Mapear eventos_alvo em requisitos de campos e janelas: variacao intraday requer 1m/5m e diário; rompimentos requer diário+histórico 20 dias; volume_anormal requer volume e média_volume_20. - Aplicar filtros: descartar ativos com liquidez média diária inferior a liquidez_min (se não informado, usar 100.000 unidades ou equivalente monetário), e com preço fora do intervalo preco_min/preco_max. - Definir limites_paginacao para evitar respostas truncadas (ex: limit 1000 por página) e solicitar paginação contínua via cursor/offset, se aplicável.
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 das configurações de monitoramento 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 na interface da Prototipe AI, para acelerar o processo de validação.
- Tipo do input: O input inicial para o fluxo é um conjunto de configurações de monitoramento do mercado financeiro.
-
Formatos Suportados: Esse agente deve ser capaz de receber inputs nos formatos:
.json. - Número de caracteres esperado: Este agente deve ter capacidade para processar um input de texto com até 10.000 caracteres.
1.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON contendo o payload de consulta à API de mercado.
-
Exemplo de Estrutura de Output:
{ "payload_consulta_api": { "tickers": [], "campos_requeridos": [], "periodos": [], "timezone": "UTC", "limites_paginacao": 1000, "janela_observacao_por_evento": {} } } - 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 próximo agente no fluxo.
1.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o próximo agente no fluxo.
RF 2. Agente de Execução de Chamada à API
2.1 Tarefa do Agente
Realizar chamada à API do sistema de mercado financeiro para obter cotações, volumes e dados históricos necessários ao monitoramento.
2.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais Você está recebendo o payload de consulta à API do mercado financeiro, preparado pelo agente anterior. # 2. Objetivo Realizar chamada à API do sistema de mercado financeiro para obter cotações, volumes e dados históricos necessários ao monitoramento. # 3. Regras que você deve seguir para gerar sua resposta - Este agente não precisa de instruções para LLM; sua função é executar a chamada à API com o payload recebido e retornar os dados obtidos sem transformação.
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.
- Tipo do input: Este agente deve ser apto a receber como input o JSON contendo o payload de consulta à API de mercado.
-
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.
2.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON contendo os dados de mercado brutos retornados pela API.
-
Exemplo de Estrutura de Output:
{ "dados_mercado_brutos": { "series_por_ticker": [{ "ticker": "", "periodo": "", "candles": [{ "timestamp": "", "open": "", "high": "", "low": "", "close": "", "volume": "" }] }], "metadados_paginacao": {}, "timezone": "UTC" } } - Número de caracteres esperado: O JSON gerado deve ter um tamanho estimado em torno de 5.000 caracteres.
2.3.3 Parâmetros de Geração
- Modelo: Não se aplica (uso de ferramenta)
- Temperatura: Não se aplica
2.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 dados obtidos.
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 próximo agente no fluxo.
2.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o próximo agente no fluxo.
RF 3. Agente de Detecção e Priorização de Oportunidades
3.1 Tarefa do Agente
Analisar os dados de mercado brutos e identificar eventos configurados como oportunidades, calculando score de relevância.
3.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais
Você está recebendo os dados de mercado brutos obtidos pela chamada à API do agente anterior.
# 2. Objetivo
Analisar os dados de mercado brutos e identificar eventos configurados como oportunidades, calculando score de relevância.
# 3. Regras que você deve seguir para gerar sua resposta
- Calcular variacao_percentual intraday com base em close atual vs close de t-1h (se disponível) e vs abertura do dia; marcar evento 'variacao_intraday' quando exceder limiar (padrão 2%).
- Detectar 'gap_abertura' quando |abertura - fechamento_anterior|/fechamento_anterior >= limiar (padrão 2.5%).
- Detectar 'rompimento_max_20d' quando high atual > max_20d anterior por pelo menos 0.5% e volume_ratio >= 1.2.
- Calcular volume_ratio = volume_atual_acumulado_do_dia / media_volume_20; marcar 'volume_anormal' quando volume_ratio >= fator (padrão 1.5x).
- Só registrar oportunidade se a liquidez_diaria_estimada estiver acima de 100.000 unidades (ou equivalente monetário se disponível) e preço_evento > 0.
- score_relevancia = soma ponderada dos componentes normalizados: movimento (|variacao_percentual|), impulso de volume (volume_ratio), consistência_temporal (n de candles consecutivos alinhados ao movimento; normalizar 0-1), liquidez (normalizar por percentil no universo). Usar pesos_score informados; se ausentes, usar {movimento:0.4, volume:0.3, consistencia:0.2, liquidez:0.1}.
- Preencher racional_score textual curto explicando quais limiares foram superados e por quê o score foi atribuído.
- Evitar duplicidade: para o mesmo ticker e evento_tipo dentro de janela_confirmacao_minutos, manter apenas o registro de maior score.
- Classificar classe_ativo e mercado a partir de metadados/ticker; se ausente, inferir pelo sufixo do ticker (ex: '.SA' -> B3). 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.
- Tipo do input: Este agente deve ser apto a receber como input o JSON contendo os dados de mercado brutos.
-
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é 20.000 caracteres.
3.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON contendo as oportunidades detectadas com seus respectivos scores de relevância.
-
Exemplo de Estrutura de Output:
{ "oportunidades_detectadas": [{ "ticker": "", "classe_ativo": "", "mercado": "", "evento_tipo": "", "timestamp_evento": "", "variacao_percentual": "", "variacao_absoluta": "", "volume_ratio": "", "gap_percentual": "", "rompimento_referencia": "", "preco_referencia": "", "preco_evento": "", "liquidez_diaria_estimada": "", "score_relevancia": "", "racional_score": "", "dados_de_base_minimos": {} }] } - Número de caracteres esperado: O JSON gerado deve ter um tamanho estimado em torno de 10.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 próximo agente no fluxo.
3.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o próximo agente no fluxo.
RF 4. Agente de Enriquecimento e Contextualização da Oportunidade
4.1 Tarefa do Agente
Gerar um card informativo por oportunidade com métricas-chave, contexto sucinto e campos padronizados para notificação.
4.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais Você está recebendo as oportunidades detectadas pelo agente anterior. # 2. Objetivo Gerar um card informativo por oportunidade com métricas-chave, contexto sucinto e campos padronizados para notificação. # 3. Regras que você deve seguir para gerar sua resposta - Criar id_card único combinando ticker+evento+timestamp. - Gerar resumo_curto com até 240 caracteres, citando ticker, evento e principal métrica (ex: 'PETR4 rompeu máxima de 20d com volume 1.8x'). - Preencher riscos_relevantes de forma genérica (ex: 'volatilidade elevada', 'evento pode reverter'); não sugerir compra/venda, apenas descrever fatos. - Respeitar formato_decimal e moeda_display ao apresentar preços; se indisponíveis, usar duas casas decimais e 'BRL' para B3, 'USD' demais. - Sinalizar sempre nao_e_recomendacao=true e evitar linguagem imperativa de execução (não usar 'compre/venda'). - Se algum campo base estiver ausente (ex: max_20d), omitir a métrica relacionada e declarar no card apenas as disponíveis.
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.
- Tipo do input: Este agente deve ser apto a receber como input o JSON contendo as oportunidades detectadas.
-
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.
4.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON contendo os cards de oportunidade gerados para notificação.
-
Exemplo de Estrutura de Output:
{ "cards_oportunidade": [{ "id_card": "", "ticker": "", "nome_ativo": "", "classe_ativo": "", "mercado": "", "evento_tipo": "", "horario_detectado": "", "precos": { "preco_evento": "", "preco_abertura_dia": "", "preco_fechamento_anterior": "" }, "metricas": { "variacao_percentual": "", "gap_percentual": "", "volume_ratio": "", "rompimento_referencia": "" }, "janela_observacao": "", "resumo_curto": "", "riscos_relevantes": "", "links_referencia": "", "nao_e_recomendacao": true }] } - Número de caracteres esperado: O JSON gerado deve ter um tamanho estimado em torno de 5.000 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 próximo agente no fluxo.
4.3.6 Regras de Orquestração e Transição
Ao concluir sua execução, esse agente aciona o próximo agente no fluxo.
RF 5. Agente de Personalização e Geração de Notificações por Cliente
5.1 Tarefa do Agente
Filtrar e priorizar os cards de oportunidade conforme o perfil de investimento do cliente e produzir a mensagem de notificação.
5.2 Prompt ou Instruções do Agente
# 1. Contexto e explicações sobre inputs iniciais Você está recebendo os cards de oportunidade gerados pelo agente anterior, assim como o perfil de investimento dos clientes. # 2. Objetivo Filtrar e priorizar os cards de oportunidade conforme o perfil de investimento do cliente e produzir a mensagem de notificação. # 3. Regras que você deve seguir para gerar sua resposta - Calcular adequacao_score combinando: compatibilidade de risco (alto peso), classe_ativo permitida, aderência setorial, moeda_preferida, e score_relevancia do card; se alguma restricao_setorial for violada, adequacao_score = 0 e descartar. - Mapeamento de risco: eventos com variacao_percentual alta (>5%) e volume_ratio elevado (>2x) elevam risco percebido; para tolerancia_risco 'baixa', exigir variacao_percentual <= 3% e volume_ratio <= 2x, caso contrário reduzir score em 50%. - Respeitar politicas_envio: descartar cards com score_relevancia < score_minimo (padrão 60) e limitar a max_notificacoes_por_janela (padrão 3) escolhendo os maiores adequacao_score. - Selecionar canal_sugerido: 'push/app' para curto prazo e alto score; 'email' para médio/longo prazo ou quando experiencia=iniciante; se canais_permitidos restringirem, escolher o primeiro permitido. - mensagen_titulo conciso com até 80 caracteres: '— ( )'. - mensagem_corpo deve incluir: contexto do evento em 1-2 frases, principais métricas (variacao_percentual, volume_ratio ou rompimento), nota de risco compatível ao perfil e o disclaimer de que não é recomendação. - Nunca incluir instruções de execução de ordem. Finalizar com CTA padrão: 'Deseja mais detalhes?'. - Preencher registrar_memoria com id_card e timestamp de envio para suportar histórico de interações.
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.
- Tipo do input: Este agente deve ser apto a receber como input o JSON contendo os cards de oportunidade e o perfil de investimento dos clientes.
-
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é 15.000 caracteres.
5.3.2 Especificação do Output
- Formato de output: O output deve ser um JSON contendo as notificações personalizadas para cada cliente.
-
Exemplo de Estrutura de Output:
{ "notificacoes_personalizadas": [{ "cliente": { "nome": "" }, "id_card": "", "adequacao_score": "", "motivo_compatibilidade": "", "canal_sugerido": "", "mensagem_titulo": "", "mensagem_corpo": "", "cta": "Deseja mais detalhes?", "campos_chave": { "ticker": "", "evento_tipo": "", "variacao_percentual": "", "volume_ratio": "" }, "registrar_memoria": { "oportunidade_id": "", "data_hora_envio": "" } }] } - Número de caracteres esperado: O JSON gerado deve ter um tamanho estimado em torno de 8.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: Não se conecta a sistemas externos.
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 gerada por este agente é 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. As notificações geradas são o resultado que deve ser disponibilizado ao usuário.