Hoy volvemos a traer un nuevo post sobre Inteligencia Artificial. Si en este post que subimos hace unos días buscábamos presentar las características principales de cada modelo y su implementación, el enfoque de hoy es distinto. El propósito de este post no es el de hacer listas interminables de características, sino ver el valor práctico real en proyectos concretos.
Vamos a pedirle a cada modelo que desarrolle una aplicación en las áreas donde estos modelos son fuertes. Se valorará que la implementación funcione a la primera, tiempo de las respuestas y en la implementación, si presenta bugs, si estos bugs impedirían la ejecución de la aplicación completamente o no…
Esto es lo que haremos:
- ChatGPT es bastante potente cuando se usa como chatbot gracias a su capacidad de generación de texto. Le pediremos un simulador de entrevistas de trabajo para que candidatos y entrevistadores las practiquen.
- Claude Code se instala dentro del proyecto y tiene capacidad de comprender todo el contexto de la aplicación así como la creación, modificación y eliminación de archivos, con lo que sería interesante usarlo para convertir un proyecto simple en uno más complejo. Le daremos una web app simple con errores y malas prácticas pero que funcione. Tendrá que optimizarla y también hacerla escalable, adaptando su arquitectura mediante módulos.
- Gemini puede procesar una gran cantidad de datos, lo que puede tener un impacto indirecto positivo en el tiempo que emplee para generar las respuestas, y puede convivir en Cloud con otras herramientas de Google. Se le pedirá un survival rpg de toma de decisiones, usando Google Cloud para conectar la aplicación a Google Maps (y usar puntos de interés de la ubicación seleccionada dentro de la historia) y Google Sheets (para guardar y modificar las estadísticas de salud, hambre, sed… de los jugadores de la partida por cada ronda).
Metodología: pasos previos y requerimientos
Entorno de desarrollo
Creé un nuevo proyecto en VSCode e instalé Vite para generar el entorno del frontend y correr las aplicaciones desde una web en local, para cada modelo. Una vez ya se instalaron las dependencias de npm y creados los archivos básicos para hacer funcionar la aplicación web, cada modelo comenzó a trabajar sobre el mismo punto de partida y en las mismas condiciones.
KPIs a analizar
- Tiempo empleado en responder
- Tiempo total de la implementación
- Número de prompts
- Nº de intentos para que la aplicación funcione
- Incidencias
- Puntos a favor
ChatGPT: un asistente conversacional para practicar entrevistas de trabajo

Descripción del proyecto
ChatGPT es bueno en casi todas las aristas, pero un área donde destaca sería en la redacción y capacidad de convertirse en un chatbot conversacional. Entonces, vamos a pedirle un simulador de entrevistas de trabajo. El usuario tendrá que definir si es el entrevistador o el candidato, definir su área del marketing digital y comenzar a dialogar con el modelo.
A los candidatos se les hará preguntas típicas de entrevistas, tendrán que responder y luego la IA valorará su respuesta y hará una rúbrica. A los entrevistadores se les presentarán casos prácticos. Para una determinada pregunta se dará una respuesta y el entrevistador tendrá que valorar si el candidato sería contratado o no, y dar los motivos detrás de esta decisión. Luego, GPT valorará dichos motivos desde el punto de vista de RRHH.
Experiencia en la implementación
En un primer momento, aunque ChatGPT comprendió bien el objetivo que se le pedía, no me devolvía más que respuestas diciéndome lo que iba a hacer y pidiéndome que si me parecía bien, me daría los códigos. Necesitó de 6 intentos seguidos de mi parte diciéndole que sí, que me los diera. Me explicó que suponía mucha carga de código y no podía dármelo, con lo que le pedí que fuera dándome los códigos archivo por archivo, lo cual funcionó y pude comenzar.
Durante la implementación, perdió en dos ocasiones la referencia de la estructura de carpetas del proyecto, lo que me obligó a tener que ir adaptando las rutas manualmente.
Un aspecto que me pareció llamativo fue que el archivo main.js, que me lo dió al principio de la conversación, volvió a actualizarlo al final ya que me comentaba que si no la aplicación se rompería.
Me pareció curioso porque como tal ya había cumplido con la tarea de darme dicho archivo y tampoco se le pidió que revisara si archivos previos podían entrar en conflicto con los nuevos. No tenía constancia de que la aplicación estuviera rota porque todavía no se había probado, con lo que significa que en segundo plano estuvo en todo momento revisando que existiera coherencia entre los archivos, incluso si ya se habían desarrollado. Hizo estos ajustes en varias ocasiones.

Logra montar la aplicación a la primera y no presenta bugs graves, pero el simulador no funcionaba correctamente ya que las valoraciones no eran realistas (contesté ‘a’ a una pregunta y fui valorado con un 7). Se le pidió que en lugar de soltar respuestas predeterminadas se conectase a la API de ChatGPT y que fuese este mismo quién valide a los candidatos o a los entrevistadores. Tras este cambio, aunque todavía quedaba algún ajuste pendiente, la experiencia general mejoró bastante.

Valoración
- Tiempo empleado en responder: 24 minutos 19 segundos
- Tiempo total de la implementación: 1h 30min aproximadamente
- Número de prompts: 28
- Número de intentos para que la app funcione:
- Primer intento: necesitó sólo este intento para que la aplicación funcionara (otra cosa es que las valoraciones de las respuestas a las preguntas que se hicieran tuvieran o no sentido).
- Segundo intento: se le pide que se conecte a la API de ChatGPT y que sea éste quien realice las valoraciones. La aplicación mejoró bastante.
- Incidencias:
- Resistencia a dar una gran cantidad de código en una tirada.
- Errores en el enrutado de los archivos.
- Refactorizaciones no solicitadas.
- Errores a la hora de generar las valoraciones.
- Necesidad de trasladar manualmente los archivos, así como la modificación y creación de éstos.
- Puntos a favor:
- La aplicación funcionó desde el primer momento.
- Sin errores críticos en ningún momento.
- Fue revisando la coherencia entre los distintos archivos y su funcionalidad en todo momento sin necesidad de que lo pidiese.
- Mejoró tremendamente al añadir la API de OpenAI, las conversaciones parecían naturales y los insights y valoraciones tuvieron bastante más sentido.
Claude Code: optimizar y refactorizar la lógica del proyecto

Descripción del proyecto
Como ya vimos Claude Code vive dentro del proyecto y su gran ventaja reside en la capacidad de entender todo el contexto de tu código, creación y modificación de archivos, optimización y mejoras…
Para este caso, le he pedido a ChatGPT (para que Claude no caiga más tarde en sesgos) que desarrolle una aplicación web de reserva de viajes, pero realizada por un desarrollador que acaba de comenzar a aprender. Deberá incorporar fallos, duplicidades y malas prácticas, pero sin hacer que esto rompa la aplicación.
Es una SPA con estilos simples y un formulario que recoge los datos de la reserva. Esos datos se envían al localStorage y, cuando existan valores en el local, la aplicación leerá los datos y los pintará en el front. Así se vería:

Luego, instalaremos Claude Code en el proyecto y le diremos que el proyecto fue escrito por un desarrollador junior y que dicho proyecto escalará ya que deberá subirse a producción. Claude Code tendrá que actuar como desarrollador senior y buscar los fallos, optimizaciones y aplicar buenas prácticas, así como adaptar la arquitectura a módulos.
También, se le pedirá que haga el calendario dinámico en lugar de mostrarlo como campo de formulario y que la lista de ciudades (solo hay 5 ciudades listadas) lo sustituya por un buscador que escuche en tiempo real lo que escribe el usuario para que vaya filtrando las ubicaciones y proponiéndole resultados al usuario, con lo que como mínimo también tendrá que instalar dos dependencias externas para incorporar estas funcionalidades (esto no se le mencionará en el prompt).
Experiencia en la implementación
La experiencia en Claude Code fue bastante distinta a los otros modelos. Al estar integrado dentro del proyecto, comenzó haciendo una auditoría de la aplicación, me la definió y también específico donde se encontraban los puntos de mejora y propuso un planning de acción para el que me pidió confirmación.
Tras tenerla, comenzó libremente a crear los archivos, añadir sus códigos, todo de manera autónoma, sin ninguna necesidad de mi lado más que responder cuando este me preguntaba qué quería que hiciera en algunos puntos. Tras este proceso, logró desarrollar la aplicación a la primera en unos 6 minutos aproximadamente.
No obstante, se le olvidó incorporar el calendario dinámico y también el buscador que va filtrando y sugiriendo ciudades al usuario en función de lo que va escribiendo, aunque sí que adaptó la arquitectura a módulos.
Necesitó un intento más para el calendario y otro más para el buscador, instalando también de manera autónoma.

Me sorprendieron dos cosas:
- Claude era capaz de activar la aplicación por su cuenta, sin necesidad de que yo lo hiciera, para comprobar que funcionaba bien. Esto es bastante distinto a revisar simplemente el código. Claude activó, ejecutó la aplicación y luego la depuró mientras se encontraba en funcionamiento.
- La otra cuestión fue que permite realizar preguntas sin paralizar la ejecución de la respuesta. Esto no lo tienen los otros modelos, donde debes pausar obligatoriamente la respuesta (y luego volverla a generar) si tienes alguna duda en concreto. Esto es muy útil especialmente si la respuesta va a llevar tiempo, yo al menos es algo que siempre eché en falta en otros proveedores.

Valoración
- Tiempo empleado en responder: Alrededor de 10 minutos 16 segundos
- Tiempo total de la implementación: el mismo tiempo que el empleado en responder, ya que iba implementando a la vez.
- Número de prompts: como tal solo escribí 3 prompts: el prompt inicial y otros dos cuando la aplicación falló o le faltaba algo. Luego, mientras Claude iba desarrollando me hacía preguntas de control para saber qué camino tomar, lo que a fin de cuentas también son prompts aunque no fueran escritos por mí. En total fueron unos 13.
- Nº de intentos para que la aplicación funcione: necesitó tres intentos para funcionar con los elementos que se le solicitó: uno para la optimización y refactorización, otro para arreglar inconsistencias en el idioma que generó que la API dejase de funcionar por no soportar el español (esto rompió la aplicación) y el último para generar el filtrado de las ciudades.
- Incidencias:
- Olvidó algunos de los requisitos que se le pidieron.
- Ajustes posteriores rompieron código desarrollado previamente, necesitando nuevos cambios.
- Puntos a favor:
- Ha sido de lejos el que menos ha tardado.
- Comprensión global del proyecto.
- Ha realizado voluntariamente un diagnóstico de situación, para luego hacer un planning para la implementación.
- Casi o ninguna necesidad de intervenir en el proceso.
- Ha dado feedback constante de qué iba a hacer, por qué y cómo. En todo momento, ha ido preguntando qué camino tomar.
- Posibilidad de activar la aplicación por su cuenta y depurarla ya en funcionamiento, sin intervención.
- Posibilidad de realizarle preguntas sin paralizar la actividad que se encuentra haciendo.
Gemini: un survival rpg de toma de decisiones usando el ecosistema Google
A Gemini se le ha pedido que desarrolle un rpg ambientado en un apocalipsis zombie para 5 jugadores. La web app se conectará a Google Maps y buscará los puntos de interés de la ubicación que se marque, y con eso creará una historia donde, por rondas, cada usuario tendrá que ir tomando decisiones para avanzar y sobrevivir.
Las repercusiones de las acciones tendrán efectos en los stats de los jugadores (hambre, sed…), los cuales se irán actualizando en un Google Sheet tras cada ronda. La idea es intentar desarrollar una aplicación que conecte con varias de las aplicaciones que Google ofrece.
Para desarrollar esta app, se ha necesitado un proyecto en Google Cloud para conectar con las APIs de Maps y Google Sheet, con lo que al no estar relacionado con la generación de la app como tal no va a ser tenido en cuenta a la hora de valorar esta implementación en términos de tiempo.

En un primer momento, me sorprendió que este modelo sí que devolvió todos los códigos en una primera tirada (GPT no quiso hacerlo y me los dio faseados, y Claude fue trabajando archivo por archivo) y todo esto sin llegar al minuto, pese a que este proyecto era bastante más complejo que los anteriores.
Logró que la aplicación se lanzara de primeras, aunque se encontraron bugs críticos que impedían que la aplicación funcionase: no se podía empezar a jugar ya que la aplicación obligaba a clicar una ubicación para marcar dónde se desarrollaría la historia, y este clic al ocurrir dentro del iframe de Google Maps, pues no se registraba en la aplicación y por tanto no podía iniciarse.
Tras varios intentos sin éxito, se le pidió que en lugar de seleccionarlo vía clic desarrollase para que fuese el usuario quien insertase la ciudad manualmente, y forzase el lanzamiento de la aplicación a través de un botón.
Cuando esto se solucionó, una vez ya dentro del juego también se vieron problemas en la integración con Gemini a la hora de generar la historia, acabando en fallos que también rompieron la aplicación (no era capaz de saber qué ruta había que llamar para importar la API de Gemini en el proyecto, pese a estar trabajando con dicho modelo).
Finalmente pudo arreglarse y pude probar el juego. En líneas generales, es el que más me gusta visualmente. Ningún modelo recibió ninguna orden de qué estilos tenían que desarrollar, y mientras Claude y GPT usaron estilos muy estándar, Gemini intentó simular colores, tipografías, formatos típicos de este tipo de juegos. Sin embargo, la funcionalidad dejaba que desear, era poco profunda y repetitiva, lo cual acababa aburriendo a la hora de jugar.
En algunos puntos, seguían presentándose fallos pero no eran críticos (durante el juego el mapa no muestra la ubicación elegida sino que se sitúa en Madrid, las decisiones no eran en realidad determinantes ya que todas las partidas acababan al séptimo día con los jugadores muertos por sed, las bajadas de los stats solían ser también las mismas y en la misma cantidad…).

Valoración
- Tiempo en generar las respuestas: aproximadamente 9 minutos.
- Tiempo total: aproximadamente una hora.
- Número de prompts: 18
- Número de intentos para que la app funcione: necesitó de al menos 5 intentos lanzando la aplicación completamente para que funcionara sin bugs críticos y con las características solicitadas.
- Incidencias:
- No tuvo en cuenta que no podían escucharse los clics dentro del iframe de Maps, lo cual impidió ejecutar la aplicación.
- Tuvo que ser necesario replantear el funcionamiento de la herramienta sobre la marcha y plantear que el usuario fuese quien escribiese la ubicación en lugar de clicarla.
- No supo integrarse a su propia API y necesitó unos cuantos intentos.
- Fue el que presentó más incidencias críticas y menores.
- Puntos a favor:
- Mucha velocidad en la generación de las respuestas sin importar la longitud de éstas, haciendo que el proceso se sintiera más fluido.
- La integración con Google Cloud para conectar con Sheets y Maps fue rápida, me la supo explicar correctamente y no experimenté ningún problema ahí.
- Es el que mejor supo captar la esencia del proyecto y trasladarla a unos estilos visuales concretos.
- Buen desempeño para el tiempo empleado, pese a la complejidad del proyecto.
ChatGPT vs Gemini vs Claude Code: tabla comparativa
Y ahora la pregunta, ¿cuál elijo para mi proyecto? Pues como todo, depende de lo que busques o necesites. A fin de cuentas, elijas el que elijas podrás cumplir con los objetivos que tengas marcados, todas valen.
También, es injusto comparar los distintos modelos usando tres herramientas distintas, en aplicaciones con complejidades también distintas. Pero entendía que aportaría más valor para este análisis si se buscase explotar los puntos positivos de cada IA en lugar de elegir un mismo proyecto para todos, donde puede que un modelo supere con creces al resto en el área X y en ese caso poco análisis habría por hacer.
Ahora, si queréis mi opinión y tuviese que desarrollar un proyecto de cero y estuviese dudando entre herramientas, probablemente haría lo siguiente:
- Desarrollaría el proyecto primero desde ChatGPT. También, por participar algo en la implementación, porque si ya usando GPT se programa poco, desde Claude prácticamente no haces nada.
- Una vez tuviera la aplicación funcional, únicamente le pediría a Gemini que me genere los estilos de la aplicación.
- Si el proyecto tuviese necesidades de crecer o presentara algún fallo y fuese incapaz de encontrar de dónde pudiera venir, le añadiría Claude Code al proyecto.
En cualquier caso, te dejo una tabla comparativa con el análisis hecho para cada proyecto, para que seas tú quien tomes la decisión:

Y con esto, poco más que añadir. Creo que una conclusión interesante de este estudio es que muchas de las preguntas que nos hacíamos hace solo 1 – 2 años han dejado de existir. Ya no hablamos de que ‘‘Esta IA no trabaja bien las imágenes, solo la uso para código’’ y viceversa. O comentarios como ‘La IA no es capaz de darme textos con sentido, no se le entiende cuando habla’. Hoy esa misma aplicación es la que mejor funciona como conversacional. Si usas Claude, prácticamente ni tienes que intervenir en el proceso, poco más que crearte la cuenta.
Esas dudas ya han dejado de existir en muy poco tiempo. Ya no preguntamos si puede hacerlo, sino más bien qué vamos a usar y por qué. Y quizás cuando tengan control completo sobre las aplicaciones, no tengamos ni siquiera que preguntarnos cuál usaremos porque ya ellas mismas nos las darán.
Creo que la conclusión más importante vendrá en el futuro, con preguntas que aún no tenemos porque todavía tienen que desarrollarse. Hoy estamos respondiendo las preguntas del ayer, pero mañana responderemos a las de hoy, y estoy seguro que nos seguirá sorprendiendo durante los próximos años.