Inspiration
Artificial intelligence (AI) is the theory and development of computer systems able to perform tasks normally requiring human intelligence. I took inspiration from S1E3 of Abbott Elementary (4:21) where teachers are underfunded, unable to even sufficiently decorate their classroom walls - "the soul of the classroom". I realised that even in Singapore schools, many walls are student decorated and it clicked. What if there's a way to create posters to foster an engaging, content relevant learning environment. Thus, this project focuses on developing AI-generated classroom posters to enhance student learning experiences. Starting out, I will target kindergarten and children aged 0 to 6. These posters, while computationally intensive, are less complex than infographics for secondary schools, polytechnics, or universities, and benefit from a smaller, more manageable dataset for accurate and rapid training of generative AI models. The approach involves a two-step process: integrating open-source AI model (e.g., Llama, Deepseek, MastraAI) with syllabus content as high-level inputs, and displaying the outputs on fixed digital panels in classrooms.
What it does
More of a workflow than an agentic model: The backend system is built with FastAPI (Python), running in a cloud or local environment with full access to third-party libraries (requests, PIL, numpy, etc.). Its responsibilities include:
- Accept teacher input via a lightweight HTML/CSS/JS frontend.
- Use Groq LLM to expand the topic into a rich, structured image-generation prompt.
- Call Replicate AI (or Hugging Face) to synthesize the image based on the Groq-enhanced prompt.
- Convert/process the generated image into ESP32 OLED-compatible format (1-bit, bitmap, or XBM).
- Expose an HTTP endpoint for the ESP32 to fetch the processed image.
The ESP32 will then:
- Connect to Wi-Fi.
- Periodically poll or receive a push notification (via HTTP or WebSocket) to fetch new images.
- Render the bitmap onto the 0.96” OLED display using SSD1306-compatible libraries (Adafruit_SSD1306, U8g2, etc.).
How I built it
Firstly, I started by taking code documentations in GROQ and had it generate a sufficiently detailed prompt from a high-level teacher input (e.g. "Photosynthesis"). I used online articles on Medium about Groq and Image Generation (1) as well as API Access with Hugging Face Inference Endpoints (2). I wanted a cost-effective/ free model that has excellent instruction following capabilities and fine tuning capacity for image generation and eventually landed on Stable Diffusion and Flux.1.
Instead of coding right away, I started off by engineering a highly detailed prompt to specify how my text generation LLM (i.e. Groq) follows instructions (3). By doing this, the LLM is able to fine tune its output according to what the teacher puts in. The prompt includes system constraints and the description of the poster. Given the multiple example keywords refined by Groq, the image generator is able to achieve competitive performance a.k.a. few-shot learning.
Using the given coding snippets from Hugging Face, AI generated API Endpoints for image generation is able to leverage them cost-effectively using free models. Finally, the generated poster gets turned into a 128x64 bitmap which is then exposed to an ESP32 via a HTTP Endpoint (not done).
Challenges we ran into
At first, I wanted to use the Espressif IDE but I found that for my lightweight project, the Arduino IDE is sufficient with libraries such as Wifi.h or HTTPClient.h. However, I think my biggest challenge was integrating the hardware and software component together. It required many additional layers of complexity such as using common servers, finding out how to use POST and GET to upload the .xbm file autonomously. While I have not yet completed this feature, my next steps will certainly be to get the generated bitmap onto the display.
Accomplishments that we're proud of
First project involving full-stack app development and use of AI text and image generation as well as hardware such as ESP32 and OLED displays.
What I learned
Establishing your project scope early on is important to avoid struggling in the early stages.
What's next for NeuPoster
Scaling towards bigger and better AI models with more parameters and agentic behaviour.
Built With
- css
- esp32
- fastapi
- groq
- html
- huggingfaceinferenceendpoint
- javascript
- oled
- python
- venv
Log in or sign up for Devpost to join the conversation.