Todos os projetos
Mobile

BirdDex

Tira-se uma fotografia a uma ave e obtém-se de imediato a identificação da espécie por IA, a ficha de campo e o seu canto real — para depois a guardar numa coleção ao estilo Pokédex.
Visão geral

O BirdDex transforma a observação de aves num jogo de coleção. Tira-se uma fotografia a uma ave e obtém-se de imediato a identificação da espécie, com detalhes de guia de campo e o seu canto real, para depois a guardar no próprio BirdDex. Combina um LLM com visão com dados públicos de biodiversidade (Wikipedia e Xeno-canto) e armazenamento no dispositivo, em Android e iOS.

Início: identificar pela câmara ou pela galeria, ou abrir o BirdDex
Início: identificar pela câmara ou pela galeria, ou abrir o BirdDex
Ficha da espécie: confiança da IA, tamanho, peso, estado de conservação e canto
Ficha da espécie: confiança da IA, tamanho, peso, estado de conservação e canto
Coleção BirdDex com pesquisa, filtros e ordenação
Coleção BirdDex com pesquisa, filtros e ordenação

Como funciona

  1. 1Captar

    Tirar uma fotografia com a câmara ou escolher uma da galeria.

  2. 2Identificar

    A imagem é enviada ao GPT-4o mini com um prompt que obriga a uma resposta em JSON estrito, para que o resultado possa ser lido de forma fiável.

  3. 3Validar

    O JSON é lido e verificado; respostas malformadas ou incompletas tornam-se erros tipados ou valores por omissão seguros, em vez de falhas.

  4. 4Enriquecer

    Uma fotografia de referência vem da API da Wikipedia e um canto real do Xeno-canto, ambos sem bloquear a identificação.

  5. 5Colecionar

    O avistamento é guardado no Hive, no dispositivo, e adicionado à grelha da coleção BirdDex.

Identificação e ficha da espécie
  • Nome comum e científico, grau de confiança, descrição, habitat, dieta, estatuto IUCN, tamanho e peso
  • Barra de confiança animada com código de cores e um selo do estado de conservação
  • Leitor do canto da ave, com reproduzir/pausar e barra de progresso navegável
  • Favoritos e notas pessoais por espécie, guardados offline
Coleção BirdDex
  • Catálogo inicial de espécies (incluindo nomes em português); as espécies ainda não encontradas aparecem como “???”
  • Barra de progresso das espécies colecionadas
  • Pesquisa por nome comum ou científico
  • Filtros por colecionadas, por colecionar, favoritas e tamanho; ordenação por nome, data ou peso

Decisões de design

Resposta estruturada do LLM

O prompt fixa o modelo a um esquema JSON e o cliente defende-se de respostas inválidas, para que a interface nunca falhe por causa do modelo.

Degradação graciosa

As imagens da Wikipedia e o áudio do Xeno-canto são extras opcionais; se falharem, a interface mostra um marcador em vez de bloquear a identificação.

Alternativa inteligente para o áudio

Se não houver gravação para a espécie exata, a app tenta pelo género antes de desistir.

Dados pessoais offline-first

Coleção, favoritos e notas ficam em caixas Hive separadas, para funcionarem sem ligação e de forma independente.

Estrutura em camadas

Ecrãs, serviços responsáveis por todas as chamadas de rede e uma camada de persistência, para que cada parte possa ser alterada ou testada isoladamente.

Segredos fora do controlo de versões

As chaves de API são lidas de um ficheiro .env ignorado pelo git.

Stack
FlutterDartOpenAI GPT-4o mini (vision)HiveWikipedia APIXeno-canto APIjust_audio
Próximos passos
  • Passar a chamada à OpenAI para um pequeno proxy no backend, para que nenhuma chave seja distribuída com a app
  • Identificação no dispositivo com um modelo TensorFlow Lite, para uso offline e menor custo
  • Gestão de estado com Riverpod ou Bloc e maior cobertura de testes
  • Registo da localização e um mapa de avistamentos
  • Mudança de idioma na app, usando os nomes em português que já estão no catálogo

© 2026 Daniel Paulino • Feito com Nuxt • Atualizado em outubro de 2026