Skip to content

About

Sistema interno B2B Olfativa: foto del espacio del cliente → Tríada Sensorial completa (aroma + difusor + música) + propuesta PDF. Codifica el Vol VII Tríada Sensorial.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Olfativa Sales App

Aplicación interna para ejecutivos de ventas de Olfativa. Una foto del espacio del cliente → Tríada Sensorial completa (aroma + difusor + perfil musical Spotify) + propuesta comercial PDF lista para enviar.

Codifica el protocolo del Vol. VII Tríada Sensorial en software.

Para el CEO de Olfativa — Inicio rápido

  1. Login en /login con rol Admin (default olfativa-admin-2026).
  2. Configura tu API key: ve a /configuracion → pega tu ANTHROPIC_API_KEY (la generas en console.anthropic.com) → guardar. La clave queda cifrada con AES-GCM en Vercel Blob.
  3. Comparte el password de vendedor (default olfativa-vendedor-2026) con tu equipo de ventas. Ellos entran en /login con rol Vendedor.
  4. Cada vendedor toma una foto del espacio del cliente → el sistema clasifica el estilo, sugiere tipo/tráfico/brief, calcula la Tríada y genera la cotización PDF.

Cambia los passwords default antes de producción real: agrega las variables ADMIN_PASSWORD y VENDEDOR_PASSWORD en Vercel → Settings → Environment Variables. También agrega un AUTH_SECRET (string aleatorio largo) y un CONFIG_ENCRYPTION_KEY (string aleatorio para el cifrado de la API key).

Roles

Rol Puede
admin Configurar API keys (Anthropic, Spotify), ver el estado del sistema
vendedor Tomar foto, generar Tríada, descargar propuesta PDF

Stack

  • Next.js 16 (App Router) + React 19 + TypeScript estricto
  • Tailwind CSS 4 monocromo (palette Olfativa) + tipografía Instrument Serif italic
  • Anthropic Claude Sonnet 4.6 con visión, vía @anthropic-ai/sdk
  • @react-pdf/renderer para propuestas comerciales
  • Spotify Web API (Client Credentials) para playlists
  • Vercel Blob + AES-GCM para almacenamiento cifrado de claves
  • Jose JWT para sesiones HttpOnly cookies
  • Vercel (deploy + Blob storage)

Pipeline de 6 pasos (Vol. VII)

  1. Captura: foto del espacio → compresión client-side a JPEG ≤1MB.
  2. Visión: Claude Sonnet 4.6 clasifica el espacio en uno de los 10 estilos del catálogo Olfativa, extrae paleta cromática, materiales, temperatura visual, iluminación. Además sugiere automáticamente tipo de espacio, tráfico estimado, brief de marca, área aproximada y altura de techo.
  3. Pre-llenado: el formulario se completa solo. El vendedor solo verifica/ajusta.
  4. Aroma: filtra los 104 aromas del catálogo por familia compatible con el estilo, objetivo alineado al brief, tipo de espacio, contraindicaciones, y arousal congruente. Top 1 + alternativo.
  5. Difusor: filtra los 15 modelos por cobertura m³ ≥ espacio, intensidad apropiada al tráfico, estética afín al estilo. Calcula precio de renta total.
  6. Música: BPM + género + volumen dB + playlists Spotify + artistas referencia. Aplica ajustes de hora del día y audiencia cultural.

Cada Tríada se valida con tres congruencia checks: arousal musical/olfativo, temperatura cromática (visual/música), material/textura. Estado: APROBADO o REVISAR.

Rutas

/                       Hero público + protocolo
/login                  Acceso por rol
/visita/nueva           Capture flow (vendedor o admin)
/configuracion          Admin only — gestión de API keys
/demo                   Resultado precargado (sin API key)
/api/auth/login         POST { role, password }
/api/auth/logout        POST
/api/admin/config       GET/PATCH (admin only)
/api/vision/preview     POST { fotoBase64 } → análisis IA + sugerencias form
/api/visit/triada       POST { vision, ...inputs } → Tríada
/api/visit/proposal     POST { triada, vision, fotoPreview } → PDF
/api/visit/test         POST { preset } → Tríada con vision fake (sin API)
/api/spotify/search     GET ?q= → playlists

Variables de entorno

Variable Requerida Notas
ANTHROPIC_API_KEY recomendada Si no está, debe configurarse desde /configuracion (requiere BLOB_READ_WRITE_TOKEN)
BLOB_READ_WRITE_TOKEN recomendada Activa Vercel Blob → permite que admin guarde la API key desde la UI con cifrado
ADMIN_PASSWORD recomendada Si no está, default olfativa-admin-2026
VENDEDOR_PASSWORD recomendada Si no está, default olfativa-vendedor-2026
AUTH_SECRET recomendada Para firmar JWTs. String aleatorio ≥32 chars
CONFIG_ENCRYPTION_KEY recomendada Para cifrar las API keys en Blob. String aleatorio largo
SPOTIFY_CLIENT_ID opcional Búsqueda de playlists
SPOTIFY_CLIENT_SECRET opcional Idem

Setup local

cp .env.example .env.local
npm install
npm run dev
# → http://localhost:3000

Deploy

Ya desplegado en Vercel:

vercel deploy --prod

URL viva: https://olfativa-sales-app.vercel.app

Test del matching engine

npx tsx scripts/test_engine.ts

Corre 4 casos (oficina minimalista, spa Japandi, hotel Quiet Luxury, retail Costero) y muestra la Tríada completa.

Estructura

src/
  app/
    page.tsx                  Hero + protocolo
    login/                    Acceso por rol
    configuracion/            Admin: gestión de API keys
    visita/nueva/             Capture flow + auto-fill
    demo/                     Vista resultado con vision fake
    api/
      auth/{login,logout}     Sesiones JWT
      admin/config            GET/PATCH (admin only)
      vision/preview          Foto → análisis + sugerencias form
      visit/triada            Vision + inputs → Tríada
      visit/proposal          Genera PDF
      visit/test              Pipeline con vision fake
      spotify/search          Playlists
  components/
    SiteHeader.tsx, SiteFooter.tsx, LogoutButton.tsx
    VisitaFlow.tsx            Capture + auto-fill + result
    TriadaResultView.tsx      Output Tríada Sensorial
  lib/
    auth/session.ts           JWT + cookies + checkPassword
    config/store.ts           AES-GCM + Vercel Blob
    vision/analyzeSpace.ts    Prompt Claude + Zod parse
    matching/                 Motor de los 6 pasos del Vol VII
    proposal/template.tsx     react-pdf
    spotify/client.ts         Client Credentials + search
    imageUtils.ts             Compresión client-side
    types.ts                  Schemas Zod compartidos
  middleware.ts               Protección de rutas + roles
  data/                       JSON: aromas, difusores, matriz Vol VII
scripts/
  excel_to_json.py            Re-genera JSON desde los Excels fuente
  test_engine.ts              Test del matching engine

Roadmap post-MVP

  • Persistencia (Vercel Postgres / Neon) para histórico de visitas y propuestas firmadas.
  • Multi-vendedor con cuentas individuales (no solo password compartido).
  • Override manual del estilo cuando vision IA confianza < 0.7.
  • Link al producto en olfativahome.com directo desde la cotización.
  • Tracking de % de propuestas que se convierten.

About

Sistema interno B2B Olfativa: foto del espacio del cliente → Tríada Sensorial completa (aroma + difusor + música) + propuesta PDF. Codifica el Vol VII Tríada Sensorial.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages