chore: update ChefGPT modal with current implementation details

- Replace Google Sheets with Supabase PostgreSQL for inventory management
- Add RAG (Retrieval-Augmented Generation) with recipe corpus
- Document hallucination prevention strategy in project description
- Update tech stack: add RAG and replace Google Sheets API with Supabase
- Enhance funcionalidades list to highlight RAG-based approach
- Update project outcome to reflect reliability and accuracy improvements
This commit is contained in:
Itziar Zameza García
2026-03-22 19:35:10 +01:00
parent cbc004834b
commit 6a8e7dfb83
+76 -60
View File
@@ -192,6 +192,7 @@
Explorar Proyectos Explorar Proyectos
</button> </button>
<button <button
disabled
class="glass px-8 py-4 rounded-xl font-bold text-lg hover:bg-white/60 dark:hover:bg-white/10 transition-colors text-slate-800 dark:text-slate-200" class="glass px-8 py-4 rounded-xl font-bold text-lg hover:bg-white/60 dark:hover:bg-white/10 transition-colors text-slate-800 dark:text-slate-200"
> >
Descargar CV Descargar CV
@@ -229,8 +230,8 @@
Ingeniera de telecomunicaciones y desarrolladora especializada Ingeniera de telecomunicaciones y desarrolladora especializada
en automatización de procesos, integración de APIs y creación de en automatización de procesos, integración de APIs y creación de
agentes basados en inteligencia artificial. Construyo sistemas agentes basados en inteligencia artificial. Construyo sistemas
que conectan herramientas, procesan información (texto, audio, que conectan herramientas, procesan información y crean flujos
vídeo) y crean flujos automatizados que reducen trabajo manual. automatizados que reducen trabajo manual.
</p> </p>
<div class="grid md:grid-cols-2 gap-4 mt-12"> <div class="grid md:grid-cols-2 gap-4 mt-12">
<div class="p-6 glass rounded-2xl"> <div class="p-6 glass rounded-2xl">
@@ -406,7 +407,7 @@
</div> </div>
<!-- Project 3: Content Processing Automation --> <!-- Project 3: Content Processing Automation -->
<div <!-- <div
class="group relative flex flex-col glass rounded-3xl overflow-hidden hover:translate-y-[-8px] transition-all duration-500" class="group relative flex flex-col glass rounded-3xl overflow-hidden hover:translate-y-[-8px] transition-all duration-500"
> >
<div class="aspect-video relative overflow-hidden"> <div class="aspect-video relative overflow-hidden">
@@ -453,7 +454,7 @@
Ver detalles Ver detalles
</button> </button>
</div> </div>
</div> </div> -->
</div> </div>
</div> </div>
</section> </section>
@@ -632,10 +633,10 @@
> >
</div> </div>
</div> </div>
</div> </div>
</footer> </footer>
</div> </div>
</div> </div>
<!-- Project Modals --> <!-- Project Modals -->
<!-- Modal 1: AI Knowledge Pipeline --> <!-- Modal 1: AI Knowledge Pipeline -->
@@ -687,7 +688,9 @@
<h3 class="text-xl font-bold text-slate-900 dark:text-white mb-3"> <h3 class="text-xl font-bold text-slate-900 dark:text-white mb-3">
Funcionalidades Funcionalidades
</h3> </h3>
<ul class="list-disc list-inside space-y-2 text-slate-700 dark:text-slate-300"> <ul
class="list-disc list-inside space-y-2 text-slate-700 dark:text-slate-300"
>
<li>Ingestión de múltiples tipos de contenido</li> <li>Ingestión de múltiples tipos de contenido</li>
<li>Transcripción automática con IA</li> <li>Transcripción automática con IA</li>
<li>Resumen inteligente y extracción de keywords</li> <li>Resumen inteligente y extracción de keywords</li>
@@ -780,9 +783,10 @@
</h3> </h3>
<p class="text-slate-700 dark:text-slate-300 leading-relaxed"> <p class="text-slate-700 dark:text-slate-300 leading-relaxed">
Agente conversacional inteligente en Telegram que actúa como Agente conversacional inteligente en Telegram que actúa como
asistente culinario personal. Consulta tu inventario en Google asistente culinario personal. Consulta tu inventario en Supabase,
Sheets, entiende tus preferencias dietéticas y sugiere recetas accede a un RAG especializado con recetas para evitar
personalizadas basadas en lo que tienes disponible. alucinaciones, y sugiere platos personalizados basados en lo que
tienes disponible.
</p> </p>
</div> </div>
@@ -790,10 +794,14 @@
<h3 class="text-xl font-bold text-slate-900 dark:text-white mb-3"> <h3 class="text-xl font-bold text-slate-900 dark:text-white mb-3">
Funcionalidades Funcionalidades
</h3> </h3>
<ul class="list-disc list-inside space-y-2 text-slate-700 dark:text-slate-300"> <ul
<li>Integración bidireccional con Google Sheets</li> class="list-disc list-inside space-y-2 text-slate-700 dark:text-slate-300"
<li>Consulta automática de inventario</li> >
<li>Generación de recetas personalizadas con IA</li> <li>Integración bidireccional con Supabase</li>
<li>Consulta automática de inventario en base de datos</li>
<li>RAG (Retrieval-Augmented Generation) con recetas verificadas</li>
<li>Prevención de alucinaciones mediante fine-tuning de prompts</li>
<li>Generación de recetas personalizadas sin alucinar</li>
<li>Actualización automática del inventario</li> <li>Actualización automática del inventario</li>
<li>Conversación natural y contextual</li> <li>Conversación natural y contextual</li>
</ul> </ul>
@@ -810,16 +818,20 @@
> >
<span <span
class="px-4 py-2 bg-primary/10 rounded-full text-sm font-bold text-primary" class="px-4 py-2 bg-primary/10 rounded-full text-sm font-bold text-primary"
>Google Sheets API</span >Supabase (PostgreSQL)</span
> >
<span <span
class="px-4 py-2 bg-primary/10 rounded-full text-sm font-bold text-primary" class="px-4 py-2 bg-primary/10 rounded-full text-sm font-bold text-primary"
>n8n</span >RAG (Retrieval)</span
> >
<span <span
class="px-4 py-2 bg-primary/10 rounded-full text-sm font-bold text-primary" class="px-4 py-2 bg-primary/10 rounded-full text-sm font-bold text-primary"
>OpenAI GPT</span >OpenAI GPT</span
> >
<span
class="px-4 py-2 bg-primary/10 rounded-full text-sm font-bold text-primary"
>n8n</span
>
</div> </div>
</div> </div>
@@ -828,9 +840,11 @@
Resultado Resultado
</h3> </h3>
<p class="text-slate-700 dark:text-slate-300"> <p class="text-slate-700 dark:text-slate-300">
Asistente culinario que elimina la decisión de "qué cocinar", Asistente culinario robusto que elimina la decisión de "qué
aprendiendo preferencias y generando sugerencias en tiempo real cocinar" sin generar recetas inexistentes. El RAG garantiza que
basadas en disponibilidad real del inventario. todas las sugerencias provienen de un corpus de recetas
verificadas, proporcionando fiabilidad y personalización sin
alucinaciones de la IA.
</p> </p>
</div> </div>
</div> </div>
@@ -893,7 +907,9 @@
<h3 class="text-xl font-bold text-slate-900 dark:text-white mb-3"> <h3 class="text-xl font-bold text-slate-900 dark:text-white mb-3">
Funcionalidades Funcionalidades
</h3> </h3>
<ul class="list-disc list-inside space-y-2 text-slate-700 dark:text-slate-300"> <ul
class="list-disc list-inside space-y-2 text-slate-700 dark:text-slate-300"
>
<li>Procesamiento de múltiples formatos multimedia</li> <li>Procesamiento de múltiples formatos multimedia</li>
<li>Transcripción y análisis automático</li> <li>Transcripción y análisis automático</li>
<li>Generación de títulos, descripciones y hashtags con IA</li> <li>Generación de títulos, descripciones y hashtags con IA</li>
@@ -931,9 +947,9 @@
Resultado Resultado
</h3> </h3>
<p class="text-slate-700 dark:text-slate-300"> <p class="text-slate-700 dark:text-slate-300">
Automatización completa de la cadena de producción de Automatización completa de la cadena de producción de contenido,
contenido, reduciendo tiempo manual en un 90% y garantizando reduciendo tiempo manual en un 90% y garantizando consistencia
consistencia en la calidad y el formato de publicaciones. en la calidad y el formato de publicaciones.
</p> </p>
</div> </div>
</div> </div>
@@ -980,45 +996,45 @@
} }
} }
function scrollToContact() { function scrollToContact() {
const contactSection = document.getElementById("contact"); const contactSection = document.getElementById("contact");
if (contactSection) { if (contactSection) {
contactSection.scrollIntoView({ behavior: "smooth" }); contactSection.scrollIntoView({ behavior: "smooth" });
} }
} }
// Modal functions // Modal functions
function openModal(projectId) { function openModal(projectId) {
const modal = document.getElementById(projectId + "-modal"); const modal = document.getElementById(projectId + "-modal");
if (modal) { if (modal) {
modal.classList.remove("hidden"); modal.classList.remove("hidden");
document.body.style.overflow = "hidden"; document.body.style.overflow = "hidden";
} }
} }
function closeModal(projectId) { function closeModal(projectId) {
const modal = document.getElementById(projectId + "-modal"); const modal = document.getElementById(projectId + "-modal");
if (modal) { if (modal) {
modal.classList.add("hidden"); modal.classList.add("hidden");
document.body.style.overflow = "auto"; document.body.style.overflow = "auto";
} }
} }
// Close modal with ESC key // Close modal with ESC key
document.addEventListener("keydown", function (event) { document.addEventListener("keydown", function (event) {
if (event.key === "Escape") { if (event.key === "Escape") {
const modals = document.querySelectorAll( const modals = document.querySelectorAll(
'[id$="-modal"]:not(.hidden)' '[id$="-modal"]:not(.hidden)',
); );
modals.forEach((modal) => { modals.forEach((modal) => {
const projectId = modal.id.replace("-modal", ""); const projectId = modal.id.replace("-modal", "");
closeModal(projectId); closeModal(projectId);
}); });
} }
}); });
// Initialize theme on page load // Initialize theme on page load
document.addEventListener("DOMContentLoaded", initTheme); document.addEventListener("DOMContentLoaded", initTheme);
</script> </script>
</body> </body>
</html> </html>