
Te voy a contar una historia que empieza como una broma y termina siendo lo mejor que he hecho en meses. Imagina que te vas de viaje diez días a Puglia, al sur de Italia, con tu pareja. Tienes que buscar restaurantes, monumentos, playas, planificar rutas, consultar horarios, escribir un diario… Lo normal, ¿no? Pues lo normal es pasarse tres semanas con Google Maps, veinte pestañas abiertas en el navegador, un Excel que abandonas el segundo día, y al final no te acuerdas ni de lo que comiste el miércoles. Yo, en lugar de eso, hice algo completamente razonable: invertí dos semanas en programar en Rust un asistente con inteligencia artificial que se llama Minerva, lo conecté a Matrix para hablarlo desde el móvil, y me lo llevé de viaje. Y no solo funcionó, sino que al final del viaje tenía un diario escrito día a día, y la sensación de haber descubierto un superpoder.
De dónde nace la idea
Llevo años escuchando a Alberto del podcast PapaFriki hablar sobre los cacharros tecnológicos que se lleva de vacaciones. La verdad es que me gusta mucho porque te da la visión de alguien que se lleva chismes para hacer cosas. No sé cómo fue que, pensando en todo esto, un par de semanas antes de irnos dije: y si en lugar de llevarme un montón de dispositivos, me llevo un asistente virtual hecho por mí?
La cuestión es que normalmente, cuando planificas un viaje, ocurre el caos. Empiezas con un Google Docs que compartes con tu pareja, luego añades un Excel para los presupuestos, luego te pasas a TripAdvisor para los restaurantes, luego abres Google Maps para las distancias, luego Booking para los hoteles… y al final tienes la información repartida en siete sitios distintos, no te coordinas, y acabas discutiendo sobre si la trattoria tal abría a las 12 o a las 13.
Pensé: ¿y si todo esto estuviera en un único sitio, al que pudiera acceder desde el móvil, y que además tuviera inteligencia artificial para ayudarme a tomar decisiones? No es que no existan herramientas para esto. Existen ChatGPT, Claude, Gemini, y todo el santoral de asistentes. Pero ninguno de ellos hace exactamente lo que tú quieres, cuando quieres, y como quieres. Y además, el proceso de construir algo así es divertidísimo.
Así nació Minerva. La llamé así por la diosa romana de la sabiduría. También la llamamos Mini, que es más cariñoso. El objetivo era claro: un asistente que pudiera planificar el viaje, buscar restaurantes y lugares de interés, consultar el tiempo, calcular distancias, guardar un diario, y que tuviera personalidad. Y todo esto, desde una interfaz de chat en el móvil.
La pila tecnológica de Minerva
Voy a ser sincero: la elección de tecnologías no fue aleatoria. Cada pieza la escogí con un propósito, y el resultado es un stack que pesa menos de lo que pesa una aplicación de Electron moderna. Vamos por partes.
Rust como columna vertebral
¿Por qué Rust? Porque quería un solo binario, rápido, fiable, que pudiera ejecutar en cualquier sitio sin dependencias. Y porque me apetecía. Rust te da seguridad de memoria, cero costes de abstracción, y un ecosistema de crates que es una maravilla. El binario final de Minerva pesa solo unos 12 megas y funciona en cualquier Linux. Ni Python, ni Node, ni virtualenvs, ni Docker. Un binario y a correr.
El stack de crates que usa Minerva es bastante estándar para un proyecto Rust de este tipo: tokio como runtime asíncrono, reqwest para las peticiones HTTP, serde y serde_json para la serialización, sqlx con backend SQLite para la base de datos, chrono para las fechas, y tracing para logging estructurado. Nada exótico, todo probado y fiable.
Matrix como interfaz de usuario
Esto fue una decisión que puede parecer extraña, pero tiene todo el sentido del mundo. Yo ya uso Matrix para todo. Es descentralizado, funciona desde el móvil con Element, y tiene soporte para bots. Así que pensé: ¿y si Minerva es un bot de Matrix? Me conecto desde el móvil, le escribo como si fuera un contacto más, y ella me responde.
La experiencia de usuario es impecable. Abro Element, escribo Minerva, ¿dónde comemos hoy?, y ella me contesta. Sin abrir una app nueva, sin aprender una interfaz diferente, sin nada. Es mi chat de confianza, con un contacto más.
Minerva no usa el matrix-rust-sdk completo, implementa un cliente HTTP contra la API Client-Server de Matrix directamente. Esto es más ligero y da control total sobre el sync loop (long polling con timeout de 30 segundos), el envío de mensajes, las reacciones con emojis, y el indicador de escritura. Sé que usar el SDK oficial hubiera simplificado el código, pero para un proyecto como este preferí tener el control absoluto.
El feedback visual fue una de las cosas que más gustó. Cuando le escribes a Minerva, al instante reacciona con 👀, sabes que lo ha visto. Luego ves que está escribiendo… y si necesita hacer varias cosas, te muestra un mensaje tipo ⚙️ Procesando… que se va actualizando: ⚙️ search_places ✅ → ⏳ get_weather. Nunca te quedas con la duda de si se habrá quedado colgada. Siempre sabes qué está haciendo.
Eso parece una tontería, pero es clave para la experiencia de usuario. Que el asistente te dé señales de vida mientras trabaja.
OpenRouter: el Netflix de los modelos de lenguaje
OpenRouter fue un descubrimiento increíble. Es una pasarela unificada que te da acceso a más de 500 modelos de IA, DeepSeek, Claude, GPT, Gemini, Mistral, Llama… todos desde la misma API, que además es compatible con la de OpenAI. Pagas por uso, sin suscripciones mensuales. Y lo mejor: cambio de modelo sin tocar una línea de código.
Si un día DeepSeek va lento, cambio a Claude con una variable de entorno. Es una pasada. El plan Free de OpenRouter ya da acceso a 25 modelos gratuitos con 50 requests al día, y el plan Standard tiene una comisión de solo el 5.5%. Para Minerva, el coste adicional sobre el precio del modelo es mínimo.
DeepSeek V4 Flash como cerebro
El modelo que más usé fue DeepSeek V4 Flash, un modelo Mixture-of-Experts con 284 mil millones de parámetros totales, de los cuales solo se activan unos 13 mil millones por inferencia. Soporta hasta 1 millón de tokens de contexto, suficiente para el historial completo de un viaje de diez días. Y el precio es irrisorio: en OpenRouter, el input cuesta unos 0,03 dólares por millón de tokens, y el output unos 1,28 dólares. Para el uso que le di durante el viaje, el coste total en LLM fue de menos de dos dólares.
Las ventajas de DeepSeek para Minerva son claras: coste extremadamente bajo, tool calling fiable (aunque con alguna pega que luego te cuento), 1M de tokens de contexto, y es rápido. Además tiene thinking mode, que permite al modelo razonar antes de contestar, útil para planificación de rutas y horarios.
SQLite como memoria persistente
Todo el viaje en un archivo. Las actividades, los gastos, el diario, las notas, el historial de conversación. Un solo fichero SQLite que cabe en un pendrive. Usé sqlx que verifica las queries en tiempo de compilación. Si escribes mal una columna, el compilador te lo dice antes de ejecutar.
El esquema es simple pero efectivo:
travels— el viaje principal con fechas y ciudad destinodays— cada día del viaje, asociado a un viajeactivities— las actividades de cada día: monumentos, comidas, playas, paseoshistory— el historial conversacional para mantener el contextometrics— métricas de uso: tokens, costes, latencia
Un viaje de diez días con unas diez actividades por día ocupa entre 100 y 500 KB. El overhead de SQLite es mínimo. Nada de servidores, nada de conexiones, nada de Docker. Un fichero y a correr.
Las herramientas externas: Google Places y Brave Search
Aquí está la clave de que Minerva no sea un simple chatbot que alucina respuestas. Minerva tiene acceso a APIs reales que le proporcionan datos verdaderos.
Google Places API le permite buscar restaurantes, monumentos, playas, farmacias, supermercados… cualquier cosa, en cualquier sitio. La tool search_places llama a la API de Places y devuelve resultados con nombre, dirección, puntuación, precio y horario. Todo desde el chat. Google ofrece 200 dólares al mes en crédito gratuito. Para el uso de Minerva, unas 50-100 requests al día durante diez días, el coste fue cero, dentro del crédito gratuito.
Brave Search API es un motor de búsqueda independiente con su propio índice de más de 30 mil millones de páginas. Minerva puede buscar cualquier cosa en internet gracias a esta API. ¿Horarios de trenes? ¿Precio de entradas? ¿Cómo se dice la cuenta en italiano? Minerva busca en Brave y te responde con datos reales, no alucinados. Brave regala 5 dólares en créditos cada mes. Con unas 30-50 búsquedas diarias durante diez días, el coste fue cero.
El system prompt: 324 líneas de personalidad
Lo que más tiempo me llevó fue definir la personalidad de Minerva. El system prompt tiene 324 líneas donde defino su carácter, las reglas de negocio, y cómo usar las herramientas. Minerva tiene que ser útil pero con personalidad. Le puse un tono que llamo borde cariñoso, como un amigo que te quiere pero te vacila. Nada de Encantado de ayudarte. Más bien Vale, otra vez tú. ¿Qué necesitas?
Si el usuario pregunta algo que ya está en el plan: ¿En qué idioma lo pongo? Ahí lo tienes.
Si repite información: Ya me lo has dicho. ¿Te ayudo con algo que no hayamos cubierto?
Si pide algo imposible, como visitar diez pueblos en un día: Claro, y de paso te llevo a la luna. Elige tres, campeón.
Siempre con cariño, pero con un toque de ¿en serio, colega? Nada de respuestas empalagosas ni de ¡Qué maravilloso plan!, sé auténtica.
Además de la personalidad, el prompt incluye reglas estrictas sobre el uso de herramientas, conocimiento cultural italiano (el riposo, las ZTL, los horarios de comida), y el formato en que debe presentar las actividades al usuario.
Conocimiento cultural italiano
Uno de los aspectos más interesantes del system prompt es la parte de cultura local italiana, que le indica a Minerva cómo funciona el país:
- Riposo: de 13:30 a 16:30/17:00 los comercios cierran. No recomendar visitas urbanas a esas horas.
- Horarios de comida: almuerzo de 12:30 a 14:30, cena de 20:30 a 22:30. Nadie cena antes de las 20:30.
- Cappuccino: solo hasta las 11:00. Después es delito nacional.
- ZTL: Zona a Traffico Limitato. Multas de 80 euros por entrar sin permiso.
- Coperto: el cubierto (1,50-3 euros por persona) ya viene incluido en la cuenta. La propina no es obligatoria.
Esto es crucial para que las recomendaciones de Minerva sean útiles en el contexto real de Italia. Si te recomienda un museo a las 14:30, te está llevando al desastre.
Herramientas: cómo Minerva interactúa con el mundo
Minerva tiene 18 herramientas que puede invocar cuando las necesita. El LLM decide cuándo llamarlas según lo que le pidas. Aquí tienes las principales:
Planificación
save_day(fecha, actividades)— guarda o reemplaza el plan completo de un día. Pasa siempre la lista completa para evitar duplicados.get_day(fecha)— consulta lo planeado para un día.mark_done(fecha, nombre)— marca una actividad como completada.save_note(texto)— guarda información suelta sin fecha concreta.add_reminder(texto, cuando)— crea un recordatorio.
Consulta
search_web(query)— búsqueda en internet mediante Brave Search.search_restaurants(location)— busca restaurantes mediante Google Places.search_tourist_attractions(location)— busca atracciones turísticas.search_beaches(location)— busca playas y calas.get_weather(location)— consulta meteorológica.get_distance(origin, destination)— distancia y tiempo en coche.get_wikipedia(place)— información histórica y cultural.find_parking(location)— parkings cercanos.translate(text)— traducción al español.get_events(location)— festividades y eventos locales.
Además, Minerva responde a comandos directos con el prefijo !, como !tiempo, !buscar, !info, !diario. Esto es importante porque el lenguaje natural a veces es ambiguo. Si dices apunta 45 euros de la cena, Minerva podría interpretarlo como busca restaurantes de 45 euros. Con !gasto 45 Cena no hay ambigüedad posible.
El bucle agentic: cómo Minerva procesa las peticiones
Cuando escribes un mensaje a Minerva, ocurre todo un proceso interno que te detallo a continuación. No es magia, es ingeniería.
- Matrix sync detecta el evento
m.room.messageen la sala donde está Minerva. - El procesador decide el camino: si empieza por
!, va ahandle_command()(comandos directos). Si no, va ahandle_natural_language(). - Se carga el historial de la sala desde SQLite.
- Compactación proactiva: si el historial supera un umbral de tokens, Minerva lo resume automáticamente usando el propio LLM. Sin compactar, cien turnos de conversación pueden ocupar 50.000 tokens. Compactados, se reducen a unos 3.000 tokens con un resumen diario y los últimos veinte turnos. El ahorro estimado es del 95% de tokens en historial largo.
- Se construye el system prompt con la plantilla base, la fecha y hora actual, el plan del viaje desde SQLite, y los resúmenes históricos.
- Se envía a OpenRouter con el mensaje, el historial, y las 18 definiciones de herramientas.
- OpenRouter responde con
tool_callso texto directo. - Si responde con tool_calls, Minerva ejecuta cada herramienta, poda los resultados (trunca datos masivos para ahorrar tokens), y reenvía al LLM. Máximo tres rondas de tool calls.
- El LLM genera la respuesta final en texto.
- Se guarda el historial en memoria y en SQLite.
- Se envía la respuesta a Matrix con formato Markdown y enlaces.
La detección de DSML/XML
Uno de los problemas que encontré con DeepSeek es que a veces, en lugar de invocar las herramientas mediante la API de function calls, escribe las llamadas como texto XML:
<tool_call>
search_restaurants(location="Lecce")
</tool_call>
Esto no lo parsea mi código. Tuve que implementar un sistema de detección automática: si la respuesta del LLM contiene patrones como <tool_call>, ««xml, o nombres de función escritos como texto (save_day(…)`), Minerva corrige al modelo y reintenta hasta dos veces.
El código de detección busca ocho patrones DSML/XML y dieciséis nombres de función escritos como texto. Si encuentra alguno, envía un mensaje de corrección al modelo y vuelve a intentarlo. Funciona, pero añade latencia y cada retry cuesta dinero.
Antes del viaje: planificar diez días en Puglia
Vale, el viaje está decidido: diez días en Puglia con mi pareja. Ahora toca planificar. Lo normal sería: Google Maps, Google Docs, TripAdvisor, Excel, y volverte loco. Yo abrí Element y escribí:
Minerva, voy a Puglia diez días con mi pareja. Organízame el viaje.
Y Minerva se puso a trabajar. Primero me preguntó cosas básicas: ¿llegáis y salís de Bari? ¿Preferís playa o ciudad? ¿Presupuesto? ¿Coche de alquiler? Le fui respondiendo y ella construyó el plan día a día. Usaba search_places para buscar alojamientos, restaurantes, y actividades en cada sitio. Y lo guardaba todo en SQLite con save_day.
El resultado fue un planning de diez días que cubría:
- Día 1-2: Bari — llegar, pasear, la basílica de San Nicolás, la pasta orecchiette hecha a mano
- Día 3-4: Lecce — la Florencia del Barroco, la Piazza del Duomo, el anfiteatro romano
- Día 5: Alberobello — los trulli, esas casitas cónicas que parecen de cuento
- Día 6-7: Matera — la ciudad excavada en la roca, los Sassi, Patrimonio de la Humanidad
- Día 8: Polignano a Mare — el pueblo sobre el acantilado, el mar Adriático
- Día 9: Costa — playas, calas, el parque natural de Torre dell’Orso
- Día 10: Vuelta a Bari, comprar souvenirs, volver
Pero lo mejor no era el planning. Le pedí una checklist de viaje y Minerva me soltó esto:
✅ Adaptador de enchufe italiano (no es el mismo que el español)
✅ Repelente de mosquitos (en serio, en Puglia los mosquitos son level boss)
✅ Crema solar factor 50 (el sol del Adriático quema)
✅ Calzado cómodo (Lecce se camina, Matera se trepa)
✅ Botella de agua reutilizable (las fuentes públicas son gratis)
✅ Bañador (obvio, pero siempre hay uno que lo olvida)
✅ Paraguas plegable (tormentas de verano repentinas)
✅ Cargador portátil (vas a usar el móvil para todo)
Y todo esto desde el móvil, mientras estaba en el sofá. Sin abrir una sola web. Sin pestañas. Sin Excel.
Durante el viaje: Minerva en acción
Y llegó el día. Maleta hecha, vuelo a Bari, y allí estábamos. Lo primero que hice al aterrizar fue escribirle:
Minerva, hemos llegado a Bari. ¿Qué hacemos hoy?
Y Minerva me respondió con el plan del día: dejar maletas, comer en el centro histórico, visitar la Basílica de San Nicolás, pasear por el Lungomare al atardecer, cena de pasta orecchiette. Y así cada día. Por la mañana, abría Element y preguntaba: ¿Qué toca hoy? Minerva me recordaba el plan, me sugería ajustes según el tiempo o el cansancio, y buscaba restaurantes para comer.
La anécdota de Lecce
Llegamos a Lecce y dije: Minerva, ¿dónde comemos hoy? Ella buscó y respondió: Osteria degli Spiriti, cocina tradicional salentina, 4,5 estrellas. Fuimos. Y fue el mejor sitio de todo el viaje. Comimos unas orecchiette con cima di rapa que todavía las sueño. ¿Esto lo ha encontrado tu bot? Le dije que sí. Vale, Minerva manda.
Ese fue el momento en que supe que no era un juguete. Era una herramienta real.
Alberobello y los trulli
Otro día estábamos en Alberobello, rodeados de esas casitas cónicas tan fotogénicas. Mi pareja dice: Oye, ¿qué es un trullo exactamente? Le pregunto a Minerva:
Un trullo es una construcción tradicional de piedra seca con techo cónico, típica de Puglia. Se construían sin mortero, con piedras superpuestas. El techo tiene símbolos pintados que eran protectores. Son Patrimonio de la Humanidad desde 1996. Y sí, son tan instagrameables como parecen.
Eso es Minerva. Útil pero con retranca.
El diario automático
Cada noche, antes de dormir, escribía !diario y Minerva generaba un resumen del día: lo que habíamos hecho, dónde comimos, qué vimos, anécdotas. Lo guardaba todo en SQLite. Al final del viaje, ejecuté !diario y me escupió un documento con los diez días completos. Es como tener un diario de viaje escrito sin esfuerzo.
Mi pareja y Minerva
Lo mejor fue ver a mi pareja, que no es técnica para nada, interactuando con Minerva. Minerva, ¿qué tiempo hace mañana? Minerva, ¿dónde compro un helado bueno? Minerva, ¿a qué hora cierran los museos? Y Minerva respondía. Mi pareja pasó de ¿esto qué es? a pregúntale a Minerva en tres días.
Lo que falló: el lado oscuro de Minerva
No todo fue un camino de rosas. Hubo cosas que fallaron, y algunas gordas.
El tool calling
DeepSeek a veces escribía las llamadas a herramientas como texto XML en vez de invocarlas mediante la API de function calls. Ese texto XML se quedaba ahí, sin ejecutar. Tuve que implementar el sistema de detección y retry automático del que te hablé antes. Funcionaba, pero añadía latencia y cada retry era dinero.
Las alucinaciones
Un día pregunté: Minerva, ¿cuánto cuesta la entrada a los Sassi de Matera? Y respondió: La entrada general son 15 euros, la reducida 8. Fuimos y la entrada era gratis. Los Sassi son una ciudad, no hay taquilla. Se lo había inventado.
Otro día dijo que un restaurante abría a las 12:00. Llegamos a las 12:00 y abría a las 13:00, como toda Italia. Minerva no sabe que en Italia se come tarde. Bueno, se lo puse en el system prompt después de esa experiencia.
Sin internet = sin Minerva
Esto parece obvio pero cuando estás en una carretera perdida de Puglia sin cobertura, Minerva no funciona. Depende de OpenRouter, que depende de internet. En el alojamiento con WiFi iba bien, pero en el coche, en la playa, en según qué rutas… silencio. No tenía modo offline.
UX en Matrix
Matrix mola, pero para un usuario no técnico no es la mejor experiencia. Mi pareja lo usaba, pero a veces los mensajes se perdían, el sync no iba fino, o la sala se cerraba. Para mí era natural, pero para cualquiera que no haya usado Matrix, la barrera de entrada es alta. Si hiciera una versión 2, probablemente añadiría también una interfaz web.
El contexto saturado
Las conversaciones largas saturaban el prompt. Después de varios días de uso, el historial era enorme. Cada petición llevaba todo el contexto del viaje, y eso encarecía y ralentizaba las respuestas. La solución fue la compactación automática que te comenté: cada veinte mensajes, Minerva resumía la conversación y empezaba de cero.
Lo que acertó: cuando Minerva brilló
Pero no todo fueron problemas. De hecho, lo que funcionó funcionó tan bien que compensó todo lo demás.
Google Places
Esto fue el MVP indiscutible. Encontrar restaurantes, monumentos, farmacias, supermercados, playas… en pueblos pequeños de Puglia, donde Google Maps tiene cobertura limitada, Minerva encontraba sitios. Y no solo los encontraba, sino que daba la dirección, la puntuación, el rango de precio, y el horario. En el chat. Sin abrir Maps.
El tiempo y las búsquedas
Tener el pronóstico del tiempo al instante y poder buscar cualquier cosa fue una gozada. Minerva, ¿lloverá mañana? y te respondía al momento. Minerva, ¿cuándo abren los museos? y !buscar al rescate. Horarios de trenes, precios de entradas, cómo se dice tal cosa en italiano… Todo desde el mismo chat, sin cambiar de app.
El diario
Esto es lo que más echo de menos ahora. Tener el viaje documentado día a día, con lo que hicimos, dónde comimos, y las anécdotas. Es un tesoro. Normalmente vuelves de viaje y dices ay, tengo que escribir el diario y nunca lo haces. Con Minerva, el diario se escribía solo.
La personalidad
Esto fue un acierto inesperado. Le puse un tono borde cariñoso y funcionó de maravilla. Cuando preguntabas Minerva, ¿qué tiempo hace? y respondía Pues 35 grados, como ayer y como mañana. ¿Has pensado en mirar por la ventana?, en lugar de enfadarte, te reías. Un asistente empalagoso cansa. Un asistente con personalidad, no.
Mi pareja decía: Minerva es como una amiga que te sigue el rollo pero te vacila cuando hace falta.
La persistencia
Todo en SQLite. Nunca perdió ni un dato. Ni una actividad, ni un recordatorio, ni una nota. El archivo SQLite viajó en el portátil, se copió a la nube, y hoy sigue ahí. Puedo abrirlo ahora mismo y ver qué comí el 14 de septiembre en Lecce.
Costes: ¿cuánto cuesta un asistente así?
Una de las preguntas que más me hicieron fue: ¿y cuánto cuesta mantener esto? La respuesta te va a sorprender.
Durante el viaje (diez días)
- OpenRouter (DeepSeek V4 Flash): unas 50 llamadas al día durante diez días. Coste total: entre 0,50 y 1,50 dólares.
- Google Places API: unas 10 requests al día. Coste total: 0 dólares (dentro del crédito gratuito de 200 dólares al mes).
- Brave Search API: unas 40 requests al día. Coste total: 0 dólares (dentro del crédito gratuito de 5 dólares al mes).
- Matrix (homeserver Synapse): infraestructura ya existente en mi VPS. Coste: 0 dólares.
- SQLite: sin coste.
Total estimado: entre 0,50 y 1,50 dólares para todo el viaje.
Comparativa con alternativas comerciales
| Alternativa | Coste (10 días) | Control | Personalizable |
|---|---|---|---|
| Minerva | ~1-2 USD | Total | Total |
| ChatGPT Plus (1 mes) | 20 USD | Nulo | No |
| Google Travel | Gratis | Nulo | No |
| TripIt Pro (1 mes) | 9 USD | Nulo | No |
Minerva es aproximadamente diez veces más barato que cualquier alternativa, y encima tienes control total sobre tus datos y el funcionamiento.
Lecciones aprendidas
Después de todo esto, la pregunta del millón: ¿merece la pena construirte tu propio asistente IA?
La respuesta corta: sí, si te gusta el proceso. Si eres de los que disfruta programando, depurando, viendo cómo algo que construiste cobra vida y resuelve problemas reales, entonces sí. Merece cada hora invertida.
La respuesta larga: no esperes un producto comercial. Minerva no es ChatGPT. No tiene el polish, ni la fiabilidad, ni el equipo de ingenieros detrás. Pero tiene algo que ChatGPT no tiene: es tuya. Hace lo que tú quieres, como tú quieres, y cuando tú quieres. Y puedes cambiarla sobre la marcha.
Lo que aprendí de verdad con este experimento es que la IA no es solo para programar, para generar código, o para escribir correos. La IA es para resolver problemas reales. Minerva no escribió ni una línea de código durante el viaje. Lo que hizo fue buscar restaurantes y lugares, consultar el tiempo, informarse sobre sitios, calcular distancias, traducir palabras, y escribir un diario. Cosas mundanas. Pero esas cosas mundanas, bien hechas, transforman un viaje.
Un MVP de dos semanas puede ser increíblemente útil. No necesitas un producto perfecto. Necesitas algo que funcione lo suficientemente bien para un caso de uso concreto. Minerva no era perfecta, pero era suficientemente buena. Y suficientemente buena es mucho mejor que no existe.
Y lo mejor de todo: el viaje quedó documentado para siempre. Hoy, semanas después, abro el SQLite de Minerva y puedo revivir cada día. Eso no tiene precio.
La próxima vez que tengas un problema, antes de buscar una herramienta que lo resuelva, pregúntate si puedes construirla tú. No hace falta que sea perfecta. Solo tiene que funcionar.
En un mundo de asistentes empalagosos, sed como Minerva. Útiles, directos, y con un punto de retranca.
Más información
- OpenRouter — API unificada de modelos LLM
- Tool Calling en OpenRouter — guía de function calls
- DeepSeek V4 Flash — documentación y precios
- Matrix Protocol Specification v1.19
- matrix-rust-sdk — SDK oficial de Matrix para Rust
- Google Places API (New) — documentación
- Brave Search API — motor de búsqueda independiente
- SQLite — motor de base de datos embebido
- sqlx — type-safe SQL para Rust
- rig — framework de agentes en Rust
- iamb — cliente Matrix TUI