Beholder
Inspiration
A la hora de empezar el proyecto, pensamos en los principales problemas que habíamos encontrado nosotros mismos de chiquitos cuándo nuestros papás empezaron a querer regular nuestro acceso a un internet relativamente nuevo. Muchos de nosotros nos encontramos con que un gran problema era que luego nuestros papás nos vigilaban de forma compulsiva, lo que de cierta forma generaba tensiones innecesarias en la familia, así como limitar de forma "injustificada" nuestro acceso a juegos que en realidad si eran para nuestra edad. Por esto mismo, decidimos realizar un sistema de control parental que pudiera monitorear interacciones en línea sin poner la presión en el padre o en el hijo, si no que en la IA.
What it does
Beholder es una implementación de servidor usuario que utiliza un script de Python y un dashboard en web para que vigile y te notifique de las posibles interacciones peligrosas que encuentre en el día a día. Básicamente, el script que se encuentra en la computadora del niño incluye un keylogger, el cual lee constantemente lo que teclea el niño durante el día, y con ayuda de varios filtros, es capaz de descartar las teclas que utiliza para su juego. Una vez identificada una oración de chat, el texto es procesado por una IA para determinar mediante un modelo entrenado si detecta algún tipo de comportamiento violento, de manipulación y/o grooming. Toda esta información es enviada a un servidor y una base de datos, las cuales pueden ser accedidas a través de un dashboard en web para los papás. Aquí se puede ver un live feed que menciona en vivo que está haciendo el niño, una bitácota con todos los diálogos peligrosos del niño junto con fotografías para tener más contexto, y finalmente, una tabla con el tipo de interacciones y la severidad de las mismas. Igualmente queríamos que el niño fuera capaz de aprender porque ciertas interacciones en línea eran peligrosas para él, por eso, si se detecta una de estas, el niño verá un pop-up explicándole la situación y una lista de ejemplos de esta, y tendrá que escribir un párrafo donde confirma entender lo que acaba de leer o de lo contrario se cerrará la aplicación que esté usando (e.g. Roblox).
How we built it
En este caso optamos por utilizar Python para el script, dada su facilidad para acceder a las entradas del teclado así como para procesar esta información mediante el modelo de IA, que en este caso fue Gemini Flash 1.5. Toda la información del script es enviada mediante HTTP Requests y Websockets a un servidor en Google Cloud mediante FastAPI, de ahí, el servidor puede guardar datos como el tipo de incidente, la hora, la gravedad y la foto en una base de datos en MongoDB Atlas, siendo hasheada antes de guardarse para procurar la privacidad. Finalmente, estos datos son solicitados por el Dashboard en Web, el cuál construimos utilizando React.
Challenges we ran into
El mayor de los retos fue que ninguno de nosotros habíamos realizado un proyecto que incluyera tanto "bajo nivel" antes, por lo que fue un gran reto conectar el script con el dashboard mediante requests. Igualmente, al utilizar únicamente Python en el script de la computadora del niño, tanto el keylogger como la interfaz gráfica de los pop-ups de se hacen en Python, lo cuál generó varios problemas de multi-threading, los cuales arreglamos al integrar todas las clases en un mismo archivo y correrlos usando concurrencia. Finalmente, este ha sido el proyecto más planeado que hemos tenido, donde realizamos diagramas de flujo, tablas de rooteo para nuestros end-points, diagramas UML y listas de milestones, si bien no fue una complicación, es cierto que fue un reto el pensar tan a futuro acerca de como se relacionaría todo en el proyecto, pero al final del día, esto nos permitió trabajar de forma mucho más ordenada.
Accomplishments that we're proud of and what we learned from them
Sonará un poco como broma, pero de todos los últimos hackathones que hemos asistido, este es en el que hemos dormido más, y no es porque hayamos trabajado menos, sino que después de todas las experiencias previas que hemos tenido, pudimos trabajar de forma más eficiente, permitiéndonos incluir muchas más implementaciones en nuestro proyecto en un tiempo record. Igualmente indagamos en tecnologías nuevas o que no habíamos podido dominar en el pasado, por ejemplo, fue la primera vez que trabajamos con Gemini AI, o con cualquier tipo de extracción de texto por keylogger, además, en el pasado cuándo habíamos intentado utilizar MongoDB Atlas habíamos fallado miserablemente, pero esta vez lo logramos! Por último, este proyecto fue extremadamente limpio y ordenado, desde la organización, hasta el código, el control de versiones en Git, y finalmente, nuestro front-end, el cuál consideramos que ha sido de los más bonitos que hemos hecho.
What's next for Beholder
Nos encantaría poder cubrir más aspectos en los que los niños puedan verse vulnerados virtualmente, un ejemplo que tuvimos al inicio del desarrollo pero se volvió inviable debido al tiempo fue el chat de voz, pero dado que el 70% de casos de grooming son por chat de texto, pensamos en priorizarlo, sin embargo, nos encantaría poder añadir esa función. También nos quedamos con ganas de aprovechar más el modelo de Gemini, un ejemplo que tuvimos fue utilizar el reconocimiento de imágenes para poder tener en cuenta no solo el mensaje del niño a la hora de determinar el nivel de peligro, si no que también los mensajes de su remitente.
Built With
- bash
- fastapi
- gemini-api
- google-cloud
- keyboard
- mongodb-atlas
- powershell
- psutil
- python
- react
- shadcn
- tkinter
- typescript
- vite
Log in or sign up for Devpost to join the conversation.