Inspiration

“We should hang out sometime!” We've all said it. We've all meant it. But somehow, “sometime” never comes.

Between conflicting schedules, endless group chats, and the classic “anything is fine with me,” organising a simple meetup can feel more complicated than the meetup itself. I realised that the problem wasn't that people didn't want to meet. It was that planning had become unnecessarily difficult.

Being a university student with a busy schedule, many times I would wish that making plans with friends from start to end is much easier, and tools like when2meet only solves one small problem, and the design and user interface is bad and shallow Hence I wanted to bring both together in an experience that feels easy yet effective.

That's how Bloom began.

What Bloom does

Bloom transforms chaotic group planning into three simple steps:

  1. WHEN — Find time together Instead of exchanging endless messages about availability, friends paint their free hours onto an interactive weekly calendar. A shared heatmap highlights overlapping availability and helps the group find a time that works.

  2. WHERE — Find somewhere everyone loves Once the group has identified a time, Bloom helps them decide where to go. Users can search for restaurants, cafés, shops, and activities across Singapore, including different branches of the same business. A typo-tolerant search helps people discover venues even when they don't know the exact spelling. Everyone swipes Pass, Maybe, or Love It, and Bloom brings the group's preferences together.

  3. BLOOM — Make the plan happen As friends participate, an animated flower blooms, turning collective progress into something visual and rewarding. Bloom then presents a suggested plan containing the date, time, venue, and participants, along with a weather forecast. Users can adjust the plan, export it to their calendars, and share the invitation with their friends. No accounts are required to get started, and a demo mode lets visitors explore Bloom with simulated friends.

How I built it

I developed Bloom as a lightweight web application, prioritising accessibility, responsiveness, and simplicity, with the help of AI models like Claude and Codex.

Frontend: HTML, CSS, and vanilla JavaScript power the interactive availability calendar, swipe-based voting, animations, and responsive interface.

Backend: Python manages group creation, password verification, sessions, voting, and application APIs.

Database: Supabase PostgreSQL stores real groups, members, availability, and place suggestions, with server-side database access and transactional operations.

Place discovery: I built a searchable Singapore venue index using OpenStreetMap data retrieved through Overpass. Fuzzy matching helps accommodate spelling variations, while Photon and Nominatim supplement place discovery and details.

Weather: Open-Meteo provides forecasts to help users make more informed decisions, especially for outdoor activities.

Challenges I ran into

  1. Finding real venues without relying on paid APIs My initial Photon-based search couldn't reliably find different branches of popular Singapore businesses. For example, searching for McDonald's surfaced only a fraction of the outlets recorded in OpenStreetMap. To address this, I developed a local place index with fuzzy matching, branch discovery, location-aware ranking, and caching, reducing reliance on repeated public API requests.

  2. Building a reliable multi-user backend Group planning requires different members to update availability and votes without interfering with one another. I moved from SQLite to Supabase PostgreSQL and introduced transaction handling and concurrency safeguards, while preserving Bloom's group-password and session-token system.

  3. Making planning feel enjoyable A technically functional scheduling tool isn't necessarily one people want to use. I challenged myself to turn repetitive tasks into an intuitive, rewarding journey through interactive calendar painting, swipe voting, and the Bloom progress animation.

Accomplishments that I'm proud of

I'm proud of turning what could have been three disconnected tools into one cohesive experience and creating an end-to-end planning journey, from availability to venue selection to a final plan.

Developing a Singapore-focused venue search that tolerates spelling mistakes and helps distinguish business branches, and having the demo friends to try it out as I go.

Designing accessibility options that make the experience more inclusive, and the idea of creating a visual identity where the flower doesn't just decorate the interface — it represents the group's progress. Building automated tests for critical backend and search functionality.

What I learned

Building Bloom taught me that good technology isn't just about solving a functional problem — it's about understanding the human behaviour behind it.

I learned how small interaction-design decisions can reduce friction, encourage participation, and make an otherwise frustrating experience more enjoyable. (based on my past experience with existing tools as well)

On the technical side, I gained experience working with geospatial data, fuzzy search, relational databases, API integration, concurrency, automated testing, and backend architecture. Most importantly, I learned to question whether every feature genuinely makes planning easier.

What's next for Bloom

I want Bloom to grow beyond a hackathon prototype into a platform that makes getting together easier.

Future possibilities include: Coming up with better features and functionalities Personal accounts and saved friend groups. Calendar integrations that automatically identify mutually available times. Smarter venue recommendations based on group preferences, location, and budget. Notifications and reminders so plans don't lose momentum.

Ultimately, my vision is for Bloom to help people spend less time trying to meet and more time actually being together.

Built With

Share this project:

Updates

Submission history