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
- 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.
- 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.
- 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.