Cleaner Go libera espacio en un iPhone. Analiza el carrete en el propio dispositivo, agrupa fotos duplicadas y casi idénticas, muestra capturas de pantalla y ráfagas, y permite revisar el resultado deslizando: a la derecha para conservar y a la izquierda para borrar. Una cuadrícula de fotos similares ofrece otra forma de elegir cuál conservar. El mismo producto también incluye compresión de vídeo, una bóveda privada y limpieza de la bandeja de entrada. Nada se borra sin revisión, y la coincidencia de fotos no necesita subir la fototeca.
Trabajo para clientes. Clutch Developer realiza ingeniería móvil en esta app con LabHouse, junto a Inés Salvans. La app pertenece a Labhouse Mobile.
Qué hace la app
- Detección de fotos duplicadas y similares en toda la fototeca, agrupando duplicados evidentes, imágenes visualmente parecidas, capturas de pantalla y ráfagas para que una persona decida.
- Revisión por deslizamiento: conservar o borrar una decisión cada vez, elegir una foto en una cuadrícula de similares y deshacer un deslizamiento cuando haga falta corregirlo.
- Compresión de vídeo para elegir clips grandes y reducirlos, manteniendo el archivo original bajo el control de la persona mientras disminuye la presión sobre el almacenamiento.
- Una bóveda privada para fotos y vídeos que deben quedar fuera de la fototeca principal, protegidos por el flujo de acceso privado de la app.
- Limpieza de la bandeja de entrada, porque los boletines y los adjuntos promocionales también pueden ocupar espacio aunque la fototeca no sea el único problema.
La parte difícil
Los duplicados exactos son fáciles: calcular un hash del archivo y comparar. Esa no es la función útil. Lo útil son los duplicados casi iguales: varios fotogramas de una ráfaga, la misma foto guardada de nuevo por una app de mensajería con otra compresión o una captura recortada de forma ligeramente distinta. Esos archivos tienen bytes diferentes, pero para una persona son claramente la misma imagen. El usuario necesita una sugerencia agrupada, una elección clara de cuál conservar y una decisión reversible, no una lista de coincidencias de hash que todavía deba interpretar desde cero.
Resolverlo implica comparar el contenido perceptual y no solo la identidad del archivo, y el coste crece rápidamente con el tamaño de la fototeca. Una implementación ingenua compara cada foto con todas las demás, un proceso cuadrático que pronto resulta ineficiente. El trabajo práctico consiste en reducir cada imagen a una firma compacta, usar grupos de candidatos para que solo se encuentren pares plausibles y comparar esos candidatos sin volver a decodificar cada recurso a resolución completa. El resultado debe agrupar imágenes similares con suficiente calidad y dejar la decisión final en manos de quien las hizo.
Después hay que hacer todo eso dentro de un teléfono. El primer análisis toca toda la fototeca, es la parte más costosa de la experiencia y ocurre cuando una persona nueva tiene menos paciencia. Debe mostrar el progreso, evitar mantener miles de imágenes a resolución completa en memoria y comportarse con sensatez si la app pasa a segundo plano o el dispositivo empieza a gestionar el calor y la batería. Después del análisis también debe ofrecer una superficie de revisión útil: grupos, elección de la foto que se conserva, decisiones por deslizamiento, deshacer y un paso de confirmación explícito.
El límite del análisis local es concreto. El escaneo de fotos y el trabajo de similitud se realizan en el dispositivo, así que la fototeca no necesita subirse a un servidor para hacer las coincidencias. Eso no debe convertirse en una afirmación general de que la app no tiene ninguna práctica de datos: la sección pública de privacidad de la App Store enumera por separado identificadores, uso y diagnósticos, además de datos relacionados con el soporte. La afirmación precisa de este caso es dónde se ejecuta el análisis pesado de fotos.
Lo que exige
- Firmas perceptuales por imagen, no solo hashes de archivos: baratas de calcular y de comparar.
- Agrupación de candidatos para que la comparación no crezca de forma cuadrática en una fototeca grande.
- Decodificación reducida para mantener controlada la memoria incluso con imágenes originales de alta resolución.
- Procesamiento incremental que mantenga la interfaz receptiva mientras el dispositivo analiza y comprime.
- Nada destructivo sin revisión: sugerencias agrupadas, confirmación explícita, elección de la foto que se conserva y deshacer.
Esto es lo que significa el trabajo de rendimiento en desarrollo de apps nativas: no microoptimizar un bucle de renderizado, sino elegir un algoritmo y un flujo de revisión cuyo coste y riesgo quepan en un teléfono que no controlas. La entrega funciona cuando el trabajo pesado desaparece detrás de una decisión que la persona puede entender.
Alcance y papel del proyecto
La aportación de Clutch Developer a esta app del cliente fue ingeniería móvil, incluido el agrupamiento de fotos en el dispositivo y el flujo de revisión que se describe aquí. Labhouse Mobile es titular de la app; Labhouse e Inés Salvans aparecen acreditados en la nota anterior. Este caso documenta esa aportación, no la autoría exclusiva de todo el producto.
Evidencia y límites
Las capturas conservadas muestran resúmenes de almacenamiento y acciones para revisar fotos; la ficha enlazada de la tienda describe la comparación en el dispositivo. Así se puede revisar el flujo visible y la información publicada, pero no constituye una auditoría independiente de precisión, velocidad o seguridad. El borrado sigue requiriendo revisión y confirmación de la persona.



