Inspiration

Last year we decided to create a platform for undergraduate students to discover new events before the deadline. Because nothing hurts more than missing the registration deadline for an event that you've been planning to addend for months. However running an event aggregator page quickly turned into an exhausting chore. The administrative work took hours every week. We burned out and the project came to a standstill.

With new motivation from missing another deadline, I decided to build EventBot to automate the friction away so we can focus on bringing people together.

What it does

EventBot is an AI-powered Discord bot that transforms unstructured event text into a complete promotional package in seconds.

When we drops raw event details into a Discord thread, EventBot: - Parses Key Event Data: Extracts crucial metadata such as title, date, venue, and descriptions using AI. - Generates Visual Posters: Automatically renders clean, professional poster images tailored to the event details. - Drafts Social Captions: Writes concise, engaging copy tailored for social media posts. - Outputs Website Markdown: Produces clean, raw Markdown files ready to copy-paste directly into our website. - Supports Easy Iteration: Allows us to trigger instant poster re-generations if we want a fresh visual style. We are already using it in our event aggregator page.

How we built it

EventBot is built with node to be triggered directly inside Discord:

  • Core Runtime: Built on Node.js (v22+) using discord.js to handle real-time message events and command interactions.
  • AI: Powered by the Google Gemini API, which parses messy, unstructured user text into structured JSON metadata (extracting title, schedule, key highlights, and context) and drafts social media captions.
  • Poster Rendering : A poster is generated by dynamically passing query parameters in a dynamic locally hosted website which is rendered in Puppeteer.

Challenges we ran into

First of all we ran into an issue with dynamically rendering HTML into image. Headless browser automation with Puppeteer can be resource-intensive and prone to layout overflow when text length varies wildly. Crafting flexible HTML/CSS templates that scales required extensive testing.

Ensuring Google Gemini consistently returned valid, predictably structured JSON for down-stream HTML compilation required strict prompt engineering and fallback handling.

Accomplishments that we're proud of

I'm proud to solve a real world problem that has been bugging me for months. With this we can run our event aggregator page smoothly without wasting tooo much time on designing engaging posters. With this tool we have saved 99% time spent on each post.

What we learned

LLMs Excel as Structured Data Parsers. Using Gemini not just for text generation, but as an intermediate translator converting human chaos into clean JSON, makes building dynamic UI pipelines significantly simpler. This hackathon has also been an great opportunity to learn Google's SDK for interacting with their AI API.

Members @TasfiqulTapu - solo, created everything

Built With

  • discord.js
  • google/genai
  • node.js
  • puppeteer
Share this project:

Updates

Submission history