iaintel·ligènciaartificial.cat← Portada

Secció · Societat, cultura i educació

Antoni Artigues (BOIBOT): com una IA llegeix cada matí el BOIB, i qui en vigila els errors

Un enginyer d’Inca va crear en dos dies, sense escriure el codi a mà, una eina gratuïta que resumeix les convocatòries del Butlletí Oficial de les Illes Balears i avisa de les ajudes i les oposicions. Explica com funciona per dins, com evita que la IA s’inventi una data i per què creu que això ho hauria d’oferir l’administració.

Antoni Artigues és un enginyer informàtic nascut a Inca (Mallorca) que treballa com a responsable tècnic a Banca March i que abans va passar pel Barcelona Supercomputing Center. Pel seu compte ha creat BOIBOT, una eina web gratuïta que llegeix cada matí el Butlletí Oficial de les Illes Balears (BOIB), en resumeix les convocatòries i avisa de les ajudes i les oposicions que interessen a cada usuari. Ha respost aquestes vuit preguntes per escrit.

1. Què és BOIBOT i per què el vau crear? Quin problema volíeu resoldre a les persones que busquen ajudes, subvencions o oposicions a les Illes Balears?

BOIBOT és una eina web que facilita als ciutadans de les Illes Balears la cerca de tot tipus de convocatòries públiques. A més, cada convocatòria té un resum detallat dels punts més importants, com per exemple els requisits, la documentació, les passes d’inscripció o les fases d’oposició. Té també un formulari per saber si una persona és apta per inscriure’s a la convocatòria i, finalment, permet definir alertes personalitzades quan surten convocatòries noves.

Tot va sorgir perquè la meva dona cercava ofertes públiques de professora de piano. En surten tres o quatre a l’any, i l’únic que podia fer era repassar a mà les tres publicacions setmanals del butlletí oficial (BOIB), una feina periòdica i tediosa, ja que cada BOIB pot dur anunciades unes cinquanta convocatòries de tots els tipus. L’administració pública no proporciona cap eina per fer consultes del BOIB. En canvi, amb BOIBOT no cal que faci res: quan surt una convocatòria de pianista, rep una alerta automàtica al correu electrònic.

2. Com funciona per dins: com arriba cada matí el BOIB al sistema, què fa el model de llenguatge i què es resol amb regles o filtres fixos?

Cada matí a les 9.00 es dispara una tasca automàtica que executa una sèrie de passes per «llegir» el BOIB. Primer en fa una extracció automàtica (scraping) de l’edició en HTML. Cada convocatòria passa per un prefiltre amb regles fixes que en rebutja algunes, com per exemple els «nomenaments», i les que superen el prefiltre s’afegeixen com a context per a l’etapa següent.

Després de l’extracció, s’envia a la IA una instrucció (prompt) amb les indicacions i totes les convocatòries de la fase anterior. A la instrucció s’indica que ha de retornar un document en format JSON amb una estructura determinada, que tendrà el llistat de convocatòries juntament amb les seves dades principals resumides. També s’hi donen indicacions per calcular la data límit, classificar el tipus de convocatòria (rebutjant les que no són a la llista de tipus), fer els resums, etc.

En una tercera fase, el fitxer JSON retornat per la IA es desa en una base de dades associada a la convocatòria. Després s’envien les alertes configurades pels usuaris: s’aplica el filtre de cada alerta al JSON i, si hi ha alguna coincidència, s’envia el correu. La tasca també publica un missatge amb els resultats a Telegram i Facebook, i fa servir l’API de Google per indexar automàticament les pàgines de les convocatòries noves.

Quan un usuari fa servir el cercador, les consultes es fan sobre les dades de la base de dades que ha introduït la tasca del matí. Així, la IA només s’utilitza una sola vegada per processar el BOIB, i d’aquesta manera aconseguim estalviar tokens i respondre més de pressa.

3. Com es comprova que un resum fet amb IA no es deixa un requisit, un termini o una data? Què passa quan el model s’equivoca, i qui ho detecta?

Cada vegada que es fa l’anàlisi d’un BOIB, el sistema m’envia un resum de l’execució. En aquest resum hi ha la llista de convocatòries descartades per la IA juntament amb el motiu, també una llista de les dades que no ha pogut obtenir (per exemple, si no ha pogut calcular la data de finalització) i, igualment, el llistat de tots els errors produïts durant l’execució.

Periòdicament faig una anàlisi de les convocatòries descartades i acceptades per millorar la instrucció i afinar-la més si veig algun error en la classificació. Faig el mateix amb totes les dades que no ha pogut calcular.

Per exemple, en el cas concret del càlcul de la data límit d’inscripció, tenc unes instruccions molt restrictives i basades en exemples: la instrucció conté exemples de les cinc formes en què el BOIB expressa la data de validesa de la convocatòria. I la indicació és aquesta: «Si a la convocatòria no trobes cap dels exemples esmentats, no intentis calcular la data de finalització; torna un null al camp del JSON». Així evitam mostrar dates incorrectes a l’usuari.

4. Vau construir BOIBOT en dos dies sense escriure el codi a mà. Com ho vau fer, amb quines eines, i què vau haver de revisar o corregir vós mateix?

Vaig fer servir la tècnica del desenvolupament guiat per especificacions (spec-driven development) seguint l’estàndard OpenSpec. Per fer-ho, vaig utilitzar l’aplicació Antigravity amb Gemini Pro i hi vaig instal·lar diferents habilitats (skills) per millorar el codi, com per exemple les d’OpenSpec. El punt de partida va ser definir els requisits del projecte d’una manera molt exhaustiva en format Markdown; també vaig fer servir Gemini per elaborar aquestes especificacions. A partir d’aquí, va ser la IA, amb Antigravity, la que va elaborar un full de ruta per crear BOIBOT en diverses fases.

El meu paper va ser el d’un «analista i responsable tècnic» que va fent el control de qualitat de cada lliurament de la IA. Vaig haver de corregir els estils, la maquetació per a mòbils, els textos que surten a la web i algunes qüestions de rendiment bastant importants. Per exemple, vaig veure que la quota de la base de dades s’esgotava molt ràpidament, fins que me’n vaig adonar que les consultes SQL retornaven sempre tot el text de la convocatòria en cru, quan era del tot innecessari. També li vaig donar instruccions perquè creàs un sistema de memòria cau, ja que el BOIB s’actualitza cada dos dies i no cal anar cada vegada a buscar la informació a la base de dades: és qüestió d’estalviar costos i de rapidesa.

5. Què us ha servit, per a un projecte com aquest, de la vostra experiència al Barcelona Supercomputing Center i a la banca?

Bàsicament, gràcies a l’experiència del BSC i de la banca tenc un perfil d’enginyer de programari sènior. Això m’ha permès validar l’arquitectura de BOIBOT i fer-hi modificacions per millorar-la, i també introduir les millores de rendiment que he comentat a l’apartat anterior. En definitiva, m’ha permès fer correctament el paper de «responsable tècnic» sobre la IA.

Des del meu punt de vista, aquest és el risc més gran de la IA. Si ja tens un perfil sènior, és perfecte utilitzar-la i assumir el nou paper de «supervisor». En canvi, un desenvolupador júnior pot tenir moltes dificultats, perquè no està capacitat per supervisar tot el que fa una IA. És com si algú que acaba de sortir de la carrera el posassin a treballar de responsable tècnic d’un equip experimentat de programadors: seria impossible exercir bé aquesta feina. Serà un repte formar nous desenvolupadors sèniors en el món de la IA.

6. Qui el fa servir i què us diuen els usuaris? Teniu algun cas concret d’algú que hagi trobat una ajuda o una convocatòria gràcies a BOIBOT?

Mirant les alertes definides al sistema, puc dir que la majoria són ciutadans que busquen ofertes públiques de feina. Sense cap dubte, el que més hi ha són filtres d’«auxiliar administratiu», però n’hi ha una mica de tot: policia, bibliotecari, zelador, pedagog, museus… També hi ha algunes empreses que busquen subvencions, encara que de moment són una minoria.

Un company de feina em va venir a contar que BOIBOT li havia estat útil. En un xat de l’escola del seu fill van preguntar per les subvencions de llibres a l’escola del seu poble (solen sortir a l’octubre). Ell va anar directament a BOIBOT, va filtrar per «subvencions» i hi va afegir un filtre per veure només les del seu poble. A l’instant va veure a la pantalla la subvenció de llibres escolars, que s’havia publicat feia una setmana. Amb el botó de compartir, va enviar la convocatòria al grup. Gràcies al resum, també es va estalviar haver de llegir les vint pàgines de la convocatòria, i va estar molt content de l’estalvi de temps. L’alternativa a BOIBOT era anar al BOIB a revisar a mà les convocatòries publicades durant les darreres setmanes, una feina en què podria haver trigat quinze o vint minuts, amb un poc de sort.

7. És un servei gratuït: com el manteniu, quins costos té i com en penseu garantir la continuïtat?

Actualment només té el cost de l’ús de tokens quan la IA fa l’anàlisi del BOIB cada matí, però això costa només uns cinc cèntims; a més, el BOIB surt tres vegades a la setmana, així que estam parlant de quinze cèntims setmanals. Per a la resta de serveis no tenc cap cost: de moment puc tirar amb les versions gratuïtes de la base de dades i de l’allotjament web, encara que ja som al límit d’haver de millorar la subscripció dels serveis i començar a pagar.

Per garantir-ne la continuïtat, tenc pensats dos tipus d’ingressos. D’una banda, la publicitat, ja sigui amb Google Ads o mitjançant acords amb empreses locals, com acadèmies de preparació d’oposicions o consultories. De l’altra, programes d’afiliació per vendre material de preparació d’oposicions, de manera que cobraré una comissió per cada venda. Així BOIBOT continuarà essent gratuït i continuarà funcionant de manera automàtica sense la meva intervenció, ja que jo treballo a temps complet i no hi puc dedicar gaire temps.

8. Què n’haurien d’aprendre les administracions? Haurien de ser elles mateixes les que oferissin resums com aquests, i amb quines garanties?

M’ha resultat curiós que una cosa tan bàsica encara no l’hagi oferta l’administració pública. Per exemple, poder cercar una feina d’«auxiliar administratiu» a Mallorca sembla una cosa molt senzilla, però almenys a les Illes Balears no era possible fins que no ha aparegut BOIBOT. Crec que denota el poc temps que les administracions dediquen a aquest tipus de tasques. Realment crec que haurien d’oferir ja mecanismes oficials amb totes les garanties.

A més, BOIBOT només cobreix un 10 % de la feina. Un cop el ciutadà s’ha inscrit a una convocatòria, ha de continuar analitzant el BOIB a mà: per exemple, en una oposició ha de continuar buscant si l’han admès o no, la data de l’examen, les llistes provisionals, les dates de reclamació… Tota aquesta feina que un usuari ha de fer de manera proactiva hauria de ser al revés: hauria de ser l’Administració qui avisàs el ciutadà mitjançant un sistema d’alertes personalitzat, per exemple al correu electrònic o al WhatsApp. Per exemple: «La data del teu examen serà el 25/07/2027».