§1O problema
Numa loja, pesquisar preço ou comparar produtos exige tirar o celular, abrir app, digitar e tirar foto. Faltava algo que funcionasse de mãos livres.
§2O que eu construí
- PWAApp web instalável com a sessão ao vivo: pronto, ouvindo, pesquisando, respondendo, pausada.
- Detector de 2 batidinhasPelo sensor de movimento do celular, sem atalho nenhum.
- CapturaGravação com fim automático pelo silêncio, 2 a 4 fotos, resposta falada.
- Servidor de transcriçãoVoz para texto na placa de vídeo.
- Escolha da IANa tela inicial: um LLM pela linha de comando, ou modelo aberto num servidor de GPU alugado por hora, ligado sob demanda.
- Zoom da IACâmera ultra grande-angular e uma ferramenta que recorta a foto original.
- DiagnósticoSó com números, para ajustar o detector de batidas.
§3As partes difíceis
5 itens- 01
Reconhecer batidinhas pelo sensor, sem sinal limpo
Limiares ajustados com medições reais do celular e registro de cada decisão.
- 02
Permissões do iOS
O sensor precisa ser pedido antes da câmera.
- 03
Dar visão a um modelo local de linguagem
Carregar o módulo de imagem e fazer busca na web para ele sem expor as fotos.
- 04
Transcrição que divide a placa de vídeo com outro modelo
Carrega ao usar e sai da placa após 5 minutos parado; 0,25 s com o modelo carregado.
- 05
Privacidade desde a concepção
Foto em pasta temporária apagada no fim, áudio nunca vai para o disco, só o texto vai para o histórico.
§4Resultado
- de transcrição com o modelo carregado
- 0,25 s
- de resposta com pesquisa
- ~17-30 s
Rodando no meu servidor em casa. As respostas levam ~17 a 30 s com pesquisa na web. As batidinhas já funcionam num iPhone de verdade, mas os testes reais no iPhone ainda não terminaram.
§5Stack
- Next.js 16 + TypeScript
- PWA (sensor de movimento, câmera, microfone, voz do navegador)
- Python + faster-whisper na GPU
- LLM por linha de comando
- LLM aberto em GPU alugada (RunPod)
- Servidor MCP próprio
- pm2
- Tailscale (HTTPS)