Volver al Blog

Brillitos: La historia del chatbot que pudo ser (y por qué odio los bots tontos)

Brillitos: La historia del chatbot que pudo ser (y por qué odio los bots tontos)

Estoy mirando mi repositorio de GitHub. 147 commits. Última actualización: hace 3 semanas. El README dice "Brillitos - El chatbot que brilla con inteligencia propia ✨". Me río amargamente mientras cierro la laptop.

Esta es la historia de cómo me obsesioné con crear el chatbot perfecto y terminé con otro proyecto a medio hacer en mi cementerio digital de "buenas ideas sin tiempo".

El origen: Mi odio visceral a los chatbots estúpidos

Todo empezó en diciembre 2023. Estaba ayudando a mi mamá con un problema bancario. El chatbot del banco:

"Hola, soy Asisbot 🤖 ¿En qué puedo ayudarte?"
"Necesito resetear mi contraseña"
"No entiendo tu consulta. ¿Puedes reformular?"
"RESETEAR. CONTRASEÑA"
"¿Quieres conocer nuestras promociones?"

Lancé el celular al sofá. No literalmente. Bueno, sí, literalmente.

Esa noche, furiosa inspiración mediante, nació la idea: ¿Y si combinara múltiples IAs para crear un chatbot que NO sea idiota? ChatGPT para comprensión, Claude para razonamiento, Gemini para datos actualizados... Un Frankenstein de IAs. Lo llamé "Brillitos" porque... honestamente no recuerdo, probablemente estaba tomando algo con brillantina.

La arquitectura: Ambición nivel "qué podría salir mal"

El plan era simple (ja):

Usuario → Brillitos → Analizador de intención → Router IA
                                                   ↓
                             ┌─────────────────────┼─────────────────────┐
                             ↓                     ↓                     ↓
                         ChatGPT              Claude API            Gemini API
                             ↓                     ↓                     ↓
                             └─────────────────────┼─────────────────────┘
                                                   ↓
                                           Respuesta unificada

Decidí usar PHP porque... porque soy masoquista, aparentemente. También porque es lo que domino y no tenía tiempo de aprender otro stack. (Narrator: "No tenía tiempo" sería el tema recurrente de esta historia).

El stack técnico: PHP y MySQL contra el mundo

Base de datos MySQL con estructura "creativa":

CREATE TABLE conversations (
   id INT AUTO_INCREMENT,
   user_id VARCHAR(255),
   message TEXT,
   intent VARCHAR(100),
   selected_ai VARCHAR(50),
   response TEXT,
   confidence_score FLOAT,
   tokens_used INT,
   response_time FLOAT,
   created_at TIMESTAMP
);

CREATE TABLE ai_responses (
   id INT AUTO_INCREMENT,
   conversation_id INT,
   ai_provider VARCHAR(50),
   raw_response TEXT,
   processing_time FLOAT,
   cost DECIMAL(10,6),
   error_log TEXT
);

El sistema de routing era... ambicioso:

class AIRouter {
   private $providers = [
       general => chatgpt,
       reasoning => claude,
       current_events => gemini,
       code => chatgpt,
       creative => claude
   ];
   
   public function route($intent, $message) {
       // 200 líneas de lógica que parecían buena idea a las 2 AM
       $selectedAI = $this->selectOptimalAI($intent);
       return $this->queryAI($selectedAI, $message);
   }
}

Las APIs: El baile de los rate limits

Integrar múltiples APIs fue como hacer malabares con cuchillos en llamas:

class OpenAIClient {
   private $apiKey;
   private $rateLimiter;
   
   public function query($prompt) {
       try {
           $this->rateLimiter->check();
           
           $response = $this->client->post(https://api.openai.com/v1/chat/completions, [
               model => gpt-4,
               messages => [[role => user, content => $prompt]],
               temperature => 0.7
           ]);
           
           $this->logUsage($response);
           return $response;
           
       } catch (RateLimitException $e) {
           // Fallback a gpt-3.5-turbo como un plebeyo
           return $this->downgradeQuery($prompt);
       }
   }
}

Cada API tenía sus peculiaridades. Claude necesitaba formato XML. Gemini quería JSON específico. ChatGPT cambiaba sus modelos cada 2 semanas. Era un infierno de adaptadores y try-catch.

El problema real: Las 24 horas del día

Mi rutina diaria:

  • 6:30 AM - Despertar, café, revisar código de Brillitos
  • 8:30 AM - Trabajo (desarrollo web para una empresa)
  • 1:00 PM - Almuerzo mientras debuggeo
  • 3:00 PM - Trabajo otra vez
  • 6:30 PM - Salir corriendo a casa
  • 7:30 PM - Cenar con la familia (importante)
  • 9:00 PM - "Solo una horita para Brillitos"
  • 2:00 AM - "¿Cómo son las 2 AM?"

Sábados: Clases de actualización, proyectos freelance que SÍ pagan, intentar tener vida social.

Domingos: Brillitos... hasta que me di cuenta que necesitaba descansar o moriría.

Los features que sí logré implementar

No todo fue fracaso. Brillitos llegó a tener:

1. Análisis de intención multicapa: Podía distinguir entre 47 tipos diferentes de consultas. Overkill? Sí. Cool? También.

2. Memoria contextual: Recordaba conversaciones anteriores hasta por 30 días. La implementación era hacky pero funcionaba:

function getContextualMemory($userId) {
   $history = $this->db->query("
       SELECT message, response, created_at 
       FROM conversations 
       WHERE user_id = ? 
       AND created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
       ORDER BY created_at DESC 
       LIMIT 10
   ", [$userId]);
   
   return $this->summarizeContext($history);
}

3. Fallback inteligente: Si una IA fallaba, automáticamente probaba con otra. Si todas fallaban, al menos era honesto: "Disculpa, mi cerebro múltiple está teniendo problemas técnicos".

4. Dashboard de analytics: Podía ver qué IA respondía mejor a qué tipo de preguntas. Data nerd mode: ON.

El declive: Cuando la realidad golpea

Febrero 2024. Los costos de API se acumulaban. $50 al mes solo en pruebas. Mi novia (la paciente Liss) sugirió sutilmente que tal vez debería enfocarme en proyectos que generen dinero, no que lo consuman.

Marzo 2024. Un cliente grande necesitaba cambios urgentes. Otro proyecto personal pagado surgió. Brillitos quedó en pausa "temporal".

La "pausa temporal" se convirtió en abandono gradual. Los commits espaciados. El entusiasmo menguando. El grupo de Telegram donde testeábamos quedó en silencio.

Lo que aprendí (además de que necesito dormir más)

1. La complejidad crece exponencialmente: Manejar una API es fácil. Manejar 5 y hacerlas conversar es una pesadilla logística.

2. Los costos ocultos: No es solo el tiempo de desarrollo. Son las APIs, el hosting, el mantenimiento, la documentación que nunca escribes...

3. MVP significa MÍNIMO: Quise hacer todo. Debí empezar con ChatGPT solo y agregar complejidad gradualmente.

4. Los side projects necesitan tiempo real: No "tiempo que me sobre". Tiempo agendado, respetado, protegido.

El legado de Brillitos

Brillitos nunca brilló públicamente. Pero me enseñó más sobre arquitectura de sistemas, manejo de APIs y mis propios límites que cualquier curso.

El código sigue ahí, en un repositorio privado. A veces lo abro, miro el README optimista, y pienso "algún día". Pero siendo honesto, ese día probablemente no llegará. Y está bien.

No todo proyecto necesita conquistar el mundo. Algunos solo necesitan enseñarte que no puedes hacer todo, no al mismo tiempo, no solo.

¿Los chatbots siguen siendo estúpidos? La mayoría, sí. ¿Podría Brillitos haber sido diferente? Quizás. ¿Me arrepiento? Para nada.

Cada línea de código, cada noche de desvelo, cada "solo una feature más" fue parte del proceso. Brillitos no fracasó; simplemente me enseñó que a veces el mejor código es el que no escribes porque estás durmiendo.

PD: Si alguien quiere el código de Brillitos, está disponible. Solo prométeme que no lo terminarás a las 3 AM un martes. Tu yo del futuro te lo agradecerá.

PPD: Sigo odiando los chatbots tontos. Pero ahora entiendo por qué existen: porque hacer uno inteligente es condenadamente difícil.

C

Sobre Carlos Donoso

Full Stack Developer y AI Engineer apasionado por crear soluciones innovadoras. Me especializo en desarrollo web moderno, inteligencia artificial y automatización. Comparto conocimiento para ayudar a otros developers a crecer en su carrera.

Comentarios

Comparte tu opinión

0/1000 caracteres

No hay comentarios aún

Sé el primero en compartir tu opinión sobre este artículo.

¡Enlace copiado al portapapeles!