/ Trabajo / (01)

Florami

Un compañero de plantas que identifica especies, diagnostica enfermedades y prescribe cuidados a partir de una sola foto.

Año
2025
Rol
Diseño + full stack
Categoría
Compañero de plantas con IA
Estado
Desplegado

Florami es una aplicación web full-stack que convierte una foto del móvil en un plan de cuidado completo. El usuario sube una fotografía y el sistema identifica la especie, analiza el estado de las hojas, devuelve acciones de cuidado ordenadas por prioridad y — para los envíos de alta calidad — alimenta una enciclopedia bilingüe moderada que crece con cada contribución.

(Destacados)

Qué hace que funcione.

  1. 01

    Pipeline Gemini de dos pasos: un modelo de visión describe y un segundo modelo fuerza el resultado en JSON estricto.

  2. 02

    Auto-publicación por niveles de calidad: solo las especies de Nivel 1 con aprobaciones previas entran automáticamente en la enciclopedia bilingüe.

  3. 03

    Conversión HEIC→JPEG en servidor + deduplicación SHA-256 / pHash para que cualquier foto de iPhone funcione a la primera.

(Caso de estudio) 2025 · Diseño + full stack

— Contexto

La mayoría de apps de cuidado de plantas se quedan en la identificación de la especie, dejando al usuario traducir un nombre latino en decisiones reales de riego, luz y abono. Florami cierra ese ciclo: foto entrante, plan de cuidado con criterio saliente, y una enciclopedia pública que aprende de las mejores contribuciones.

— El problema

El dueño de una planta de interior hace una foto con el móvil porque algo no va bien. No quiere un artículo de Wikipedia: quiere una frase sobre qué le pasa y tres acciones para esta semana. Y todo lo que el sistema aprenda de esa foto debería beneficiar a la siguiente persona que suba la misma especie.

(Proceso)

El proceso, paso a paso.

  1. 01 Design

    Define el trabajo clave y diseña la pantalla a su alrededor.

    Triaje y prescripción, no identificación enciclopédica. La pantalla de resultados ordena: especie (con confianza), estado y tres acciones de cuidado por urgencia. Todo lo demás — historial, chat, enciclopedia — está a un toque de distancia, nunca en medio.

  2. 02 Build

    Backend Node + Express en cinco capas, MongoDB en el plano de datos.

    Separación estricta entre transporte, routing, controladores, servicios y capas de datos. Modelos Mongoose para User, Plant, Consulta, Conversation y PlantCatalog. Helmet, CORS, mongo-sanitize, rate limiting, CSRF (double-submit cookie) y validación Zod en cada ruta mutante.

  3. 03 Model

    Pipeline Gemini de dos pasos: describe primero, luego estructura.

    El modelo de visión devuelve una narrativa botánica detallada a partir de la imagen. Una segunda llamada 'estructuradora' reescribe esa narrativa en un documento JSON estricto y validado que el backend puede almacenar. Una tercera pasada de traducción genera copia ES/EN para la enciclopedia. Todas las llamadas reintentan con backoff exponencial.

  4. 04 Build

    Casos límite que deciden si el producto funciona de verdad.

    Conversión HEIC→JPEG en servidor vía sharp (los iPhones usan HEIC por defecto, Gemini no lo acepta). Deduplicación SHA-256 + hash perceptual contra las últimas 50 subidas del usuario (Hamming ≤ 6). Las imágenes se mantienen en memoria y se transmiten directamente a Cloudinary — el disco del servidor nunca toca el archivo.

  5. 05 Ship

    Auto-publicación por niveles de calidad para la enciclopedia.

    Cada análisis se clasifica en Nivel 1 / 2 / 3 según confianza y calidad de imagen. Las especies Nivel 1 con ≥ 2 aprobaciones previas de admin se publican automáticamente con traducción bilingüe. Las especies nuevas y las de Nivel 2 van a una cola de moderación humana. El Nivel 3 se descarta — la imagen nunca se sube.

— Resultado

Cifras, sin adornos.

  • 2 pasos Pipeline Gemini: visión + estructurador — Uno describe, uno fuerza JSON
  • 3 niveles Auto-publicación por calidad — Confianza × calidad de imagen
  • ES / EN Enciclopedia bilingüe auto-traducida — Fichas en caché vía lru-cache
  • 0 disco Procesado de imágenes: RAM → Cloudinary — Multer memoryStorage

El modelo es una funcionalidad del producto, no un proyecto de ciencia.

— Florami — principio de diseño