The project
Lankora AI is a hybrid machine-learning framework that extracts a traveller's interests from their own social media posts and builds a daily itinerary for Sri Lanka that fits those interests, the weather, real road travel times and a budget.
- Research title
- A Hybrid Machine Learning Framework for Personalized Tourism Itinerary Recommendation in Sri Lanka Using Social Media Interest Extraction and Weather-Aware Constraint Optimization
- Institute
- Nāgānanda International Institute for Buddhist Studies (NIIBS)
- Researcher
- Buddhi Rangana
- Programme
- BSc in Information Technology, final-year research project
- Status
- Working prototype; evaluation in progress
The problem
Planning a trip to Sri Lanka is harder than the map suggests.
Objectives
Read interests from posts
Turn unstructured captions into a normalised profile across heritage, adventure, wildlife, beach and water sports, and relaxation, using NLP and open-source libraries.
Respect the weather
Score places with live meteorological data and penalise or hold back weather-sensitive activities during unfavourable conditions.
Plan realistic days
Solve an Orienteering Problem with Time Windows with a genetic algorithm, using real road travel times, opening hours and budget limits.
Evaluate with people
Measure the system against baselines and with a within-subject user study of 50 participants using the System Usability Scale.
How it works
Four stages turn a handful of posts into a day-by-day plan.
The planner works over 363 curated places in 64 weather zones and 32 activity types, with entry fees, opening hours, closure days and weather tolerances for each.
Results so far
Measured against the targets in the research proposal. Every result is reported, including the ones that miss.
| Measure | Result | Status |
|---|---|---|
| Route optimality (GA vs exact solver, 50 instances of 12 places) | Mean gap 0.20%, worst 1.83% | Met |
| Constraint feasibility (50 scenarios × 10 runs) | 100% of 500 runs fully feasible | Met |
| Planning time (warm cache) | Mean 1.2 s, slowest 3.4 s | Met |
| Weather conflicts, hourly forecast | 134 conflicts reduced to 0 in rainy windows | Met |
| Weather conflicts, 3-hourly forecast (free plan) | 59% to 69% fewer | Not met |
| Interest extraction, MRR (86 profiles, cross-validated) | 0.88 | Met |
| Interest extraction, macro F1 | 0.68 | Not met |
| Usability (SUS, 50 participants) | Study not yet run | Pending |
Privacy and ethics
The system handles social media text, so privacy comes first. It is designed around Sri Lanka's Personal Data Protection Act, No. 9 of 2022.
Accounts add a name and e-mail address (or a Google or Facebook identity) so that each planning session is private to its owner. Passwords are stored only as Argon2id hashes, and sessions use short-lived signed tokens. Data collection is limited to a controlled group of opt-in participants.
Technology
Frontend
- Next.js
- React
- TypeScript
- Tailwind CSS
- shadcn/ui
- Framer Motion
- Leaflet
- Recharts
- jsPDF
Backend
- Python 3.13
- FastAPI
- Pydantic
- Uvicorn
- Argon2
- JWT
NLP and ML
- PyTorch
- Hugging Face Transformers
- spaCy
- scikit-learn
- Instaloader
- facebook-scraper
Data and routing
- MongoDB Atlas
- Redis
- OSRM
- OpenStreetMap
- OpenWeatherMap
- OR-Tools
Delivery
- GitHub Actions
- Render
- Vercel
- Hugging Face Hub
- pytest
Data sources and credits
- Tourist Reviews of Sri Lankan DestinationsZenodo, CC BY 4.0 (DOI 10.5281/zenodo.10073091). Basis of the interest model's training text.
- OpenStreetMapRoad network for routing and place coordinates. © OpenStreetMap contributors, ODbL.
- OpenWeatherMapCurrent weather and the hourly and 3-hourly forecasts used for planning.
- Sri Lanka Tourism Development AuthorityReference for attractions, accommodation and statistics.
- Open Data Portal Sri LankaOpen datasets on places and accommodation.
- Wikimedia CommonsAll photographs, credited in the footer. Licences CC BY-SA 3.0 and 4.0.
Models: bert-base-uncased and paraphrase-multilingual-MiniLM-L12-v2 from the Hugging Face Hub.
Limits and next steps
A research prototype is honest about what it does not do yet.
