Skip to content
CASE STUDY

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.

Jadwel, AI Travel Discovery Platform
Jadwel, AI Travel Discovery Platform, screenshot 1 of 18
01/18

Key Metrics

10
Cities
2,000+
Places
5
Team

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

Three surfaces, one source of truth. Once mobile ships, a place saved there shows up on web with no sync job needed.

FIG. 06 · HYBRID RAG RETRIEVAL

question → vector + BM25 → RRF → answer

Fusing two retrieval methods instead of picking one. Vector search catches meaning, BM25 catches exact terms, RRF combines their rankings.

FIG. 09 · RECOMMENDER BLEND

content + collaborative + discovery

Cold start is handled by weighting, not a separate code path: ALS contributes nothing until a user has earned it.

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

Tech Stack

NX
RX
TS
TW
SB
GPT
GEM
FA
EXP
ZS
INTL
MAPS
LGB
ORT

Want to talk about this project or a similar problem?

Get in touch

Mohammad Al-Sadah · Case study