01Visão geral do projeto
Kyndsy é um aplicativo móvel que responde a uma pergunta que a maioria das pessoas não consegue responder sobre si mesmas: como eu realmente falo? Ele escuta a voz de seu proprietário durante uma conversa comum e conta as palavras ásperas, as educadas, os preenchimentos e os momentos em que o tom fica agudo. Ele mostra a tendência ao longo de dias e semanas. E então para — não diz à pessoa que tipo de humano isso a torna.
A premissa é que os aplicativos de autoaperfeiçoamento geralmente desenham um gráfico da sua própria opinião. Você relata seu dia, eles visualizam o relatório. Kyndsy começa a partir de algo mais difícil de contestar: as palavras que foram realmente ditas, contadas enquanto a pessoa estava ocupada vivendo em vez de sentar para refletir.
Isso também é o que torna o produto difícil. Contar a fala significa um microfone, e um microfone significa que a pessoa tem que confiar no aplicativo mais do que em quase qualquer outra coisa no telefone. Portanto, todo o produto é construído em torno de uma promessa que teve que ser estrutural: o som nunca é mantido, as palavras nunca são escritas, as vozes de outras pessoas não são analisadas, e não há conta para anexar nada disso.
Nós projetamos e construímos tudo: o aplicativo para iOS e Android, seu conteúdo em trinta idiomas, o backend leve, o caminho de lançamento na loja e o site do produto. Abaixo está o problema, as decisões e as partes que deliberadamente nos recusamos a construir.
02Contexto e o problema
Um aplicativo que escuta é uma categoria onde a implementação óbvia também é a errada. Desempacotar a tarefa produziu um conjunto de restrições que moldaram tudo depois disso.
- A confiança é o produto.Um aplicativo que mede a fala tem exatamente um ativo, e não é o algoritmo. Se uma pessoa suspeitar que o áudio sai do telefone, nenhuma quantidade de precisão importa — ela desinstala.
- Outras pessoas não consentiram.Um microfone em uma sala capta quem estiver nela. Analisar as pessoas ao redor do proprietário seria um aplicativo completamente diferente, e muito pior.
- Um número sobre uma pessoa é perigoso.Qualquer pontuação única que afirme resumir um ser humano é uma afirmação que o produto não pode fazer honestamente — e uma que as pessoas lerão como um veredicto, independentemente do aviso.
- Contagens brutas mentem."Você jurou nove vezes hoje" recompensa o silêncio. Uma pessoa que não diz nada parece uma pessoa que melhorou.
- As palavras são ambíguas.A mesma palavra é uma piada, uma citação, uma reclamação auto-dirigida ou um insulto genuíno, dependendo do tom e do contexto. Contar a string sozinha produz números que ninguém reconhece como seu próprio dia.
- As pessoas não falam uma única língua.Elas mudam de idioma no meio da frase. Um contador que segue apenas uma delas relata um dia suspeitamente calmo toda vez que seu proprietário muda de código.
- As lojas têm regrassobre o uso de microfones, sobre alegações de saúde e psicologia, e sobre o que uma assinatura pode restringir — e elas são aplicadas na submissão, não no dia do lançamento.
Tudo isso tinha que funcionar em um telefone, em segundo plano, sem drenar a bateria ou a paciência da pessoa.
03Objetivos do projeto
- Meça a fala no dispositivo.A análise acontece no telefone; o áudio nunca é armazenado e nunca é enviado.
- Apenas a voz do proprietário.Outras vozes são descartadas em vez de analisadas, e não há modo de apontar o aplicativo para outra pessoa.
- Sem conta, sem nome.Nada para vazar, porque não há nada coletado para vazar.
- Taxas, não contagens brutas.Tudo por mil palavras faladas, então um dia tranquilo é um dia tranquilo e não uma conquista.
- Trinta idiomas, incluindo fala mista — os dicionários têm que existir em todos eles ao mesmo tempo, ou o número está errado para as pessoas que mudam.
- Distinguir nuances. Ironia, sarcasmo, uma piada e uma observação genuinamente afiada diferenciadas e rotuladas como um palpite, nunca como um veredicto.
- Útil sem o microfone. O diário, a bússola de valores, os testes e as perguntas da noite funcionam por conta própria.
- Motivação que não pode ser manipulada. Corridas, níveis e programas avaliados por medição em vez de abrir o aplicativo.
- Sem pontuação geral de uma pessoa. Não na versão um e nem depois.
04O que fizemos
O aplicativo é construído como quatro lugares, cada um respondendo a uma pergunta diferente, além das partes que os sustentam:
- Hoje — o que acabou de acontecer: a pontuação do discurso, os objetivos do dia e uma única sugestão, nunca uma lista de seis.
- Progresso — se está indo a algum lugar: corridas, níveis, programas e o relatório semanal.
- A Bússola — o que a pessoa decidiu almejar: três a cinco valores que escolheram por conta própria, e o movimento em direção a esses.
- Você — tudo que pertence apenas a eles: os testes de autoavaliação, acesso familiar, seus dados e suporte.
Embaixo estão os componentes que tornam esses quatro honestos: análise de fala no dispositivo, dicionários e regras para trinta idiomas, o classificador de tonalidade, o modelo de contagem que funciona em taxas em vez de totais, um backend leve que sabe quase nada, e um registro de configurações que permite que o produto mude sem uma liberação na loja.
05Privacidade como código, não cópia
As alegações de privacidade no site não são cópias de marketing que uma otimização posterior possa invalidar silenciosamente. Elas são propriedades da construção, e o projeto trata uma mudança que torna qualquer uma delas falsa como um defeito em vez de um compromisso.
- O som não é gravado em lugar nenhum — não em um arquivo, não em um buffer temporário no disco, não em um log. Nem em uma construção de depuração, porque uma construção de depuração é como essas coisas escapam.
- Apenas a voz do proprietário é analisada.A fala de outras pessoas é descartada antes de se tornar palavras.
- Nada é transcrito.O aplicativo produz contadores, não texto; não há frase armazenada para vazar, intimação ou sincronizar acidentalmente.
- Uma sessão começa apenas quando uma pessoa a inicia.Sem início automático após uma reinicialização, sem retomar silenciosamente em segundo plano.
- O perfil de voz nunca sai do telefone e é excluído dos backups do dispositivo — é dado biométrico, e um backup é o único lugar onde as pessoas esquecem que ele pode viajar.
- O backend é informado de quatro coisas e nada mais: um pedido de configurações, um download de modelo único, uma mensagem de suporte se a pessoa escreveu uma, e um recibo de assinatura. Não há conta.
- Uma pessoa é um par de números aleatórios que seu próprio telefone criou. Nós não os emitimos e não os contamos — o que significa que não sabemos quantas instalações existem, e isso foi um preço deliberado.
- Fazer login é opcional e não desbloqueia nada. Ele existe para mover uma assinatura e histórico para um novo telefone. Torná-lo obrigatório teria criado um vínculo com uma identidade real onde nenhuma existe hoje.
Esse último ponto é o que vale a pena refletir. A exigência do proprietário era não saber nada além de um id anônimo — e a maneira tentadora de satisfazê-la é um login obrigatório que prometemos não ler. Fizemos o oposto: nenhuma conta, e um login opcional que lê exatamente um campo do token e o armazena de forma hash.
06O que o aplicativo realmente conta
Quatro coisas: expressões ásperas, expressões educadas, palavras de preenchimento e um tom elevado ou afiado. Todos eles são relatados por mil palavras faladas, nunca como um total bruto — porque uma contagem bruta faz o silêncio parecer progresso, e um aplicativo que recompensa seu proprietário por não falar não entendeu seu próprio trabalho.
A manchete do dia é um índice de fala respeitosa, e as regras em torno dele são tão consideradas quanto o número em si:
- É totalmente oculto até que cinquenta palavras tenham sido ouvidas.Um zero em uma manhã tranquila é lido como uma acusação, não como dados ausentes.
- Dias com menos de cinquenta palavras são mostrados, mas não contados — visíveis como em branco em vez de fingir ser um bom dia.
- A cortesia pode elevar isso em dez pontos no máximo.Qualquer coisa além disso, e a pontuação seria mais barata de manipular com gentilezas do que ganhar por não ser afiado.
- Qualquer evento único pode ser marcado como errado, e fazer isso muda o número em vez de apenas riscar uma linha de uma lista.
As visualizações, além disso, são ordinárias em forma e cuidadosas em detalhes: uma tendência de sete dias, uma imagem hora a hora do dia, uma grade de trinta dias com um quadrado por dia. A visualização horária se recusa a declarar uma "pior hora" até ter dez eventos para se basear; a grade de trinta dias deixa dias tranquilos em bege em vez de colorir como calmos. Gráficos que são confiantes com dados escassos são como um produto de medição perde a confiança do leitor — geralmente para sempre.
07Tons de fala: ironia, uma piada, uma alfinetada
Uma piada e um insulto não são a mesma palavra duas vezes. Kyndsy separa a ironia de um comentário afiado genuíno, uma piada de uma alfinetada, uma citação de algo que a pessoa quis dizer — e mostra o que pensa que ouviu, em palavras, ao lado do evento.
Duas regras mantêm esse recurso honesto. Primeiro, é apresentado como um palpite, não um veredicto: o aplicativo diz "possivelmente ironia" ou "uma piada — não contabilizada" e mostra com o que se baseou. Segundo, e mais importante, a classificação de sombra nunca move o índice. Informa a pessoa; não ajusta silenciosamente sua pontuação. Um número ponderado por confiança seria impossível para qualquer um verificar e se tornaria silenciosamente o recurso mais contestado do produto.
O mesmo cuidado se aplica ao contexto: a mesma palavra conta de forma diferente quando a pessoa está citando alguém, falando sobre si mesma ou no meio de uma discussão. E como nenhum dicionário pode saber o que as palavras de uma pessoa específica significam para ela, elas podem manter suas próprias listas.
08Trinta idiomas — e a mistura
O aplicativo funciona em trinta idiomas — inglês, espanhol, português, alemão, francês, italiano, holandês, sueco, dinamarquês, norueguês, finlandês, polonês, tcheco, croata, romeno, húngaro, grego, turco, russo, ucraniano, bielorrusso, hebraico, árabe, hindi, indonésio, vietnamita, tailandês, chinês, japonês e coreano — e em vários deles ao mesmo tempo, porque é assim que muitas pessoas realmente falam.
Trinta idiomas não são trinta traduções da interface. São trinta conjuntos de dicionários — expressões aproximadas, fórmulas educadas, preenchimentos — e eles têm que aterrissar ao mesmo tempo. Um idioma cujo dicionário está pela metade não falha de forma barulhenta; ele relata um dia calmo. A pessoa vê um bom número e acredita nele, o que é pior do que uma mensagem de erro.
Uma lição deste projeto se generaliza bem além dele: um recurso detectado pela forma do texto quebra na primeira língua escrita de forma diferente. Tratar "uma frase" como "uma string contendo um espaço" funciona até o japonês, chinês e tailandês, que são escritos sem eles — e lá o aplicativo não encontra nada, silenciosamente, enquanto parece que está funcionando. O comportamento da linguagem deve vir dos próprios dados da linguagem, e deve ser coberto por um teste que funcione em todos os trinta.
09A bússola e o diário
A fala é apenas metade do produto. A outra metade é o que a pessoa decidiu almejar: ela escolhe de três a cinco valores entre sete — respeito, honestidade, autocontrole, responsabilidade, cuidado, justiça, confiabilidade — e o aplicativo mostra movimento em direção a esses, em vez de se direcionar para a ideia de outra pessoa sobre o que é uma boa pessoa.
O movimento é extraído de duas fontes: as medições de fala e o diário da pessoa sobre as coisas que fez — manteve uma promessa, pediu desculpas, respondeu a alguém, reparou o dano. Três perguntas no final do dia, quando elas querem.
E há nenhuma pontuação moral geral, agora ou depois. Essa é a única coisa que o produto se recusa a calcular. É também a razão pela qual a bússola funciona: uma pessoa escolherá valores honestos apenas para um aplicativo que não vai avaliá-la pelo resultado.
Tudo nesta metade funciona sem o microfone. O diário, a bússola, os testes e as perguntas da noite funcionam por conta própria, então uma pessoa pode configurar a parte de voz depois, ou nunca, e ainda assim obter algo do aplicativo. Essa foi uma decisão de produto com consequências reais para a retenção, e faríamos isso novamente — um aviso de permissão na primeira tela é onde um aplicativo sensível à privacidade perde as pessoas para quem foi construído.
10Programas, execuções e o relatório semanal
A motivação neste aplicativo teve que ser imune aos dois truques habituais: abrir o aplicativo muitas vezes e não dizer nada. Então:
- Programasexecute de 7 a 30 dias com um objetivo e um número — sete dias sem palavras ásperas, respostas mais suaves por duas semanas, menos preenchimentos ao longo de um mês. Se funcionou é decidido pelas medições, não por marcar uma caixa.
- Uma execução conta os dias que a pessoa realmente manteve o nível.Dias silenciosos nem quebram nem estendem isso — colocar o telefone de lado não é uma maneira de vencer.
- Níveis são conquistados por dias, não por aberturas de aplicativos: Assistindo, Controle, Fala calma.
- Escudos cobrem um deslize, até certo ponto, e um dia quebrado pode ser recuperado — mas uma execução de trinta dias com quatro dias comprados não é uma execução de trinta dias, então esses são contados e mostrados separadamente.
- O relatório semanal diz claramente quando não há o suficiente para comparar.Um resumo no qual algo sempre melhorou para de ser lido na terceira semana.
Uma assimetria deliberada vale a pena ser mencionada: o nível gratuito limita quanto histórico é exibido, não quanto é contado. Calcular uma execução apenas sobre a janela visível teria exibido uma execução de trinta dias como sete — não uma limitação do plano gratuito, mas uma declaração falsa sobre a pessoa.
11Cem testes de autoavaliação
Ao lado das medições, há cem testes estruturados de autoavaliação: vinte e cinco declarações cada, cerca de quatro minutos, pontuados em cinco facetas separadamente, de modo que a resposta nunca seja um número plano. Eles cobrem fala, sentimentos, pessoas próximas a você, trabalho, você mesmo, hábitos e vida online.
Eles são explicitamente não diagnósticos e não medições de personalidade — eles são autorreflexão estruturada, e o aplicativo diz isso onde uma pessoa irá ler, em vez de em uma tela de configurações. As respostas ficam no telefone como tudo o mais.
O ponto de engenharia aqui é que cem testes não podem ser mantidos como cem telas escritas à mão. Eles são um recurso, não código: gerados a partir de fontes, validados no momento da construção, e recusados se um teste não tiver seu conjunto completo de declarações e facetas. Essa verificação é o que torna possível ter cem deles, e é por isso que suas regras de desbloqueio podem ser distribuídas de forma consistente em vez de espalhadas manualmente.
Metade deles é desbloqueada pelo uso, metade pela compra. Os produtos da loja por trás da metade paga são deliberadamente poucos em vez de um por teste — ninguém cria cem listagens na loja à mão, e ninguém traduz cem delas para trinta idiomas também. O produto vendido é um desbloqueio; a pessoa escolhe em qual teste gastar dentro do aplicativo, após a compra ser confirmada.
12Assinatura, família e as lojas
O nível pago é uma assinatura, e um plano familiar a compartilha — seis lugares por um ano, incluindo o do comprador. O que importa é o que a família compartilha e o que não compartilha: uma família compartilha o direito, não os dados. Ninguém vê os números, eventos ou diários de outra pessoa, e a pessoa que pagou vê lugares e datas disponíveis, não quem está neles.
Isso não é uma linha na letra miúda; é como é construído. As medições de outras pessoas não estão no servidor, então não há nada para expor acidentalmente em uma tela familiar. Inserir um código significa concordar em compartilhar uma assinatura, não concordar em ser identificado.
Duas regras de implementação desta parte sobreviveram ao recurso. Primeiro, a assinatura e o direito familiar são uma bandeira no aplicativo: uma segunda pergunta do tipo "ou talvez eles estejam em uma família" seria esquecida exatamente nos lugares onde importa. Segundo, o silêncio do servidor não revoga o direito — a rede cai muito mais frequentemente do que uma assinatura termina, e um aplicativo que bloqueia um cliente pagante em um trem fez uma escolha óbvia de forma errada.
A política da loja moldou muito da superfície aqui: o que um aplicativo de microfone pode afirmar, como um nível pago pode ser apresentado, e o fato de que uma versão quebrada não pode ser revertida com um hotfix. É por isso que a política de versão — versão mínima suportada, atualização forçada, modo de manutenção e a mensagem exibida, em todos os idiomas do projeto de uma vez — é uma configuração do lado do servidor em vez de algo compilado.
13Arquitetura: aplicativo, backend, registro
A arquitetura segue a promessa de privacidade: o máximo possível no telefone, o mínimo possível no servidor.
- O aplicativo faz a análise, mantém o histórico e possui o perfil de voz. É o produto completo; o servidor tem um papel de suporte.
- Um backend leve responde a quatro tipos de solicitações — configurações, um download de modelo único, mensagens de suporte e recibos de assinatura. Não possui uma tabela de usuários, porque não tem usuários para colocar em uma.
- Um registro de configuração mantém o que de outra forma estaria codificado no aplicativo: identificador do pacote, endereço da API, parâmetros de login, lista de idiomas, flags de recursos e a política de versão. Os valores são gerados no código-fonte em vez de digitados lá, e o arquivo gerado é marcado como não editável pelo simples motivo de que uma edição manual é perdida na próxima geração.
- Uma verificação pré-voo controla cada build: recusa se o identificador do pacote se desviou do registro, se a versão não é superior à última enviada, se o servidor do aplicativo não está respondendo, se um dicionário está incompleto em qualquer um dos idiomas do projeto, se a análise estática não está limpa, se os testes falham, ou se qualquer coisa que se assemelhe a uma chave for encontrada no código-fonte. Retorna um código de saída diferente de zero, o que o torna utilizável como um portão em qualquer CI.
- O nível pago está atrás de uma flagque pode ser desativado sem uma reconstrução e sem uma nova versão da loja.
O site é uma pequena aplicação PHP sem banco de dados próprio além da correspondência de suporte — o mesmo princípio se aplica um nível acima.
14Pilha de tecnologia
- Flutterpara iOS e Android a partir de uma única base de código — com um sistema de design em código, de modo que cor, espaçamento e raio sejam declarados em um só lugar em vez de em cada widget.
- Reconhecimento de fala no dispositivoe análise no dispositivo: os modelos são baixados uma vez e executados localmente, com o manifesto descrevendo-os construído a partir dos arquivos em vez de escrito à mão.
- PHP 8.4para o backend do aplicativo e o site, com um pequeno banco de dados usado apenas para correspondência de suporte.
- Um registro de configuraçãocomo a fonte da verdade para as configurações do aplicativo, com código gerado e um portão de pré-verificação.
- Trinta pacotes de idiomaspara o aplicativo e três para o site, com paridade de dicionário imposta por testes em vez de por revisão.
- Uma política de segurança de conteúdo rigorosa no site — sem estilos inline, valores computados compilados em uma folha de estilo e uma fonte auto-hospedada, para que a página sobre privacidade não busque um único recurso de terceiros.
15Design e UX
A linguagem visual é um tema escuro, retirado do site do produto, para que o que um visitante é prometido é o que ele abre. Um segundo tema claro foi escrito nos tokens e deliberadamente não foi enviado: dois temas significam dois conjuntos de capturas de tela e o dobro de lugares onde um layout quebra sem ser notado.
Cor, espaçamento e raio vivem em um único arquivo de design, e a transição entre uma cor alarmante e uma calma vaiatravés de um amarelo quente — a interpolação direta dá uma lama oliva, que é o tipo de coisa que parece descuido e é na verdade um ponto de referência ausente.
O aplicativo tem um caráter, e as regras em torno dele são sobre honestidade tanto quanto charme: o humor é legível a partir da silhueta, não apenas da cor, então uma pessoa daltônica vê a mesma coisa que todo mundo vê; o humor é uma escala contínua animada entre valores em vez de cinco imagens fixas, porque uma mudança é lida como uma imagem diferente em vez do mesmo amigo; e no extremo ansioso as sobrancelhas se levantam nas extremidades internas, porque para baixo e para dentro é raiva para a pessoa que está olhando.
Em todos os outros lugares, a interface segue a regra central do produto: mostrar o que foi medido, dizer quando não há informações suficientes para dizer algo, e nunca transformar uma pessoa em um único número.
16Como trabalhamos
- A promessa primeiro. Anotamos o que o aplicativo nunca faria — manter áudio, analisar outras pessoas, perguntar quem você é, pontuá-lo como pessoa — antes de projetar qualquer coisa, porque essas decisões restringem a arquitetura em vez de seguir a partir dela.
- Núcleo de medição. Análise no dispositivo, o modelo de contagem em taxas, o índice com seus limiares e sua recusa em aparecer em dados escassos.
- Trabalho de linguagem.Trinta dicionários e regras, com paridade garantida por testes em todos eles ao mesmo tempo.
- A outra metade.Bússola, diário, programas, execuções, relatório semanal — tudo que funciona sem o microfone.
- Testes como um recurso.Cem testes de autoavaliação gerados e validados, com sua escada de desbloqueio distribuída pelo gerador.
- Monetização.Assinatura, família, o pequeno conjunto de produtos da loja e um nível pago atrás de uma bandeira.
- Caminho de lançamento.Registro, configuração gerada, portão de pré-voo, registro de construção e política de versão.
- O site.Três idiomas, uma política de segurança de conteúdo rigorosa e uma página de destino que mostra as telas reais do aplicativo.
Duas coisas continuaram voltando durante a construção, e ambas agora são regras. Qualquer coisa que a interface afirme sobre o comportamento de uma pessoa deve ser verificável contra uma medição, e qualquer coisa que o aplicativo prometa sobre privacidade deve ser aplicada pelo código em vez de por uma nota em um documento — um entendimento compartilhado sobrevive exatamente até a próxima pessoa que não o leu.
17O resultado
O que saiu é um produto de medição para algo que as pessoas geralmente apenas supõem, construído de forma que a medição não custe a elas sua privacidade.
- Análise de fala no dispositivo: nada gravado, nada transcrito, outras vozes descartadas.
- Tudo relatado por mil palavras, para que o silêncio não seja confundido com progresso.
- Ironia, sarcasmo e piadas contadas separadamente — e rotuladas como um palpite que nunca muda a pontuação.
- Trinta idiomas com dicionários que se juntam, cobertos por testes em todos eles.
- Uma bússola de valores, um diário, programas e um relatório semanal que admite quando tem muito pouco para comparar.
- Cem testes de autoavaliação como recursos validados, com um pequeno conjunto de produtos armazenados por trás da metade paga.
- Um plano familiar que compartilha a assinatura e nada mais, porque os dados não estão no servidor para compartilhar.
18Principais aprendizados
Kyndsy é o projeto onde a engenharia mais difícil estava nas restrições. Análise no dispositivo, sem transcrição, sem conta, sem pontuação geral, sem analisar espectadores — cada um desses fatores tornou a construção mais difícil e o produto possível. Uma versão deste aplicativo com um pipeline do lado do servidor e um login teria sido mais rápida de escrever e não teria merecido o microfone de ninguém.
A lição que levamos adiante é sobre como as promessas são cumpridas: uma garantia que vive em um documento é uma garantia até a próxima mudança que ninguém verifica.. Os que foram mantidos aqui são os que são expressos como código e cobertos por testes — paridade em trinta idiomas, contraste verificado como um número em vez de por observação, movimento verificado por valores em vez de por captura de tela, um portão de construção que recusa em vez de avisar.
Se você está construindo um produto móvel onde a privacidade é a característica em vez do aviso, algo que precisa funcionar em muitos idiomas ao mesmo tempo, ou um aplicativo cujos números as pessoas devem confiar sobre si mesmas, este é o tipo de trabalho que levamos da ideia à loja.



