This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
What I Built
I'm a frequent traveler in Brazil, and keeping costs down is my top priority when comparing flights. But finding a cheap option is only part of the work: I also need to compare departure times, stops, dates, personal preferences, and calendar conflicts, which often means opening dozens of tabs :/
That frustration led me to build AirGem: an open-source, privacy-first flight-search copilot that turns a natural-language travel request into a small set of evaluated, explainable flight options.
A user can ask:
Find cheap flights from GRU to POA from January 1, 2027, to January 8, 2027, with a maximum budget of 1500 BRL.
AirGem parses the request, searches current flight data, evaluates candidates, considers calendar conflicts, and explains the selected options. It also shows alternative flights and booking links when the provider returns enough information.
The product idea is a focused travel-planning assistant for frequent travelers, remote workers, and people who want help making a travel decision. These are the users I could imagine paying for a reliable, explainable itinerary shortlist.
My motivation
Flight-search assistants already exist. Google, for example, has an AI-powered Flight Deals experience that interprets natural-language travel ideas and searches its own flight inventory. These products are convenient, but they also tend to keep the experience inside a particular vendor's ecosystem.
That creates a question I kept coming back to: what if the most useful context is my calendar, but I don't want to give a travel platform ongoing access to it?
AirGem takes a narrower and more portable approach. Instead of connecting directly to a primary calendar account, the user can upload an .ics export with one button and set a travel buffer. The calendar is used to rule out conflicts during the search, then discarded with the rest of the transient session data.
The creative part is not trying to build another general-purpose travel chatbot. Rather, I tried to combine four pieces:
- Gemma for interpreting preferences and explaining tradeoffs
- SerpApi for current flight-search data
- deterministic Python logic for filtering and ranking
- a local calendar export for practical schedule awareness
That combination makes the assistant useful without requiring the user to trust one company with the entire travel-planning context. It also means the application can be self-hosted, the inference provider can be changed, and the calendar data can remain under the user's control.
Demo
Try the live demo: https://airgem.onrender.com
The demo asks users to provide their own SerpApi key. The key is sent over HTTPS, kept only in server memory for the transient session, never logged, and cleared after the session expires or the search completes. Optional calendars are handled in the same transient way.
Code
✈️ AirGem
A privacy-first flight-search copilot that finds flights around your real calendar.
AirGem turns a natural-language travel request into a small set of practical flight options. It keeps calendar data local, uses Gemma for semantic work and keeps search, validation, availability checks, and trade-off filtering deterministic.
🚀 Hacktoberfest Week 2: Side Hustle
AirGem is being built as a submission for the Hacktoberfest Open-Source AI Challenge: Week 2 — Side Hustle.
This challenge asks for a new project with open-weight or open-source AI that solves a real problem someone could plausibly pay for. With this, AirGem's target user is a frequent traveler, consultant, freelancer, or remote worker who wants to find an affordable trip without manually comparing flight times against work, classes, appointments, or family commitments.
Why open models?
AirGem uses Gemma through Ollama by default, with OpenRouter as an optional fallback. This keeps the model replaceable and makes…
The project includes local setup instructions, a FastAPI web app, Render deployment configuration, and tests.
How I Built It
AirGem uses Gemma as a bounded interpretation and synthesis layer, not as the source of truth for flight facts.
The application separates model judgment from deterministic application logic:
- Gemma parses the user's request into structured travel preferences.
- SerpApi provides current flight-search results.
- Python code filters, ranks, and normalizes the candidates.
- Gemma synthesizes a concise explanation of why the selected options fit the request.
- The UI presents the result, alternatives, calendar conflicts, and booking links.
This division matters. Gemma can understand that a traveler who prefers the afternoon may reject an evening departure for a meaningful reason, but application-side logic still controls prices, times, availability, and booking actions.
For the hosted demo, inference uses Gemma through OpenRouter and the application runs on Render. A local setup can use Ollama for a more private inference path.
Why Does Open Innovation Matter?
Open innovation made it possible to keep the system modular and honest about what each component does.
Gemma can be run locally through Ollama or accessed through a hosted inference provider. SerpApi supplies live flight data, while the ranking, calendar handling, and safety boundaries remain in the application code. FastAPI and Render make the web experience easy to run locally or deploy as a small public demo.
This also keeps the project from being locked to one model or infrastructure provider. A user can self-host the application, change the inference backend, or inspect the deterministic parts of the decision process.
The hosted version uses rate limiting, bounded request sizes, transient credentials, and in-memory session state. Users still verify the final itinerary and complete booking with the airline or booking provider.
My Agent Session
I used agentic coding extensively, while remaining responsible for the infrastructure, product direction, and key technical decisions.
My First User
A colleague's brother, who was interested in travel assistants and flight-cost optimization, tried AirGem as an early user.
What worked best for him was the comparison flow. Instead of manually remembering every constraint, he could import his calendar with one upload and set a travel buffer. AirGem then used that information while presenting flight options. This reduced the amount he had to keep in his head and helped prevent conflicts he might only have noticed later, which made the search process feel much more streamlined. He also highlighted how some preferences guided the agent on the top selection, for example, "I only want to travel in evenings".
The main limitation was that the available travel days were still too rigid. He wanted the system to search across flexible dates around his calendar instead of treating the requested days as fixed. He asked for flexible-date search to become the top priority for the next iteration.
Would he pay for it? Yes, if AirGem added a few features that would make it useful beyond a single search, especially automatic flight monitoring and flexible-date search. That was a useful signal: the core comparison and calendar workflow already solved a real problem, but recurring value would come from helping users continue to optimize after the first search.
Prize Categories
- Overall category
- Best Use of Gemma
- Best Use of SerpApi
- Best Use of Render
What I Would Build Next
The next priorities are flexible-date search around calendar constraints, automatic flight monitoring, deeper itinerary normalization, more robust round-trip booking-link handling across providers, and richer calendar-aware explanations. Another useful feature would be letting users save and compare multiple itinerary shortlists during the same planning session.
AI-assisted development was used while building and documenting this project.



Top comments (0)