Jadwel, AI Travel Discovery Platform
CCSIT Graduation Project Showcase 11 · IAU
Discovery and scheduling platform covering 10 Saudi cities and 2,000+ verified places. AI trip-planning wizard, bilingual RAG chat, hybrid ML search, and tour-guide hiring, not another booking site.

Key Metrics
Problem
Trip planning in Saudi Arabia was fragmented across spreadsheets, group chats, and generic booking sites, none of which surfaced authentic places or made it easy to turn a shortlist into an actual day-by-day schedule. Existing tools also treated Arabic as an afterthought, a translated UI bolted onto English-only retrieval.
My Role
Project lead for a 5-person graduation team. I was also the frontend lead, one of the backend leads, and one of the AI leads, working across the entire stack from the RAG chat pipeline to the schedule builder UI.
Approach
We split the platform into three repos sharing one 17-table Supabase schema with row-level security on every table: a Next.js web app with an 8-page admin dashboard, a FastAPI ML backend hosting 10 techniques, and a React Native mobile app in progress. The recommender blends content similarity, ALS collaborative filtering, and discovery-status boosts into a single weighted score; a LightGBM classifier ranks discovery candidates using trend-detector velocity features and assigns Hidden Gem, Local Favorite, or Trending badges from real signals instead of manual tagging; an OR-Tools solver sequences the schedule builder's daily routes. Retrieval for the chat assistant runs hybrid RAG: semantic vector search over 384-dimension multilingual embeddings fused with BM25 lexical search via reciprocal rank fusion, so results hold up whether the query comes in Arabic or English. Cold-start users get an onboarding classifier and popularity-based defaults instead of an empty state, and a fallback chain keeps the assistant answering if a retrieval step fails, degrading gracefully instead of breaking.
Tradeoffs
Building custom hybrid search (BM25 + pgvector with RRF) instead of an off-the-shelf search service cost more setup time but was necessary for accurate Arabic cross-lingual results, and it paid off: hybrid search scored 0.96 NDCG@10 against a 0.70 target, and the route optimizer landed 100% of routes within 5% of optimal. Not every technique hit its target in evaluation, the cross-lingual ranking model and the discovery classifier both underperformed their accuracy targets, which we treated as a real finding rather than something to hide: we shipped the techniques that measurably worked and kept the eval numbers honest instead of only showcasing the wins. Mobile shipped as a work in progress rather than a finished companion app, the web platform and ML backend were the priority for the showcase deadline.
FIG. 08 · PLATFORM ARCHITECTURE
3 repos → 1 schema
jadwel-web
Next.js, 8-page admin dashboard
jadwel-app
React Native, in progress for Android/iOS
jadwel-ml
FastAPI, 10 ML techniques
Shared schema
17 tables, row-level security on every one
One Supabase instance is the source of truth. No repo owns its own copy of the data.
FIG. 06 · HYBRID RAG RETRIEVAL
question → vector + BM25 → RRF → answer
In
Question, EN or AR
Equally fluent in either language, not a translated UI
Core
Hybrid RAG
384-dim multilingual vectors + BM25, fused via reciprocal rank fusion
A fallback chain sits underneath: cold-start users get an onboarding classifier and popularity defaults, and the system degrades gracefully instead of breaking if a step fails.
Out
Chat answer
Grounded in real curated places, not guesses
Map panel pins
Discovery-status color coding
FIG. 09 · RECOMMENDER BLEND
content + collaborative + discovery
Content similarity
0.5
Place attributes match
ALS collaborative
0.3
Gated at 5+ interactions
Discovery boost
0.2
Hidden-gem +0.30 · trending +0.20
Final score
0.5·content + 0.3·ALS + 0.2·discovery
New users get content-only scoring until they have enough interactions for collaborative filtering to mean anything.
Outcomes
- Presented live at IAU's CCSIT Graduation Project Showcase 11, supervised by Dr. Atta-ur-Rahman
- Shipped a live web platform covering 10 cities and 2,000+ verified places on one shared schema
- Full bilingual (EN/AR) support with right-to-left layout, the chat assistant reasons equally well in either language
- Hybrid search hit 0.96 NDCG@10 and the route optimizer landed 100% of plans within 5% of optimal, both beating their eval targets
- Led a 5-person team while working hands-on across frontend, backend, and AI

