Caso 05 · App mobile com IA conversacional

Um tutor de inglês com IA que lembra quem você é

Open Fluent é um app para praticar inglês conversando com um tutor de IA. Ele lembra o que você conta e os erros que você repete, mas só guarda o que você aprova. Está em beta fechado, por convite.

Flutter · NestJS · voz en el teléfono · varios modelos de IA
2
camadas de memória do tutor
852
testes automáticos no servidor

O problema do cliente

Para destravar no inglês é preciso falar todo dia, e os apps conhecidos ensinam vocabulário, mas não conversam. Os tutores de IA genéricos até conversam, só que esquecem tudo quando a sessão termina: não sabem o que aconteceu com você ontem nem que você sempre erra o mesmo tempo verbal.

O Open Fluent é para um grupo fechado de amigos que falam espanhol ou português: duas sessões de 10 minutos por dia com um tutor que lembra deles, mais sequências de dias e um ranking para manter a constância. A regra do projeto foi gastar o mínimo possível com IA.

Arquitetura

  1. Falar. O app reconhece a voz e lê as respostas em voz alta usando o motor do próprio celular. Assim a parte mais usada não custa nada.
  2. Responder. O servidor envia a conversa para um modelo de IA e recebe a resposta junto com as correções. Existem dois planos: o gratuito usa uma fila de quatro modelos gratuitos e, se um falhar, passa para o próximo; o pago usa modelos mais rápidos.
  3. Lembrar. No fim de cada sessão, uma única chamada à IA gera duas coisas. Uma lista de dados pessoais com data (“tem uma entrevista na sexta”), que ficam pendentes até o usuário confirmar ou descartar. E uma nota curta para o tutor com os erros que mais se repetem, que o usuário pode editar ou apagar. Só o que foi confirmado entra na próxima conversa.

Para escolher os modelos, definimos um critério de entrada: 20 turnos de teste com erros plantados, e um modelo só entra se devolver respostas bem formadas em 95% das vezes e levar menos de 8 segundos em 90% dos casos. Por enquanto, os modelos atuais foram escolhidos com medições manuais; o teste automático ainda não foi rodado.

A decisão difícil e por quê

De “traga sua própria chave” para planos próprios. No começo, cada usuário conectava a própria conta de IA, e assim o projeto não pagava nada. Na prática, esse passo afastava quase todo mundo antes da primeira conversa. Trocamos por um roteador próprio de modelos, com um plano gratuito e um pago. Descartamos manter as duas opções porque isso dobrava o trabalho e não resolvia o atrito.

Respostas flexíveis em vez de formato rígido. Pedir um formato rígido à IA garante respostas limpas, mas os modelos gratuitos não aceitam esse modo. Escolhemos um formato mais flexível e um conserto automático das respostas que chegam mal montadas.

Sem novas tentativas automáticas. Somar as novas tentativas da biblioteca às do roteador deixava o usuário mais de um minuto em silêncio. Numa conversa por voz, é melhor falhar rápido e passar para o próximo modelo.

O que quebrou no caminho

  • O tutor não lembrava de nada. Havia zero lembranças salvas em toda a base. Se faltasse a data em um único dado, a memória inteira da sessão era descartada. Agora só o dado inválido é descartado.
  • No iPhone, o app fechava ao pedir o microfone e, depois de resolvido isso, dizia que não havia reconhecimento de voz. O código procurava o idioma escrito “en_US” e o iPhone chama de “en-US”.
  • O tutor falava sem som no iPhone, porque o reconhecimento de voz deixava o áudio do celular em um modo que não reproduz som.
  • Apple e Google recusaram o app na primeira revisão: o Google porque o botão de login não respondia, e os dois porque faltava uma conta de teste para os revisores.

Resultado

  • O app funciona em Android e iOS e está em beta fechado, por convite. A publicação nas lojas está em revisão.
  • São 852 testes automáticos no servidor e 52 no app.
  • A memória em duas camadas funciona, e o usuário decide o que é lembrado sobre ele.