Ir al contenido
Eitan FeldmanBA, ARGCVenes
Lab

Horario ICS

Sacale una foto al horario del colegio y llevate un calendario suscribible. Gemini hace el OCR y la extracción estructurada; la app convierte el resultado en un feed .ics que tu teléfono puede seguir.

Sin mantenimiento, y el código es privado. Funcionó para los cuatrimestres que lo necesité. Lo dejo acá porque lo interesante son las decisiones, no la herramienta.

Cada cuatrimestre el colegio reparte el horario como una grilla — días arriba, bloques horarios al costado, materia y profesor y aula apretados en cada celda. Útil en papel, inútil en un teléfono.

Esto toma una foto de esa grilla y devuelve un calendario al que te podés suscribir.

Las decisiones que vale leer

La extracción la hace Gemini, no un parser escrito a mano. El layout de la grilla cambia entre cuatrimestres y entre años, y un parser afinado para una forma se rompe con la siguiente. El prompt describe la estructura —las columnas son días de semana, las filas son bloques horarios, cada celda tiene materia, profesor y aula— y pide JSON. Eso sobrevive un rediseño; un parser por coordenadas, no.

Hay una lista de fallback de modelos, no un modelo. Prueba gemini-1.5-flash primero y cae por otros dos. Un solo modelo hardcodeado es una herramienta que deja de funcionar el día que ese modelo se retira, y esta tiene que seguir andando cada cuatrimestre sin que yo la toque.

El calendario se sirve desde una ruta, no se baja como archivo. Un .ics descargado es una foto; una URL suscripta se actualiza. Significa que el horario se puede corregir después y todos los teléfonos que se suscribieron reciben el arreglo.

La parte que llevó más tiempo

No la IA: la zona horaria y los acentos. miércoles y miercoles son el mismo día para una persona y dos claves distintas para una tabla de lookup, y un .ics sin zona horaria declarada corre alegremente cada clase tres horas una vez que llega a una app de calendario en Buenos Aires.