🌟 Inspiration

Campus life at NUS is vibrant, but it's buried under a mountain of noise. 🔊 With hundreds of Telegram channels for different clubs, faculties, and interest groups, students face "Information Overload"—missing out on amazing opportunities because their notifications are permanently muted. 🔕 We wanted to create a "central heartbeat" for campus; a way to filter the noise and bring the right events directly to the students who care about them. ❤️‍🔥

🚀 What it does

UniPulse is an intelligent Telegram-based event aggregator that bridges the gap between organizers and students:

  • For Students: A personalized experience. 👤 After a secure NUS email verification, students subscribe to specific interest hashtags (e.g., #hackathons, #sports, #dating). They receive a curated feed and daily digests, ensuring they only see what matters to them. 📅
  • For Admins: A zero-friction toolkit. 🛠️ Club leads simply post in their own channels using the #unipulse tag. Our bot automatically scrapes the metadata, images, and event details to populate the central database. 📥
  • Smart Features: Integrated "Add to Calendar" functionality and automated reminders to ensure high event turnout. 🔔

🏗️ How we built it

We designed UniPulse with a focus on scalability and resilience. The architecture follows a "Node-based" approach where the bot acts as a listener and a distributor. We used a webhook-based system to ensure real-time responsiveness while maintaining high security. 🛡️

🛠️ Technologies used

  • Languages: Python 🐍 (FastAPI / python-telegram-bot)
  • Database: Supabase ⚡ (PostgreSQL) with Row Level Security (RLS)
  • Authentication: Supabase Auth with custom SMTP for NUS email verification 📧
  • Hosting: Render ☁️ (Web Service)
  • Monitoring: BetterStack 📈 (Uptime & Heartbeat monitoring)
  • Design: Figma 🎨

🚧 Challenges we ran into

  • Security & Webhooks: Moving away from simple polling to a secure webhook architecture required implementing secret path obfuscation and token verification to prevent spoofing. 🕵️‍♂️
  • Database Synchronization: Managing the "Delete" flow between Supabase Auth and our public accounts table required setting up complex PostgreSQL foreign key constraints with ON DELETE CASCADE. ⛓️
  • Hosting Constraints: Navigating the "spin-down" behavior of free-tier hosting meant we had to implement a custom heartbeat system to keep the bot responsive 24/7. 💓

🏅 Accomplishments that we're proud of

  • Seamless Integration: Building a bot that requires zero change in behavior for club admins—they just use a hashtag, and we do the rest. ✨
  • Robust Schema: Creating a relational database that handles many-to-many relationships for event categorization efficiently. 📊
  • Verification Flow: Successfully implementing a secure NUS-only verification system to ensure a safe community environment. 🎓

📚 What we learned

We gained deep insights into the Telegram Bot API and the importance of a "security-first" mindset when dealing with webhooks. 🔐 We also learned how to leverage Supabase’s relational power to handle complex user subscriptions and how to optimize a Python backend for high-concurrency event listening. 🏎️

🔮 What's next for UniPulse

We plan to expand UniPulse by implementing a Telegram Mini App (TMA) to provide a rich, visual dashboard for students to browse historical events. 📱 We also aim to introduce AI-driven event recommendations based on user engagement patterns.

Built With

Share this project:

Updates