SkySwift AI is a hackathon travel-planning agent that turns a natural chat into a complete trip package. The user talks like a customer, the agent understands destination, dates, interests, and budget, then presents clear itinerary options with flights, hotels, activities, and total price.
- The user starts a chat with SkySwift AI.
- The agent asks for a destination city.
- After the destination, the agent suggests activities before asking for budget.
- The user provides interests, flexible dates, and budget in natural language.
- OpenRouter helps extract structured trip preferences from the conversation.
- The planner searches the local travel catalog.
- The UI shows 3 itinerary options with flight, hotel, activities, price, and match score.
- The user selects an option and continues toward booking.
- Chat-first travel planning experience.
- OpenRouter-powered natural language understanding.
- Local fallback parser when the API is unavailable.
- City-based demo destination catalog.
- Natural date parsing, including non-strict formats.
- Streamed assistant responses for a modern chatbot feel.
- Clean itinerary cards with varied activities per option.
- Flight, hotel, activity, total cost, and match score display.
- Optional FastAPI mock server for API-style testing.
- Full pytest coverage for agent, planner, mock server, and integration flow.
| Layer | Tech |
|---|---|
| UI | Streamlit |
| Agent flow | LangGraph-style state graph |
| LLM provider | OpenRouter |
| Validation | Pydantic |
| Data API | FastAPI mock server |
| HTTP client | HTTPX |
| Tests | Pytest, Hypothesis |
travel_agent/
app.py Streamlit chat UI
agent.py Conversation state and agent flow
planner.py Itinerary planning, scoring, and backtracking
models.py Pydantic models
openrouter_client.py OpenRouter integration
data/
static.py Embedded demo travel catalog
client.py Data client with static fallback
mock_server.py FastAPI mock API
tests/ System-level tests
travel_agent/tests/ Package-level tests
docs/ Project docs and screenshots
scripts/ Utility scripts
scripts/compat/ Legacy compatibility wrappers
Tokyo, Paris, Bali, New York, Kyoto, Nice, Rome,
Athens, Bangkok, Barcelona, London, Mexico City, Tel Aviv
python -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txtCreate a local .env file in the project root. Do not commit it.
OPENROUTER_API_KEY=your_key_here
OPENROUTER_ENABLED=true
OPENROUTER_MODEL=openai/gpt-4o-mini
SkySwift AI still runs without OpenRouter by using the local parser and static catalog.
.venv\Scripts\streamlit.exe run travel_agent\app.pyOpen:
http://localhost:8501
The app can run without this server, but it is useful for API-style testing.
.venv\Scripts\python.exe -m uvicorn travel_agent.data.mock_server:app --host 127.0.0.1 --port 8000.venv\Scripts\python.exe -m pytestCurrent expected result:
119 passed
SkySwift AI is built to demo clearly:
- The first screen is simple and customer-friendly.
- The conversation feels like an AI agent, not a static form.
- The final planning output is visual and easy to compare.
- The project works offline with mock/static data, but can use OpenRouter for smarter conversation.