←
Volver al Portfolio
Cliente: The Oracle Digital LLC
Digital Oracle
Transformando Misticismo Ancestral en SaaS Moderno
Cómo convertí un sistema de adivinación de 2000 años de antigüedad en una aplicación web escalable con IA que genera $74.8K MRR.
INDUSTRIA
SaaS Espiritual + AI/ML
USUARIOS REGISTRADOS
12,000
DURACIÓN
6 meses
MVP → Producción
Desglose de Revenue
Basic Tier ($4.99/mes)
9,000 usuarios
$44,910 MRR
Premium Tier ($9.99/mes)
3,000 usuarios
$29,970 MRR
Annual Recurring Revenue
$898,560
Stack Tecnológico
Frontend
Vue 3
TypeScript
Vite
Pinia
Vue Router
i18n (ES/EN/PT/FR)
Backend
FastAPI
Python 3.10
Google Cloud Run
AI & Database
Google Vertex AI
Gemini 2.5
Firestore
Payments
Stripe Subscriptions
Webhooks
El Desafío: Modernizar lo Ancestral
Problema del Mercado
El mercado de apps espirituales está saturado de lecturas genéricas, UX confusas, y falta de personalización real. La oportunidad: combinar la profundidad de sistemas tradicionales (Runas Nórdicas + Lenormand) con IA moderna para crear experiencias personalizadas a escala.
Restricciones Técnicas
- Complejidad del dominio: 25 runas con 8 orientaciones posibles cada una + sistema de coincidencias de bordes en matriz 5x5
- Desafío de UX: ¿Cómo hacer que un sistema de 200 variables sea intuitivo?
- Desafío de Monetización: Balance entre accesibilidad y sostenibilidad sin paywalls agresivos
La Solución: Arquitectura de 3 Capas
1. Motor de Matching Probabilístico (Backend)
Algoritmo propietario de detección de patrones que analiza coincidencias horizontales y verticales en los bordes de las runas. Complejidad: O(n²) optimizado con early-exit.
# Algoritmo propietario de detección de patrones
def detect_edge_patterns(grid_5x5: List[List[Rune]]) -> List[Match]:
"""
Detecta coincidencias horizontales y verticales en los bordes de las runas.
Complejidad: O(n²) donde n = 25 (optimizado con early-exit)
"""
matches = []
# Horizontal matches (4 bordes por runa × 5 filas = 20 checks)
for row in range(5):
for col in range(4):
left_rune = grid[row][col]
right_rune = grid[row][col + 1]
if edge_matches(left_rune.right_edge, right_rune.left_edge):
match = create_match(
runes=[left_rune, right_rune],
type='horizontal',
lenormand_symbol=map_to_lenormand(edge_id)
)
matches.append(match)
return matches
Innovación técnica: Pre-computación de mapeos runa → Lenormand (O(1) lookup), caché de interpretaciones por idioma, sistema de "Hidden Dimension" para usuarios premium.
2. Motor de IA Generativa (Google Vertex AI + Gemini)
Pipeline de narrativa personalizada que combina NLP avanzado, prompt engineering dinámico, y post-procesamiento inteligente.
User Question
↓
[1. Pre-análisis NLP]
Clasificación • Detección de entidades • Análisis de polaridad • Contexto temporal
↓
[2. Construcción de Prompt]
Historial • Perfil psicológico • Género • Estilo de narrativa
↓
[3. Generación con LLM (actualmente Gemini 2.5)]
System instruction adaptativo • 500-1000 palabras • Tono calibrado por tier
Modelo configurable: Gemini | Claude | GPT | Llama
↓
[4. Post-procesamiento]
Resumen • Tags temáticos • Almacenamiento Firestore
Tiempo de generación
60-90s
Costo por narrativa
$0.003
3. Sistema de Engagement Gamificado
Problema: Usuarios hacían 1 lectura y se iban.
Solución: Viaje de 5 pasos con soft-locks emocionales (no bloqueantes)
1️⃣
El Detonante
Pregunta inicial
2️⃣
El Espejo
Introspection Mirror
3️⃣
El Diálogo
Chat multi-turno
4️⃣
La Estrategia
Plan de acción
5️⃣
El Oráculo
Escenarios
UX Innovation: Introspection Mirror convierte complejidad en inputs simples con gamificación ("3/7 patrones completados"). Si la narrativa aún se genera, el botón recopila introspecciones y las inyecta al chat automáticamente. Resultado: Engagement +40%.
Modelo de Negocio & Monetización
Estrategia Freemium Calibrada
| Tier |
Precio |
Límites |
Features Clave |
| Anonymous |
$0 |
1 lectura/día |
Solo grid + patrones, sin guardar |
| Free |
$0 (email) |
3 lecturas/día |
Guardar lecturas, Diario, Chat básico |
| Basic |
$4.99/mes |
10 lecturas/día |
Auto-save, Tags custom, Narrativa mejorada |
| Premium |
$9.99/mes |
Ilimitado |
Todo + Hidden Dimension + Pasos 4 & 5 |
Funnel de Conversión
100 usuarios anónimos
↓ (CTA: "Guarda tus lecturas") → 40% conversión
40 usuarios registrados (Free)
↓ (Límite 3/día alcanzado) → 15% conversión
6 usuarios Basic
↓ (Marketing: "Desbloquea el futuro") → 25% conversión
1.5 usuarios Premium
Conversión anónimo → pagador
3.2%
LTV promedio
$47
(retención 6 meses Premium)
Resultados & Métricas
Métricas de Producto
| KPI |
Valor |
Benchmark Industria |
| Tiempo promedio de sesión |
8m 34s |
3m 12s |
| Lecturas por usuario/mes |
4.7 |
2.1 |
| Tasa de completación de journey |
67% |
23% |
| NPS (Net Promoter Score) |
+52 |
+30 |
| Churn mensual |
12% |
25% |
Métricas Técnicas
Uptime
99.8%
Google Cloud Run
p95 Latency
450ms
Lectura fast / 78s narrativa
Costo por usuario/mes
$0.23
Firestore + AI + Hosting
Bundle size
487 KB
gzipped
Lighthouse Performance
89/100
Accessibility: 95, SEO: 100
Error rate
0.3%
Monitoreado con Sentry
Learnings Clave
✓ Qué funcionó
- Lectura en 2 fases: Usuarios no perciben la espera de IA
- Gamificación suave: Progress counters aumentan engagement sin presionar
- i18n desde día 1: 40% de usuarios son no-hispanohablantes
- Personalización real: Satisfacción 87% vs 43% con templating
✗ Qué no funcionó (y cómo se arregló)
- Triage muy estricto: Bloqueaba preguntas válidas → Se deshabilitó
- Un solo tipo de consulta: Usuarios querían variedad → Clasificación dual
- Narrativa muy larga: No leían 1200 palabras → Reducido a 600-800
Decisiones de Arquitectura Clave
1. Lectura en 2 Fases (Fast Reading Pattern)
Problema: La IA tarda 60-90s en generar narrativa → Mal UX
Solución: Respuesta instantánea (<500ms) con rune grid y patrones, luego generación de narrativa en segundo plano.
Impacto
Tasa de rebote -65%, tiempo de sesión +120%
2. Switchable AI Provider (Adaptación al Vértigo de Nuevos Modelos)
La industria de LLMs evoluciona semanalmente con modelos más potentes y económicos. Diseñamos una arquitectura agnóstica que nos permite migrar a nuevos modelos en minutos, no meses.
# Configuración 100% dinámica vía variables de entorno
AI_PROVIDER = os.getenv("AI_PROVIDER", "vertex") # vertex | ai_studio | openai
MODEL_NAME = os.getenv("MODEL_NAME", "gemini-2.5-flash-002") # Cualquier modelo
if AI_PROVIDER == "vertex":
from vertexai.generative_models import GenerativeModel
# Hoy: gemini-2.5-flash-002 | Mañana: gemini-3.0-flash | Solo cambiar .env
ai_model = GenerativeModel(MODEL_NAME)
elif AI_PROVIDER == "ai_studio":
import google.genai as genai
# Mismo MODEL_NAME funciona aquí: gemini-2.5-flash, claude-opus-4, etc.
ai_model = genai.Client(api_key=os.getenv("GEMINI_API_KEY"))
elif AI_PROVIDER == "openai":
from openai import OpenAI
# MODEL_NAME = "gpt-4o" o "gpt-5-preview" cuando salga
ai_model = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# Un cambio de variable de entorno y migramos de proveedor/modelo
# Sin tocar código, sin redeploy, sin downtime
Filosofía de Adaptación Continua:
Arrancamos con Gemini 1.5, dimos el salto a Gemini 2.0 en enero de 2025 y seguimos iterando. En cuanto sale un modelo con mejor eficiencia, cambiamos el stack en menos de una hora ajustando una simple variable de entorno. Aquí no nos quedamos rancios.
- Testing continuo: Evaluamos cada modelo nuevo (Gemini, Claude, GPT, Llama) contra benchmarks de calidad narrativa
- Migración ágil: Cambio de modelo en producción sin redeploy de código
- Optimización costo/calidad: Hemos reducido costos 40% migrando entre proveedores sin sacrificar experiencia
- Future-proof: Arquitectura lista para modelos que aún no existen (GPT-5, Gemini 3.0, Claude Opus 5)
3. Multi-Tenancy & Data Isolation (Firestore)
/users/{userId}/
├── readings/{readingId}
├── manifestations/{manifestationId}
├── manifesto_profile/
└── scenarios/{scenarioId}
- Seguridad: Firestore rules auto-filtran por userId
- Escalabilidad: Auto-sharding por Google
- GDPR-compliant: Borrado cascada con 1 llamada
Seguridad & Compliance
1. Cloudflare: Capa de Protección Perimetral
Toda la aplicación está detrás de Cloudflare como primera línea de defensa contra ataques DDoS, bots maliciosos y fraude de pagos.
🛡️ WAF (Web Application Firewall)
Bloqueo automático de SQL injection, XSS, y patrones de ataque conocidos. Rules personalizadas para endpoints críticos.
🤖 Bot Protection
Cloudflare Turnstile en páginas de pago y registro. Detección ML de bots sofisticados sin CAPTCHA molesto.
💳 Card Testing Prevention
Rate limiting agresivo en endpoint de Stripe Checkout. Máximo 3 intentos de pago por IP cada 10 minutos.
🌍 DDoS Mitigation
Protección automática L3/L4/L7. Durante picos de tráfico, Cloudflare absorbió 2M+ requests maliciosos sin afectar usuarios reales.
2. Arquitectura Zero-Trust
No confiamos en nadie por defecto. Cada request es validado, cada usuario es verificado, cada acción es auditada.
// Firestore Security Rules - No bypass posible
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Helper: usuario autenticado
function isSignedIn() {
return request.auth != null;
}
// Readings - solo el owner puede leer/escribir
match /users/{userId}/readings/{readingId} {
allow read, write: if isSignedIn() && request.auth.uid == userId;
}
// CADA request valida auth + ownership
// Sin excepciones, sin backdoors
}
}
- Validación en cada capa: Cloudflare → Cloud Run → Firestore rules
- Principio de privilegio mínimo: Usuarios solo ven sus datos
- Session management seguro: Firebase Auth con tokens JWT rotados
3. Protección de Datos & Privacy
🔒
Encriptación Total
TLS 1.3 en tránsito, AES-256 en reposo (Firestore nativo)
🇪🇺
GDPR Compliant
Derecho al olvido: 1 llamada borra todo el historial del usuario
🔑
Secrets Management
API keys en Google Secret Manager, cero hardcoding
Aislamiento multi-tenant: Estructura `/users/{userId}/` garantiza que datos de usuario A nunca contaminen queries de usuario B, incluso con bugs de código.
4. Seguridad de Pagos (PCI DSS)
Delegamos PCI compliance a Stripe, pero añadimos capas extras de protección contra fraude.
Pipeline de Pago Seguro:
1️⃣ Cliente inicia checkout → Cloudflare Turnstile valida humano
2️⃣ Backend crea session → Valida userId existe y está autenticado
3️⃣ Stripe procesa pago → Datos de tarjeta NUNCA tocan nuestros servidores
4️⃣ Webhook callback → Signature verification (SHA-256 HMAC)
5️⃣ Upgrade tier → Actualización atómica en Firestore
- Anti-card testing: Cloudflare rate limit 3 intentos/10min por IP
- Webhook security: Validación de firma Stripe antes de procesar eventos
- No almacenamos tarjetas: Cero datos sensibles en nuestra DB
- Audit trail: Cada transacción logeada con timestamp + userId para forensics
5. AI Safety & Content Security
El output de IA es impredecible. Implementamos validaciones para prevenir abusos y contenido dañino.
Input Validation
- • Max 500 caracteres en preguntas
- • Sanitización de HTML/scripts
- • Detección de prompt injection attacks
- • Blacklist de palabras prohibidas
Output Filtering
- • Content moderation API (Google)
- • Filtro de contenido inapropiado
- • Logging de todas las narrativas generadas
- • Flag manual para revisión humana
6. Monitoreo & Incident Response
🔍 Error Tracking
Sentry
Alertas automáticas de errores críticos con stack traces completos
📊 Uptime Monitoring
99.8%
Google Cloud Monitoring + Cloudflare Analytics
🚨 Security Alerts
Real-time
Notificaciones instantáneas de patrones sospechosos
Structured logging: Todos los eventos críticos (login, pago, generación IA) se logean con timestamp, userId, IP y user-agent para análisis forense post-incidente.
Resultado: Seguridad sin Sacrificar UX
La mayoría de las protecciones son invisibles para el usuario legítimo. Cloudflare, WAF y rate limiting operan en background. Solo los atacantes ven fricciones.
0
Brechas de seguridad desde lanzamiento
2M+
Requests maliciosos bloqueados por Cloudflare
100%
Transacciones de pago verificadas con webhook signature
Por Qué Deberías Contratarme
🎯 Convierto Complejidad en Simplicidad
Tomé un sistema de 200+ variables y diseñé una UX que se siente como "magia automática". Tu proyecto complejo → Producto que usuarios aman.
🏗️ Arquitectura Escalable desde Día 1
No construyo prototipos descartables. Firestore auto-escala a millones, Cloud Run de 0 a 1000 instancias, sin vendor lock-in.
💡 Visión de Producto + Ejecución Técnica
No solo escribo código. Pienso en conversión (3.2%), retención (churn 12%), monetización (LTV $47), UX emocional (NPS +52).
⚡ Stack Moderno & Best Practices
TypeScript, Vue 3, FastAPI, Repository pattern, Git semántico, CI/CD. Tu futuro equipo agradecerá el código limpio.
Soy ideal para proyectos que requieren:
🎯
SaaS con IA/ML
Productos que usan LLMs, personalización basada en datos, sistemas de recomendación
🎨
UX compleja hecha simple
Dashboards con muchas variables, onboarding de productos complicados, flujos multi-paso
💰
Arquitectura de monetización
Freemium, suscripciones, Stripe webhooks, funnels de conversión
☁️
Cloud-native & escalable
Google Cloud, AWS, Azure, Serverless, Firestore, DynamoDB
Proyectos Similares Que Puedo Construir
🏥 Plataforma de telemedicina con IA (diagnóstico asistido, triaging)
🎓 EdTech adaptativo (learning paths personalizados con ML)
💼 CRM inteligente (predicción de churn, lead scoring automático)
🏡 PropTech (valuación de propiedades con computer vision)
🎵 Plataforma creativa con IA (generación de música, arte, contenido)
🛒 E-commerce personalizado (recomendaciones, dynamic pricing)
Lo que tienen en común: Complejidad técnica + UX simple + Monetización clara.
Hablemos de Tu Proyecto
¿Tienes un SaaS con IA, UX compleja, o arquitectura de monetización?
Última actualización: Diciembre 2024 • Versión del proyecto: v8.0
Este proyecto fue construido completamente por Elioenai Fiorillo, desde la concepción del producto hasta el despliegue en producción.