{"id":24607603,"url":"https://github.com/adrianmarino/recommendations-toy-example","last_synced_at":"2026-04-05T23:02:56.132Z","repository":{"id":89013149,"uuid":"277407770","full_name":"adrianmarino/recommendations-toy-example","owner":"adrianmarino","description":"Tourism recommendation system","archived":false,"fork":false,"pushed_at":"2021-02-04T21:38:56.000Z","size":3325,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-08T07:28:53.338Z","etag":null,"topics":["flask","jupyter","neo4j","python","recommendation-system"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adrianmarino.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-07-06T00:36:27.000Z","updated_at":"2023-01-13T08:27:57.000Z","dependencies_parsed_at":"2023-06-13T13:30:17.663Z","dependency_job_id":null,"html_url":"https://github.com/adrianmarino/recommendations-toy-example","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/adrianmarino/recommendations-toy-example","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianmarino%2Frecommendations-toy-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianmarino%2Frecommendations-toy-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianmarino%2Frecommendations-toy-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianmarino%2Frecommendations-toy-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adrianmarino","download_url":"https://codeload.github.com/adrianmarino/recommendations-toy-example/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrianmarino%2Frecommendations-toy-example/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31452901,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T21:22:52.476Z","status":"ssl_error","status_checked_at":"2026-04-05T21:22:51.943Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["flask","jupyter","neo4j","python","recommendation-system"],"created_at":"2025-01-24T17:39:05.878Z","updated_at":"2026-04-05T23:02:56.102Z","avatar_url":"https://github.com/adrianmarino.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tourism recommendation system\n\nA toy example.\n\n### Requirements\n\n* Any linux distro\n* [conda](https://www.anaconda.com/products/individual)\n\n### Setup project\n\n**Step 1**: Create conda environment to run project notebook.\n\n```bash\nconda env create -f environment.yml\n```\n\n**Step 2**: Enable installed environment.\n\n```bash\nconda activate tourism-recommendation-system\n```\n\n**Step 3**: Install a upyter extension required to support a progress bar in a notebook.\n\n```bash\njupyter labextension install @jupyter-widgets/jupyterlab-manager\n```\n\n### Getting started Notebook\n\n**Step 1**: Enable installed environment.\n\n```bash\nconda activate tourism-recommendation-system\n```\n\n**Step 2**: run jupyter lab IDE:\n\n```bash\njupyter lab\n```\n\n**Step 3**: Open [toy-example](toy-example.ipynb) jupyter notebook.\n\n**Note**: Can use query browser from http://localhost:7474.\n\n\n### Getting started API\n\n\n**Step 1**: Enable installed environment.\n\n```bash\nconda activate tourism-recommendation-system\n```\n\n**Step 2**: Start api server.\n\n```bash\n./start-api\n```\n\n**Step 3**: Query trends and recommendations.\n\n**More purchased hotels in last 60 days**\n\n```bash\ncurl -X  GET \"http://localhost:8080/api/recommendations/hotels/more-purchased?time-window=60\" | json_pp\n```\n\n```json\n{\n    \"hotels\": [\n        {\n            \"destination\": \"SLA\",\n            \"name\": \"Posada Santana\",\n            \"score\": 4\n        },\n        {\n            \"destination\": \"RIO\",\n            \"name\": \"Hakuna Matata Hotel Bar\",\n            \"score\": 3\n        },\n        {\n            \"destination\": \"RIO\",\n            \"name\": \"Rio See Resort\",\n            \"score\": 3\n        },\n        {\n            \"destination\": \"BCN\",\n            \"name\": \"Barcelona Hotel\",\n            \"score\": 2\n        },\n        {\n            \"destination\": \"MIA\",\n            \"name\": \"Madagascar Palace\",\n            \"score\": 1\n        }\n    ]\n}\n```\n\n**More searched hotels in last 60 days**\n\n```bash\ncurl -X  GET \"http://localhost:8080/api/recommendations/hotels/more-searched?time-window=60\" | json_pp\n```\n\n```json\n{\n   \"hotels\" : [\n      {\n         \"destination\" : \"MIA\",\n         \"score\" : 23\n      },\n      {\n         \"destination\" : \"BCN\",\n         \"score\" : 20\n      },\n      {\n         \"destination\" : \"SLA\",\n         \"score\" : 15\n      },\n      {\n         \"destination\" : \"RIO\",\n         \"score\" : 10\n      },\n      {\n         \"destination\" : \"COR\",\n         \"score\" : 5\n      }\n   ]\n}\n\n```\n\n\n**More purchased flights in last 60 days**\n\n```bash\ncurl -X  GET \"http://localhost:8080/api/recommendations/flights/more-purchased?time-window=60\" | json_pp\n```\n\n```json\n{\n   \"flights\" : [\n      {\n         \"airline\" : \"LA\",\n         \"destination\" : \"SLA\",\n         \"score\" : 3\n      },\n      {\n         \"airline\" : \"AA\",\n         \"destination\" : \"RIO\",\n         \"score\" : 2\n      },\n      {\n         \"airline\" : \"LA\",\n         \"destination\" : \"RIO\",\n         \"score\" : 2\n      },\n      {\n         \"airline\" : \"EK\",\n         \"destination\" : \"BCN\",\n         \"score\" : 1\n      },\n      {\n         \"airline\" : \"AA\",\n         \"destination\" : \"MIA\",\n         \"score\" : 1\n      }\n   ]\n}\n```\n\n**More purchased flights in last 60 days**\n\n```bash\ncurl -X  GET \"http://localhost:8080/api/recommendations/flights/more-searched?time-window=60\" | json_pp\n```\n\n```json\n{\n    \"flights\": [\n        {\n            \"destination\": \"SLA\",\n            \"score\": 42\n        },\n        {\n            \"destination\": \"BCN\",\n            \"score\": 25\n        },\n        {\n            \"destination\": \"RIO\",\n            \"score\": 25\n        },\n        {\n            \"destination\": \"MIA\",\n            \"score\": 16\n        },\n        {\n            \"destination\": \"COR\",\n            \"score\": 5\n        }\n    ]\n}\n```\n\n\n**Recommended hotels for users that bought flights for a given destination in last 60 days**\n\n```bash\ncurl -X  GET \"http://localhost:8080/api/recommendations/cross-selling/hotels?email=adrian.marino@almundo.com\u0026time-window=60\" | json_pp\n```\n\n```json\n{\n    \"hotels\": [\n        {\n            \"city\": \"SLA\",\n            \"id\": \"8\",\n            \"name\": \"Posada Santana\",\n            \"score\": 4\n        },\n        {\n            \"city\": \"RIO\",\n            \"id\": \"12\",\n            \"name\": \"Hakuna Matata Hotel Bar\",\n            \"score\": 3\n        },\n        {\n            \"city\": \"RIO\",\n            \"id\": \"10\",\n            \"name\": \"Rio See Resort\",\n            \"score\": 2\n        },\n        {\n            \"city\": \"MIA\",\n            \"id\": \"2\",\n            \"name\": \"See Palace Resort\",\n            \"score\": 1\n        },\n        {\n            \"city\": \"RIO\",\n            \"id\": \"11\",\n            \"name\": \"Pipa Hotel\",\n            \"score\": 1\n        }\n    ]\n}\n```\n\n**Recommended airlines for users that bought hotels in a given city in last 60 days**\n\n\n```bash\ncurl -X  GET \"http://localhost:8080/api/recommendations/cross-selling/airlines?email=adrian.marino@almundo.com\u0026time-window=60\" | json_pp\n```\n\n```json\n{\n    \"airlines\": [\n        {\n            \"destination\": \"SLA\",\n            \"name\": \"LATAM\",\n            \"score\": 3\n        },\n        {\n            \"destination\": \"RIO\",\n            \"name\": \"American Airlines\",\n            \"score\": 2\n        },\n        {\n            \"destination\": \"RIO\",\n            \"name\": \"LATAM\",\n            \"score\": 2\n        },\n        {\n            \"destination\": \"MIA\",\n            \"name\": \"American Airlines\",\n            \"score\": 1\n        }\n    ]\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadrianmarino%2Frecommendations-toy-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadrianmarino%2Frecommendations-toy-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadrianmarino%2Frecommendations-toy-example/lists"}