Chatbot WTC

¿Qué hice? Un chatbot de navegación para willtocoding.com que ayuda a los usuarios a encontrar secciones, posts, proyectos y redes sociales. Sin formularios, sin menús infinitos. Preguntas naturales, respuestas directas.

¿Cómo lo hice? Backend en Vapor (Swift) desplegado en DigitalOcean, frontend en JavaScript, y DeepSeek como modelo de IA. Todo conectado con HTTPS, rate limiting y dominio propio.

Ayer no tenía chatbot, hoy WTC responde preguntas sobre mi web en tiempo real, con IA, desplegado en producción. Pero el camino no fue recto: probé Make, lo descarté. Probé PyScript, lo descarté. Probé OpenAI, lo cambié por DeepSeek. Y quiero compartir por qué.

Lo más importante: el valor no está en el chatbot, está en saber qué piezas necesitas para construirlo. Integrar Vapor + DeepSeek + Nginx + SSL + Rate Limiting.

Decisiones técnicas:

Frontend: PyScript vs JavaScript. Quería evitar JavaScript. PyScript prometía Python en el navegador via WebAssembly. Funcionaba, pero la carga inicial era inaceptable en móvil.

Backend: Make vs Vapor. Make parecía perfecto: webhook → OpenAI → respuesta. Cero código. Pero 1000 operaciones al mes -versión gratuita- significaba que con 34 usuarios diarios me quedaba sin servicio. Para un portfolio público, inaceptable.

IA: OpenAI vs DeepSeek. DeepSeek es aproximadamente 2x más barato. Para un chatbot simple con bajo volumen, ambos cuestan céntimos. Elegí deepseek-chat por precio, pero gpt-4o-mini sería igual de válido.

El flujo: el usuario escribe, JavaScript hace POST a mi API, Vapor procesa el mensaje, llama a DeepSeek con un system prompt específico, y devuelve la respuesta. Todo sobre HTTPS con rate limiting.

El resultado:

✔ Chatbot funcionando en producción con IA.

✔ Backend en Vapor (Swift) desplegado en DigitalOcean.

✔ Frontend en JavaScript.

✔ Conexión segura HTTPS con certificado SSL.

✔ Protección contra spam con rate limiting.

✔ System prompt con secciones, posts, proyectos y redes sociales.

✔ Responsive: funciona en móvil y desktop.

✔ Historial persistente con sessionStorage (se mantiene al navegar entre páginas).

✔ Botón de reinicio para limpiar conversación.

✔ Estado visual deshabilitado mientras espera respuesta.

✔ DigitalOcean con Ubuntu compartido con otras APIs.

Nivel de dificultad: Medio.

Tiempo invertido: 12 horas (incluyendo los intentos donde he descartado PyScript, Make, y OpenAI).

¿Vale la pena usar IA para esto? Para un asistente virtual, probablemente no. Pero quería aprender a integrar estas tecnologías, y el coste es céntimos al mes. Si funciona y aprendes, merece la pena.

Recursos:

Stack: Xcode, Swift, Make, Vapor, Python, HTML, CSS, JavaScript, OpenAI API, DeepSeek API, IONOS, FileZilla, DigitalOcean, Ubuntu 24.04, iTerm2, Claude Code.

Reflexión final:

Cada decisión técnica tiene contrapartidas. PyScript era elegante pero lento. Make era simple pero limitado. OpenAI era conocido pero más caro. No hay soluciones perfectas, solo soluciones que funcionan para tu contexto.

WTC ahora responde preguntas en willtocoding.com. No es ChatGPT, no es Gemini, no es Claude, no pretende serlo. Es un asistente de navegación que demuestra que un iOS Developer puede construir un sistema completo: frontend, backend, IA, SSL, rate limiting, deploy. La próxima vez que alguien pregunte ¿Sabes backend?, no les cuentes, enséñales tu chatbot funcionando.