Proyecto demo de planificador de colectivos para la Ciudad de Buenos Aires, construido sobre:
- Backend FastAPI
- Datos oficiales GTFS de colectivos CABA
- Chat estilo asistente (web y Telegram)
- Síntesis de voz (TTS) local en Windows
El objetivo es tener un ejemplo completo de chatbot de transporte que use datos reales.
- Búsqueda de rutas entre dos direcciones (ej: "ir de Corrientes 900 a Plaza de Mayo").
- Consulta de próximas salidas y horarios.
- Manejo de preferencias de usuario (modo rápido / balanceado, favoritos hogar/trabajo, etc.).
- Interfaz web de chat.
- Bot de Telegram (opcional).
- TTS local (opcional, solo Windows).
Los datos de colectivos provienen de:
- Dataset oficial “colectivos-gtfs” del Gobierno de la Ciudad de Buenos Aires.
- Versión simplificada por frecuencias publicada en el TUMI Datahub.
colectivos_demo_plus/
├── app/
│ ├── main.py
│ ├── planner.py
│ ├── intents.py
│ ├── geocode.py
│ ├── storage.py
│ └── ...
├── web/
│ └── index.html
├── tools/
│ └── gtfs_load.py
├── data/
│ ├── .gitkeep
│ └── (GTFS aquí)
├── telegram_bot.py
├── requirements.txt
├── .env.example
└── README.md
- Windows 10/11 (recomendado)
- Python 3.10+
- Dependencias del proyecto via
requirements.txt
git clone https://github.com/TU_USUARIO/colectivos_demo_plus.git
cd colectivos_demo_pluspython -m venv .venv
.\.venv\Scripts\Activate.ps1pip install --upgrade pip
pip install -r requirements.txtTELEGRAM_BOT_TOKEN=
TELEGRAM_WEBHOOK_SECRET=clave
OPENAI_API_KEY=
CITY_NAME=CABA
MODE=balanced
GTFS_SQLITE=data/gtfs.sqlite
APPDATA_SQLITE=data/appdata.sqlite
TTS_ENABLED=1
TTS_VOICE=es-ES
TTS_DIR=data/tts
TTS_RATE=0
TTS_VOLUME=1Copiar plantilla:
copy .env.example .envhttps://data.buenosaires.gob.ar/fi/dataset/colectivos-gtfs
https://hub.tumidata.org/dataset/buses_gtfs_frequency_buenos_aires
Extraer todos los .txt en:
data/gtfs/
python tools/gtfs_load.py --gtfs_dir data/gtfs --sqlite data/gtfs.sqliteuvicorn app.main:app --reload --host 0.0.0.0 --port 8000Abrir: http://localhost:8000
python telegram_bot.pypython bench_request.pyDistribuido bajo la licencia MIT.