Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed public/images/speakers/santiago-suarez-sampayo.png
Binary file not shown.
17 changes: 1 addition & 16 deletions src/assets/data/schedule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ export const scheduleEvents: ScheduleEvent[] = [
date: "2026-07-24",
title: "Sponsor Space: EAFIT",
displayTitle: "Sponsor Space: EAFIT",
speaker: "EAFIT",
speaker: "Stiven Arteaga",
label: "Sponsor Space",
},
{
Expand Down Expand Up @@ -890,21 +890,6 @@ export const scheduleEvents: ScheduleEvent[] = [
displayTitle: "Morning Snacks",
speaker: "Morning Snacks",
},
{
id: "84",
type: "workshop",
room: "Room 1 - Workshops",
hour: "10:30 - 12:30",
date: "2026-07-26",
title:
"Workshop: Build an OpenClaw-style Coding Assistant on WhatsApp with Claude Agent SDK",
displayTitle:
"Build an OpenClaw-style Coding Assistant on WhatsApp with Claude Agent SDK",
speaker: "Santiago Suarez Sampayo",
talkKey: "openclaw-whatsapp-assistant",
label: "Artificial Intelligence",
language: ["ES"],
},
{
id: "64",
type: "workshop",
Expand Down
18 changes: 0 additions & 18 deletions src/assets/data/workshop-speakers-content.locale.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,15 +61,6 @@ const workshopContentEn: SpeakerContentBySlug = {
talkDescription:
'Is your Machine Learning model trapped in a Notebook or does it actually generate value in production? Taking ML models into the real world requires more than just good training code; it demands a solid MLOps strategy. In this hands-on workshop, we will transform a use case from scratch into an industrial-grade solution using Databricks and MLflow.\n\nThrough a hands-on approach and using Databricks Free Edition, attendees will master the complete lifecycle (End-to-End) under professional standards.\n\nWorkshop Agenda:\n\n- Industrialization Fundamentals: Introduction to Lakehouse architecture, MLflow as an industry standard, and the role of the Feature Store in reproducibility.\n\n- Engineering and Governance: Creating a Feature Store and managing raw data with best practices.\n\n- Scalable Training: Developing models with exhaustive experiment tracking and a bonus on distributed training for large data volumes.\n\n- Deployment Strategies: Analysis of trade-offs between Batch Inferencing and Real-time Serving (Model Serving). We will implement "Deploy Code" and "Deploy Artifacts" patterns.\n\n- Modern Operationalization: Professional orchestration through Databricks Asset Bundles (DABs), the definitive tool for infrastructure as code on Databricks.\n\n- The finishing touch (CI/CD): How to integrate everything into a continuous deployment pipeline to guarantee quality across multiple environments.\n\nOutcome for attendees:\nUpon completion, each participant will have the source code, infrastructure configuration, and a productized, orchestrated ML model ready to be replicated in real environments.',
},
"santiago-suarez-sampayo": {
title: "Senior AI Engineer @ Aimpoint Digital",
description:
"Senior AI Engineer at Aimpoint Digital, building production AI agent systems for Fortune 500 companies in global retail and consumer electronics. My agents reach more than 10,000 users worldwide and turn tasks that took days into work that finishes in hours, spanning data analyst agents, coding assistants, and internal workflow automation. On the side, I build personal projects around AI and WhatsApp automation, which is what inspired this workshop. I led last year's PyCon Colombia workshop on AI agents with LangGraph and MCP.",
talkTitle:
"Build an OpenClaw-style Coding Assistant on WhatsApp with Claude Agent SDK",
talkDescription:
"In this hands-on 2-hour workshop, participants will build a personal coding assistant using Claude Agent SDK (powered by Claude Code) and turn it into a powerful OpenClaw-style agent they can talk to through WhatsApp.\nWe'll start by building the core agent in Python with Claude Agent SDK, then progressively add advanced capabilities: memory so it remembers context across conversations, subagents to handle specialized tasks, hooks to customize its behavior, and other advanced agent features that make it genuinely useful.\nOnce the agent is solid, we'll connect it to WhatsApp using Evolution API (Baileys-based, attendees just scan a QR code) so they can interact with it naturally from their phone, just like talking to a colleague.\nBy the end of the session, attendees will use their assistant to build a real web app, demonstrating how a well-designed agent can become a true coding copilot. They'll leave with a working OpenClaw-style assistant connected to their WhatsApp, a real web app they built with it, and a framework they can extend to other personal and professional use cases.",
},
"johnny-montoya": {
title: "Ingeniero de I+D en IA / AI R&D Engineer @ Unloquer",
description:
Expand Down Expand Up @@ -389,15 +380,6 @@ const workshopContentEs: SpeakerContentBySlug = {
talkDescription:
'¿Tu modelo de Machine Learning vive atrapado en un Notebook o realmente genera valor en producción? Llevar modelos de ML al mundo real requiere más que solo buen código de entrenamiento; exige una estrategia sólida de MLOps. En este workshop práctico, transformaremos un caso de uso desde cero hasta convertirlo en una solución de grado industrial utilizando Databricks y MLflow.\n\nA través de un enfoque hands-on y utilizando la Databricks Free Edition, los asistentes dominarán el ciclo de vida completo (End-to-End) bajo estándares profesionales.\n\nAgenda del Workshop:\n\n- Fundamentos de Industrialización: Introducción a la arquitectura Lakehouse, MLflow como estándar de industria y el rol del Feature Store en la reproducibilidad.\n\n- Ingeniería y Gobernanza: Creación de una Feature Store y gestión de datos crudos con mejores prácticas.\n\n- Entrenamiento Escalable: Desarrollo de modelos con tracking exhaustivo de experimentos y un bonus sobre entrenamiento distribuido para grandes volúmenes de datos.\n\n- Estrategias de Despliegue: Análisis de trade-offs entre Batch Inferencing y Real-time Serving (Model Serving). Implementaremos patrones de "Deploy Code" y "Deploy Artifacts".\n\n- Operacionalización Moderna: Orquestación profesional mediante Databricks Asset Bundles (DABs), la herramienta definitiva para infraestructura como código en Databricks.\n\n- El toque final (CI/CD): Cómo integrar todo en un pipeline de despliegue continuo para garantizar calidad en múltiples ambientes.\n\nResultado para el asistente:\nAl finalizar, cada participante tendrá en sus manos el código fuente, la configuración de infraestructura y un modelo de ML productivizado y orquestado, listo para ser replicado en entornos reales.',
},
"santiago-suarez-sampayo": {
title: "Senior AI Engineer @ Aimpoint Digital",
description:
"Senior AI Engineer en Aimpoint Digital, construyendo sistemas de agentes de IA en producción para empresas Fortune 500 en retail global y electrónica de consumo. Mis agentes llegan a más de 10,000 usuarios en todo el mundo y convierten tareas que tomaban días en trabajo que termina en horas, abarcando agentes analistas de datos, asistentes de codificación y automatización de flujos internos. Por mi cuenta, construyo proyectos personales en torno a IA y automatización de WhatsApp, que es lo que inspiró este workshop. Lideré el workshop de PyCon Colombia del año pasado sobre agentes de IA con LangGraph y MCP.",
talkTitle:
"Construye un asistente de codificación estilo OpenClaw en WhatsApp con Claude Agent SDK",
talkDescription:
"En este workshop práctico de 2 horas, los participantes construirán un asistente de codificación personal usando Claude Agent SDK (impulsado por Claude Code) y lo convertirán en un potente agente estilo OpenClaw con el que pueden hablar a través de WhatsApp.\nEmpezaremos construyendo el agente central en Python con Claude Agent SDK, luego agregaremos progresivamente capacidades avanzadas: memoria para recordar contexto entre conversaciones, subagentes para manejar tareas especializadas, hooks para personalizar su comportamiento, y otras funciones avanzadas de agentes que lo hacen genuinamente útil.\nUna vez que el agente esté sólido, lo conectaremos a WhatsApp usando Evolution API (basado en Baileys, los asistentes solo escanean un código QR) para que puedan interactuar con él naturalmente desde su teléfono, como hablando con un colega.\nAl final de la sesión, los asistentes usarán su asistente para construir una aplicación web real, demostrando cómo un agente bien diseñado puede convertirse en un verdadero copiloto de codificación. Se irán con un asistente estilo OpenClaw funcionando conectado a su WhatsApp, una aplicación web real que construyeron con él, y un framework que pueden extender a otros casos de uso personales y profesionales.",
},
"johnny-montoya": {
title: "Ingeniero de I+D en IA / AI R&D Engineer @ Unloquer",
description:
Expand Down
17 changes: 1 addition & 16 deletions src/assets/data/workshop-speakers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ const workshopSpeakerImages: Record<string, string> = {
"https://drive.google.com/open?id=1Te_ikbiDwTLuT2w34YaPwZTpKDFMjUer",
"emanuel-zapata-querubin":
"https://drive.google.com/open?id=1s22wX60ADCVEsdWDVs3ndk3Jh48vvqZu",
"santiago-suarez-sampayo":
"https://drive.google.com/open?id=1sQa6Virz2OmgcQBSgoCRDYFgAewD6yz3",
"johnny-montoya":
"https://drive.google.com/open?id=1ujbpOnGTO1e2iUATOha211KPHNAdECfg",
"nicolas-roldan-fajardo":
Expand Down Expand Up @@ -155,20 +153,7 @@ const workshopSpeakerListBase: SpeakerInput[] = [
level: "Intermediate / Intermedio",
format: "workshop",
},
// 6. OpenClaw WhatsApp Assistant
{
slug: "santiago-suarez-sampayo",
talkKey: "openclaw-whatsapp-assistant",
name: "Santiago Suarez Sampayo",
github: "https://github.com/santiagossz",
linkedin: "https://www.linkedin.com/in/santiago-suarez-sampayo-2b93b2168",
tracks: ["artificial-intelligence", "web"] as SpeakerTrack[],
country: "Colombia",
language: "English / Inglés",
level: "Intermediate / Intermedio",
format: "workshop",
},
// 7. Company Brain Skills
// 6. Company Brain Skills
{
slug: "johnny-montoya",
talkKey: "company-brain-skills",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -231,13 +231,37 @@ function ScheduleEventCard({ event, t, locale }: ScheduleEventCardProps) {
: undefined;
const talk = resolveTalkForScheduleEvent(event, locale);
const eventSpeakers = resolveSpeakersForScheduleEvent(event, locale);
const speakersAreOnlySponsorBrand = (() => {
if (!sponsor || !isSponsorSpaceEvent(event) || eventSpeakers.length === 0) {
return false;
}

const sponsorName = sponsor.name
.normalize("NFD")
.replace(/\p{Diacritic}/gu, "")
.toLowerCase();
const sponsorSlug = (sponsor.slug ?? "").toLowerCase();

return eventSpeakers.every((speaker) => {
if (speaker.slug) return false;

const name = speaker.name
.normalize("NFD")
.replace(/\p{Diacritic}/gu, "")
.toLowerCase()
.trim();

return (
name === sponsorName ||
name === sponsorSlug ||
sponsorName.includes(name) ||
(sponsorSlug !== "" && name.includes(sponsorSlug))
);
});
})();
const showSpeakers =
shouldShowScheduleSpeakers(event, eventSpeakers) &&
!(
sponsor &&
isSponsorSpaceEvent(event) &&
!eventSpeakers.some((speaker) => speaker.slug)
);
!speakersAreOnlySponsorBrand;
const keynoteHref = keynote ? getKeynoteHref(keynote.slug) : undefined;
const talkHref = talk ? getTalkHref(talk.id) : undefined;
const sessionHref = keynoteHref ?? talkHref;
Expand Down
Loading