01Resumen del proyecto
Kyndsy es una aplicación móvil que responde a una pregunta que la mayoría de las personas no puede responder sobre sí mismas: ¿cómo hablo realmente? Escucha la voz de su dueño durante una conversación ordinaria y cuenta las palabras ásperas, las educadas, los muletillas y los momentos en que el tono se vuelve agudo. Muestra la tendencia a lo largo de días y semanas. Y luego se detiene: no le dice a la persona qué tipo de humano la convierte eso.
La premisa es que las aplicaciones de auto-mejora principalmente dibujan un gráfico de tu propia opinión. Informas sobre tu día, ellos visualizan el informe. Kyndsy comienza desde algo más difícil de discutir: las palabras que realmente se dijeron, contadas mientras la persona estaba ocupada viviendo en lugar de sentarse a reflexionar.
Eso también es lo que hace que el producto sea difícil. Contar el habla significa un micrófono, y un micrófono significa que la persona tiene que confiar en la aplicación más de lo que confía en casi cualquier otra cosa en el teléfono. Así que todo el producto se construye en torno a una promesa que tuvo que ser estructural: el sonido nunca se guarda, las palabras nunca se escriben, las voces de otras personas no se analizan, y no hay cuenta a la que adjuntar nada de esto.
Diseñamos y construimos todo: la aplicación para iOS y Android, su contenido en treinta idiomas, el backend ligero, el camino de lanzamiento de la tienda y el sitio del producto. A continuación se presenta el problema, las decisiones y las partes que deliberadamente nos negamos a construir.
02Contexto y el problema
Una aplicación que escucha es una categoría donde la implementación obvia también es la incorrecta. Desempaquetar la tarea produjo un conjunto de restricciones que moldearon todo lo que vino después.
- La confianza es el producto.Una aplicación que mide el habla tiene exactamente un activo, y no es el algoritmo. Si una persona sospecha que el audio sale del teléfono, no importa cuánta precisión tenga — desinstalan.
- Otras personas no dieron su consentimiento.Un micrófono en una habitación capta a quien esté en ella. Analizar a las personas alrededor del propietario sería una aplicación completamente diferente, y una mucho peor.
- Un número sobre una persona es peligroso.Cualquier puntuación única que afirme resumir a un ser humano es una afirmación que el producto no puede hacer honestamente — y que la gente leerá como un veredicto independientemente del descargo de responsabilidad.
- Las cuentas crudas mienten."Hoy juraste nueve veces" recompensa el silencio. Una persona que no dice nada parece una persona que ha mejorado.
- Las palabras son ambiguas.La misma palabra es una broma, una cita, una queja dirigida a uno mismo o un insulto genuino dependiendo del tono y el contexto. Contar la cadena sola produce números que nadie reconoce como su propio día.
- Las personas no hablan un solo idioma.Cambian de idioma a mitad de la oración. Un contador que sigue solo uno de ellos informa de un día sospechosamente tranquilo cada vez que su propietario cambia de código.
- Las tiendas tienen reglassobre el uso del micrófono, sobre las afirmaciones de salud y psicología, y sobre lo que puede restringir una suscripción — y se aplican en la presentación, no en el día del lanzamiento.
Todo eso tenía que mantenerse en un teléfono, en segundo plano, sin agotar la batería ni la paciencia de la persona.
03Objetivos del proyecto
- Mide el habla en el dispositivo.El análisis ocurre en el teléfono; el audio nunca se almacena ni se sube.
- Solo la voz del propietario.Otras voces se descartan en lugar de ser analizadas, y no hay un modo para apuntar la aplicación a otra persona.
- Sin cuenta, sin nombre.Nada que filtrar, porque no hay nada recopilado para filtrar.
- Tasas, no conteos brutos.Todo por cada mil palabras habladas, así que un día tranquilo es un día tranquilo y no un logro.
- Treinta idiomas, incluyendo habla mixta — los diccionarios tienen que existir en todos ellos a la vez, o el número es incorrecto para las personas que cambian.
- Distinguir matices. Ironía, sarcasmo, una broma y un comentario agudo genuino diferenciados y etiquetados como una suposición, nunca como un veredicto.
- Útil sin el micrófono. El diario, la brújula de valores, las pruebas y las preguntas de la tarde funcionan por sí solas.
- Motivación que no puede ser manipulada. Carreras, niveles y programas juzgados por medición en lugar de por abrir la aplicación.
- Sin una puntuación general de una persona. No en la versión uno y no más tarde.
04Lo que hicimos
La aplicación está construida como cuatro lugares, cada uno respondiendo a una pregunta diferente, más las partes que las sostienen:
- Hoy — lo que acaba de suceder: la puntuación del discurso, los objetivos del día y una sola sugerencia, nunca una lista de seis.
- Progreso — si está avanzando hacia algún lugar: carreras, niveles, programas y el informe semanal.
- La Brújula — a qué decidió apuntar la persona: de tres a cinco valores que eligieron ellos mismos, y el movimiento hacia esos.
- Tú — todo lo que les pertenece solo a ellos: las pruebas de autoevaluación, el acceso familiar, sus datos y apoyo.
Debajo están las piezas que hacen que esos cuatro sean honestos: análisis de voz en el dispositivo, diccionarios y reglas para treinta idiomas, el clasificador de sombras, el modelo de conteo que funciona en tasas en lugar de totales, un backend ligero que casi no sabe nada, y un registro de configuraciones que permite que el producto cambie sin una publicación en la tienda.
05Privacidad como código, no como copia
Las afirmaciones de privacidad en el sitio no son un texto publicitario que una optimización posterior podría invalidar silenciosamente. Son propiedades de la construcción, y el proyecto trata un cambio que haga que cualquiera de ellas sea falsa como un defecto en lugar de un compromiso.
- El sonido no se escribe en ningún lugar — no en un archivo, no en un búfer temporal en el disco, no en un registro. Tampoco en una construcción de depuración, porque una construcción de depuración es cómo estas cosas escapan.
- Solo se analiza la voz del propietario.La voz de otras personas se descarta antes de que se convierta en palabras.
- Nada se transcribe.La aplicación produce contadores, no texto; no hay oración almacenada para filtrar, citar o sincronizar accidentalmente.
- Una sesión comienza solo cuando una persona la inicia.No hay inicio automático después de un reinicio, no hay reanudación silenciosa en segundo plano.
- El perfil de voz nunca sale del teléfono y está excluido de las copias de seguridad del dispositivo — es un dato biométrico, y una copia de seguridad es el único lugar donde la gente olvida que puede viajar.
- Al backend se le dice cuatro cosas y nada más: una solicitud de configuraciones, una descarga de modelo única, un mensaje de soporte si la persona escribió uno, y un recibo de suscripción. No hay cuenta.
- Una persona es un par de números aleatorios que su propio teléfono creó. No los emitimos y no los contamos — lo que significa que no sabemos cuántas instalaciones hay, y ese fue un precio deliberado.
- Iniciar sesión es opcional y no desbloquea nada. Existe para mover una suscripción y el historial a un nuevo teléfono. Hacerlo obligatorio habría creado un vínculo con una identidad real donde hoy no existe ninguno.
Ese último punto es el que vale la pena profundizar. El requisito del propietario era no saber nada más que un id anónimo — y la forma tentadora de satisfacerlo es un inicio de sesión obligatorio que luego prometemos no leer. Hicimos lo contrario: ninguna cuenta en absoluto, y un inicio de sesión opcional que lee exactamente un campo del token y lo almacena en hash.
06Lo que la aplicación realmente cuenta
Cuatro cosas: expresiones ásperas, expresiones educadas, palabras de relleno y un tono elevado o agudo. Todos ellos se informan por cada mil palabras habladas, nunca como un total bruto — porque un conteo bruto hace que el silencio parezca progreso, y una aplicación que recompensa a su propietario por no hablar ha malinterpretado su propio trabajo.
El titular del día es un índice de discurso respetuoso, y las reglas que lo rodean son tan consideradas como el número en sí:
- Está totalmente oculto hasta que se han escuchado cincuenta palabras.Un cero en una mañana tranquila se lee como una acusación, no como datos faltantes.
- Días de menos de cincuenta palabras son mostrados pero no contados — visibles como en blanco en lugar de pretender ser un buen día.
- La cortesía puede elevarlo en diez puntos como máximo.Cualquier cosa más y el puntaje sería más barato de manipular con cortesías que ganarlo al no ser agudo.
- Cualquier evento único puede ser marcado como incorrecto, y hacerlo cambia el número en lugar de simplemente tachar una línea de una lista.
Las vistas, además, son ordinarias en forma y cuidadosas en detalle: una tendencia de siete días, una imagen hora a hora del día, una cuadrícula de treinta días de un cuadrado por día. La vista horaria se niega a declarar una "peor hora" hasta que tenga diez eventos en los que basarse; la cuadrícula de treinta días deja los días tranquilos en beige en lugar de colorearlos como calmados. Gráficas que son seguras con datos escasos son cómo un producto de medición pierde la confianza del lector — usualmente para siempre.
07Matices del habla: ironía, una broma, un dardo
Una broma y un insulto no son la misma palabra dos veces. Kyndsy separa la ironía de un comentario agudo genuino, una broma de un golpe, una cita de algo que la persona quiso decir — y muestra lo que cree haber escuchado, en palabras, junto al evento.
Dos reglas mantienen esa función honesta. Primero, se presenta como una suposición, no un veredicto: la aplicación dice "posiblemente ironía" o "una broma — no contabilizada" y muestra en qué se basó. Segundo, y más importante, la clasificación de sombra nunca mueve el índice. Informa a la persona; no ajusta silenciosamente su puntuación. Un número ponderado por confianza sería imposible de verificar para cualquiera y se convertiría silenciosamente en la característica más disputada del producto.
El mismo cuidado se aplica al contexto: la misma palabra cuenta de manera diferente cuando la persona está citando a alguien, hablando de sí misma, o en medio de una discusión. Y dado que ningún diccionario puede saber lo que las palabras de una persona particular significan para ella, pueden mantener sus propias listas.
08Treinta idiomas — y la mezcla
La aplicación funciona en treinta idiomas — inglés, español, portugués, alemán, francés, italiano, neerlandés, sueco, danés, noruego, finlandés, polaco, checo, croata, rumano, húngaro, griego, turco, ruso, ucraniano, bielorruso, hebreo, árabe, hindi, indonesio, vietnamita, tailandés, chino, japonés y coreano — y en varios de ellos a la vez, porque así es como muchas personas realmente hablan.
Treinta idiomas no son treinta traducciones de la interfaz. Son treinta conjuntos de diccionarios: expresiones aproximadas, fórmulas educadas, rellenos — y tienen que aterrizar al mismo tiempo. Un idioma cuyo diccionario está a medio terminar no falla ruidosamente; reporta un día tranquilo. La persona ve un buen número y lo cree, lo cual es peor que un mensaje de error.
Una lección de este proyecto se generaliza bien más allá de él: una característica detectada a partir de la forma del texto falla en el primer idioma escrito de manera diferente. Tratar "una frase" como "una cadena que contiene un espacio" funciona hasta el japonés, chino y tailandés, que se escriben sin ellos — y allí la aplicación no encuentra nada en absoluto, silenciosamente, mientras parece que está funcionando. El comportamiento del idioma tiene que provenir de los propios datos del idioma, y tiene que estar cubierto por una prueba que se ejecute en los treinta.
09La brújula y el diario
El habla es solo la mitad del producto. La otra mitad es lo que la persona decidió apuntar: elige de tres a cinco valores de siete — respeto, honestidad, autocontrol, responsabilidad, cuidado, equidad, fiabilidad — y la aplicación muestra movimiento hacia esos, en lugar de hacia la idea de otra persona sobre lo que es una buena persona.
El movimiento se extrae de dos fuentes: las mediciones del habla y el diario personal de cosas que hicieron —cumplir una promesa, disculparse, gritarle a alguien, reparar el daño. Tres preguntas al final del día, cuando las quieren.
Y hay ninguna puntuación moral general, ahora o más tarde. Esa es la única cosa que el producto se niega a calcular. También es la razón por la que la brújula funciona: una persona elegirá valores honestos solo para una aplicación que no va a calificarla por el resultado.
Todo en esta mitad funciona sin el micrófono. El diario, la brújula, las pruebas y las preguntas de la tarde funcionan por sí solas, por lo que una persona puede configurar la parte de voz más tarde, o nunca, y aún así obtener algo de la aplicación. Esa fue una decisión de producto con consecuencias reales para la retención, y lo haríamos de nuevo: un aviso de permiso en la primera pantalla es donde una aplicación sensible a la privacidad pierde a las personas para las que fue creada.
10Programas, ejecuciones y el informe semanal
La motivación en esta aplicación tenía que ser inmune a los dos trucos habituales: abrir la aplicación muchas veces y no decir nada. Así que:
- Programascorre 7 a 30 días con un objetivo y un número: siete días sin palabras ásperas, respuestas más suaves durante dos semanas, menos muletillas durante un mes. Si funcionó se decide por las mediciones, no por marcar una casilla.
- Una carreracuenta los días que la persona realmente mantuvo el nivel.Los días silenciosos ni lo rompen ni lo extienden— poner el teléfono a un lado no es una forma de ganar.
- Los niveles se ganan por días, no por aperturas de la aplicación: Observación, Control, Discurso calmado.
- Los escudoscubren un desliz, hasta cierto punto, y un día roto se puede recuperar, pero una carrera de treinta días con cuatro días comprados no es una carrera de treinta días, así que esos se cuentan y se muestran por separado.
- El informe semanal dice claramente cuándo no hay suficiente para comparar.Un resumen en el que algo siempre mejora deja de leerse en la tercera semana.
Una asimetría deliberada merece ser nombrada: el nivel gratuito limita cuánto historial es mostrado, no cuánto es contado. Calcular una ejecución solo sobre la ventana visible habría mostrado una ejecución de treinta días como siete — no una limitación del plan gratuito, sino una declaración falsa sobre la persona.
11Cien pruebas de autoevaluación
Junto a las mediciones hay cien pruebas de autoevaluación estructuradas: veinticinco afirmaciones cada una, sobre cuatro minutos, puntuadas en cinco facetas por separado para que la respuesta nunca sea un número plano. Cubren el habla, los sentimientos, las personas cercanas a ti, el trabajo, a ti mismo, los hábitos y la vida en línea.
Son explícitamente no diagnósticos y no mediciones de personalidad — son auto-reflexiones estructuradas, y la aplicación lo dice donde una persona lo leerá en lugar de en una pantalla de configuración. Las respuestas permanecen en el teléfono como todo lo demás.
El punto de ingeniería aquí es que cien pruebas no pueden mantenerse como cien pantallas escritas a mano. Son un recurso, no código: generadas a partir de fuentes, validadas en el momento de la construcción, y rechazadas si una prueba no tiene su conjunto completo de declaraciones y facetas. Esa verificación es lo que hace posible tener cien de ellas en absoluto, y es por eso que sus reglas de desbloqueo podrían distribuirse de manera consistente en lugar de esparcirse a mano.
La mitad de ellas se abren a través del uso, la otra mitad a través de la compra. Los productos de la tienda detrás de la mitad pagada son deliberadamente pocos en lugar de uno por prueba; nadie crea cien listados en la tienda a mano, y nadie traduce cien de ellos a treinta idiomas tampoco. El producto vendido es un desbloqueo; la persona elige en qué prueba gastarlo dentro de la aplicación, después de que se confirma la compra.
12Suscripción, familia y las tiendas
El nivel de pago es una suscripción, y un plan familiar lo comparte: seis lugares por un año, incluyendo el del comprador. Lo que importa es lo que la familia comparte y lo que no:una familia comparte el derecho, no los datos. Nadie ve los números, eventos o diario de otra persona, y la persona que pagó ve lugares y fechas libres, no quién está en ellos.
Esa no es una línea en la letra pequeña; así es como está construido. Las mediciones de otras personas no están en el servidor en absoluto, por lo que no hay nada que exponer accidentalmente en una pantalla familiar. Ingresar un código significa aceptar compartir una suscripción, no aceptar ser identificado.
Dos reglas de implementación de esta parte han sobrevivido a la función. Primero, la suscripción y el derecho familiar son una sola bandera en la aplicación: una segunda pregunta del tipo "o tal vez están en una familia" se olvidaría exactamente en los lugares donde importa. Segundo, el silencio del servidor no revoca el derecho — la red se cae mucho más a menudo de lo que termina una suscripción, y una aplicación que bloquea a un cliente que paga en un tren ha tomado una decisión obvia de manera incorrecta.
La política de la tienda moldeó gran parte de la superficie aquí: lo que una aplicación de micrófono puede reclamar, cómo se puede presentar un nivel de pago, y el hecho de que una versión rota no puede ser revertida con un hotfix. Por eso la política de versiones — versión mínima soportada, actualización forzada, modo de mantenimiento y el mensaje mostrado, en todos los idiomas del proyecto a la vez — es una configuración del lado del servidor en lugar de algo compilado.
13Arquitectura: aplicación, backend, registro
La arquitectura sigue de la promesa de privacidad: tanto como sea posible en el teléfono, tan poco como sea posible en el servidor.
- La aplicación realiza el análisis, mantiene el historial y posee el perfil de voz. Es el producto completo; el servidor tiene un papel de soporte.
- Un backend ligero responde a cuatro tipos de solicitudes: configuraciones, una descarga de modelo única, mensajes de soporte y recibos de suscripción. No tiene una tabla de usuarios, porque no tiene usuarios que poner en una.
- Un registro de configuración contiene lo que de otro modo estaría codificado en la aplicación: identificador del paquete, dirección de la API, parámetros de inicio de sesión, lista de idiomas, banderas de características y la política de versiones. Los valores se generan en el código fuente en lugar de ser escritos allí, y el archivo generado está marcado como no editable por la simple razón de que una edición manual se pierde en la siguiente generación.
- Una verificación previa controla cada compilación: se niega si el identificador del paquete se ha desviado del registro, si la versión no es más alta que la última enviada, si el servidor de la aplicación no responde, si un diccionario está incompleto en cualquiera de los idiomas del proyecto, si el análisis estático no es limpio, si las pruebas fallan, o si se encuentra algo que se asemeje a una clave en el código fuente. Devuelve un código de salida distinto de cero, lo que lo hace utilizable como un control en cualquier CI.
- El nivel de pago está detrás de una banderaque se puede desactivar sin una reconstrucción y sin una nueva versión de la tienda.
El sitio es una pequeña aplicación PHP sin base de datos propia más allá de la correspondencia de soporte; se aplica el mismo principio un nivel más allá.
14Pila tecnológica
- Flutterpara iOS y Android desde una única base de código, con un sistema de diseño en código, por lo que el color, el espaciado y el radio se declaran en un solo lugar en lugar de en cada widget.
- Reconocimiento de voz en el dispositivoy análisis en el dispositivo: los modelos se descargan una vez y se ejecutan localmente, con el manifiesto que los describe construido a partir de los archivos en lugar de escrito a mano.
- PHP 8.4para el backend de la aplicación y el sitio, con una pequeña base de datos utilizada solo para la correspondencia de soporte.
- Un registro de configuracióncomo la fuente de verdad para la configuración de la aplicación, con código generado y una puerta de control previa.
- Treinta paquetes de idiomaspara la aplicación y tres para el sitio, con paridad de diccionario impuesta por pruebas en lugar de por revisión.
- Una política de seguridad de contenido estricta en el sitio — sin estilos en línea en absoluto, valores computados compilados en una hoja de estilos, y una fuente autoalojada, por lo que la página sobre privacidad no carga un solo recurso de terceros.
15Diseño y UX
El lenguaje visual es un tema oscuro, tomado del sitio del producto para que lo que se promete a un visitante sea lo que abre. Un segundo tema claro fue escrito en los tokens y deliberadamente no se lanzó: dos temas significan dos conjuntos de capturas de pantalla y el doble de lugares donde un diseño se rompe sin ser notado.
El color, el espaciado y el radio viven en un archivo de diseño, y la transición entre un color alarmante y uno calmado va a través de un amarillo cálido — la interpolación directa da un barro oliva, que es el tipo de cosa que parece descuido y en realidad es un punto de referencia faltante.
La aplicación tiene un carácter, y las reglas que la rodean son sobre la honestidad tanto como sobre el encanto: el estado de ánimo es legible desde la silueta, no solo desde el color, así que una persona daltónica ve lo mismo que todos los demás; el estado de ánimo es una escala continua animada entre valores en lugar de cinco imágenes fijas, porque un salto se lee como una imagen diferente en lugar de como el mismo amigo; y en el extremo ansioso las cejas se levantan en los extremos internos, porque hacia abajo y hacia adentro es ira en la persona que mira.
En todas partes, la interfaz sigue la regla central del producto: mostrar lo que se midió, decir cuándo no hay suficiente para decir algo, y nunca convertir a una persona en un solo número.
16Cómo trabajamos
- La promesa primero. Escribimos lo que la aplicación nunca haría: guardar audio, analizar a otras personas, preguntar quién eres, puntuarte como persona — antes de diseñar cualquier cosa, porque esas decisiones restringen la arquitectura en lugar de seguirla.
- Núcleo de medición. Análisis en el dispositivo, el modelo de conteo en tasas, el índice con sus umbrales y su negativa a aparecer en datos escasos.
- Trabajo de idioma.Treinta diccionarios y reglas, con paridad aplicada por pruebas en todos ellos a la vez.
- La otra mitad.Brújula, diario, programas, ejecuciones, informe semanal — todo lo que funciona sin el micrófono.
- Pruebas como recurso.Cien pruebas de autoevaluación generadas y validadas, con su escalera de desbloqueo distribuida por el generador.
- Monetización.Suscripción, familiar, el pequeño conjunto de productos de la tienda, y un nivel de pago detrás de una bandera.
- Ruta de lanzamiento.Registro, configuración generada, puerta de embarque previa, registro de construcción y política de versión.
- El sitio.Tres idiomas, una política de seguridad de contenido estricta y una página de aterrizaje que muestra las pantallas reales de la aplicación.
Dos cosas seguían volviendo durante la construcción, y ambas son ahora reglas. Cualquier cosa que la interfaz afirme sobre el comportamiento de una persona debe ser verificable contra una medición, y cualquier cosa que la aplicación prometa sobre la privacidad debe ser aplicada por el código en lugar de por una nota en un documento: un entendimiento compartido sobrevive exactamente hasta la próxima persona que no lo leyó.
17El resultado
Lo que salió es un producto de medición para algo que las personas generalmente solo adivinan, construido de tal manera que la medición no les cueste su privacidad.
- Análisis de voz en el dispositivo: nada grabado, nada transcrito, otras voces eliminadas.
- Todo reportado por cada mil palabras, por lo que el silencio no se confunde con progreso.
- Ironía, sarcasmo y chistes contados por separado — y etiquetados como una suposición que nunca mueve el marcador.
- Treinta idiomas con diccionarios que aterrizan juntos, cubiertos por pruebas en todos ellos.
- Una brújula de valores, un diario, programas y un informe semanal que admite cuando tiene muy poco para comparar.
- Cien pruebas de autoevaluación como recursos validados, con un pequeño conjunto mantenible de productos en la tienda detrás de la mitad de pago.
- Un plan familiar que comparte la suscripción y nada más, porque los datos no están en el servidor para compartir.
18Conclusiones
Kyndsy es el proyecto donde la ingeniería más difícil estaba en las limitaciones. Análisis en el dispositivo, sin transcripción, sin cuenta, sin puntuación general, sin analizar a los espectadores — cada uno de esos hizo que la construcción fuera más difícil y el producto posible. Una versión de esta aplicación con un pipeline del lado del servidor y un inicio de sesión habría sido más rápida de escribir y no habría merecido el micrófono de nadie.
La lección que llevamos adelante es sobre cómo se cumplen las promesas: una garantía que vive en un documento es una garantía hasta el próximo cambio que nadie verifica.. Los que se mantienen aquí son los que se expresan como código y están cubiertos por pruebas: paridad en treinta idiomas, contraste verificado como un número en lugar de a simple vista, movimiento verificado por valores en lugar de por captura de pantalla, una puerta de construcción que rechaza en lugar de advertir.
Si estás construyendo un producto móvil donde la privacidad es la característica en lugar de la advertencia, algo que tiene que funcionar en muchos idiomas a la vez, o una aplicación cuyos números se supone que la gente debe confiar sobre sí misma, este es el tipo de trabajo que llevamos de la idea a la tienda.



