Inspiration
Campus life has plenty to offer, but finding your place can be surprisingly difficult. Events are scattered across websites, flyers, and group chats, making it easy to miss something you would have loved. We built UNCitall to help students discover their Carolina community. Instead of scrolling through endless listings, students can swipe through events, save their favorites, and connect with clubs—all in one place.
What it does
UNCitall turns campus discovery into a personalized, interactive experience:
- Swipe to discover: Browse real campus events with recommendations that balance your interests, upcoming dates, and variety.
- Save and plan: Keep interesting events in your saved list, organize your calendar, and export events to your phone.
- Connect with clubs: Join club chats with invite codes and communicate with other members.
- Connect through iMessage: Photon powers account linking and supports club notifications and replies for registered senders.
- Scan a poster: Take a photo or upload a flyer. Gemini extracts its visible text and finds similar events and clubs already listed in UNCitall.
- Ask Rameses: Our Carolina-inspired mascot helps students explore campus events using Gemini, with recommendations grounded in actual listings. The interface brings these features together with a Frutiger Aero look: floating bubbles, glossy controls, blue skies, and a playful Rameses mascot. ##How we built it We built UNCitall with React, TypeScript, and TanStack Start, using Tailwind CSS for the responsive interface. Our event importer brings together campus event sources, while the recommendation engine learns from students’ swipes. Supabase handles authentication, account synchronization, and club data. Google Gemini powers Rameses and poster text extraction. Poster matches are checked against existing listings, and Rameses’ event suggestions are validated so the assistant cannot invent events. For messaging, we integrated Photon Spectrum through a separate running agent that connects iMessage activity to the app. We deployed the website on Netlify. ##Challenges we ran into One of our biggest challenges was balancing personalization with timing. Prioritizing interests too heavily could surface weeks of recurring club events, while prioritizing dates too heavily made the feed feel repetitive. We refined the ranking to combine interests with a gradual time decay and suppress repetitive listings. We also worked through authentication redirects, club chat crashes, and the differences between local development and a live deployment. Mobile design required its own iteration. Filters, navigation, and controls that worked on a laptop could overwhelm a phone screen, so we simplified layouts and made swiping the main interaction. ##What we learned We learned that a useful recommendation system needs more than a good interest score—it also needs freshness, diversity, and reliable feedback. We also learned how much integration work sits behind a simple user experience. Authentication, messaging, and AI each have different constraints, and making them work together required careful testing and clear fallback behavior. ##Accomplishments that we’re proud of We brought discovery, planning, club conversations, and poster scanning into one cohesive campus experience. We’re especially proud of Rameses, the mobile interface, and a poster scanner that connects physical flyers to real digital listings. Our automated test suite now includes 106 passing tests, and we verified Gemini poster extraction against real campus events. ##What’s next for UNCitall We want to expand campus event coverage, improve recommendations with more student feedback, and make club onboarding easier. We also plan to move the Photon agent to an always-on host and complete broader testing of iMessage delivery between multiple members.
Built With
- bun
- css
- gemini
- leaflet.js
- netlify
- openstreetmap
- photon
- postgresql
- react
- supabase
- tailwind
- tanstack
- typescript
- vite
- vitest
Log in or sign up for Devpost to join the conversation.