GQ / lab logES / EN
← Back to the log

EXP-04 · AI automation

A bot that survives its sources

A Telegram bot that gathers cultural events from websites and Instagram, understands text and voice messages, and recommends plans through an AI agent with a local Córdoba tone.

Agenda Cultural Córdoba, an AI event-curator bot built with n8n

Question

Can a Telegram bot keep recommending events when the websites it scrapes break?

Problem

Córdoba's cultural agenda is scattered across many websites and Instagram accounts, so finding something to do takes time.

Data

Real sources: 4 websites (Córdoba Tourism, the provincial and municipal culture agendas, and La Voz newspaper) and 13 Instagram accounts of theaters, museums and venues. No events are made up: when data is incomplete, the bot says so.

Method

A 41-node workflow with multi-source scraping (HTTP and Apify), audio transcription with Groq, a Gemini agent with memory, intent detection, LLM output validation with fallback, source schema versioning, and a separate error workflow with Google Sheets logs, admin alerts and a /metrics command.

Result

A production bot that keeps working when a source goes down; format changes are logged as SCHEMA_DRIFT and alert the admin.

What I learned

Design for degradation: fall back, log every failure, alert a human.

Stack

  • n8n
  • Telegram Bot API
  • Google Gemini
  • Groq Whisper
  • Apify
  • Google Sheets
  • JavaScript

Context

Personal project, built from my final exam for the Automation course (IES 21, August 2026) and documented here as a standalone tool.

View the code on GitHub ↗