Inspiration
Managers fly blind. They over-staff quiet Tuesdays and get caught short on the Saturday a stadium empties out nearby. Existing tools either require expensive POS integrations or just show you last week's data. We wanted to build something that looks outward, at the world around a venue, and tells a manager what's coming before it arrives.
What it does
Swell predicts how busy any customer-facing location will get, hour by hour, for the next 30 days. It monitors external signals around a venue such as weather forecasts, local events, competitor closures, transport disruptions, school holidays, and sporting fixtures, and synthesises them into a relative busyness index. A manager opens the app each morning, reads a plain-English brief, and knows exactly how many staff to schedule. All done using just an address and a business type.
How we built it
We built a FastAPI backend that polls six live data sources every six hours. We use Open-Meteo for weather, Eventbrite for local events, Google Places for competitor status, Google Popular Times for baseline busyness curves, Transport NSW and Live Traffic NSW for disruptions, alongside static lookup tables for school terms, public holidays, sporting fixtures, and university calendars. These sources are intelligently filtered by our first LLM, where it reasons about which ones are actually relevant to that specific business type and location before anything reaches the forecasting model. Each signal is then preprocessed into a standardised uplift score and confidence value. Those signals feed an XGBoost regression model trained on Google Popular Times baseline curves, which outputs an hourly busyness index for the next 30 days. A Gemini LLM call turns the top prediction into a plain-English staffing brief. Our React frontend displays everything across a daily brief, a yearly heatmap, a signal breakdown per day, and an accuracy history tracker.
Challenges we ran into
Calibrating uplift scores across wildly different signal types was harder than expected. For example, a Coldplay concert two kilometres away affects foot traffic very differently to a bus route closure fifty metres from the door. Getting the confidence weighting right so that a low-confidence weather forecast doesn't drown out a high-confidence public holiday took a lot of iteration.
Accomplishments that we're proud of
Overall, we are proud of creating a fully functional end-to-end pipeline with live signal ingestion, preprocessing, model inference, LLM brief generation, and a polished React frontend within the short hackathon timespan.
What we learned
Building Swell pushed us to think about AI as a pipeline rather than a single call. Chaining two LLMs with a statistical model in between taught us a lot about how to structure prompts so that the first model produces output the second can reason about cleanly. We also learned how much prompt design matters at the filtering stage, given that changes in how you describe the business context to the first LLM produce dramatically different relevance decisions downstream. Integrating six live data sources into a single coherent pipeline gave us a much deeper appreciation for data normalisation.
What's next for Swell
Our biggest focus would be creating a mobile-native manager app so the daily brief lands as a push notification before the morning shift starts.
Demo and Presentation Video Linked in GitHub Repo
Built With
- css
- eventbrite
- fastapi
- framer
- google-gemini
- google-places
- google-popular-times
- javascript
- live-traffic-nsw
- open-meteo
- populartimes
- python
- react
- sqlite
- tailwind
- transport-nsw
Log in or sign up for Devpost to join the conversation.