Ruby on Rails
Circle CI

It took Datacrafts development team a year to create this great product together with the client. We joined to an existing project on its very early stage. Our team consisted of a project manager, a team lead, two full-stack engineers and a quality assurance engineer.

MetroReview is an online reputation management tool that provides a user-friendly yet sophisticated system for property managers of hotels and chain-affiliated hotels. We fetch hotel guest reviews from all the major online travel agencies (OTAs) such as Booking, Tripadvisor and Google, analyze the data and present it to users in the MetroReview Dashboard.

From the Dashboard, users can see and manage reviews listed on different booking platforms for one registered hotel or multiple hotels in the chain. Users have multiple options to manage reviews including direct response, data visualizations, surveys, and competition monitoring.

Since large chain hotels use the live product, ensuring stability was key. Therefore, we implemented a multi-level testing system: Jest + Enzyme, Cucumber + Capybara, rSpec, ESLint, Rubocop, Husky Git hooks, linters, Prettier, Circle CI.

Analytics Dashboard makes it possible to monitor a hotel’s rating (including overall and specific for each OTA) and associated trends (of ratings, number of reviews, and positive/negative reviews).

Competitor Dashboard allows clients to compare numbers for their own hotels and their competitors’ numbers.

Survey Dashboard analyzes reviews submitted to custom surveys. Hotel managers can create a custom survey with different types of questions and answers (date, text, number, single and multiple choice like checkbox, radio, dropdown), share survey forms with hotel guests by public URL, and analyze submitted survey reviews which appear on the Survey Dashboard immediately after submission.

Inbox is an easy-to-use interface to work with reviews. Here you can apply feature-based filters (language, rating, trip type) and use the Direct Response form to respond to reviews directly.

NLP and Sentiments: MetroReview is integrated with a natural language processing system (NLP) implemented as a microservice. Hotel owners can keep an eye on sentiments, such as different categories of customer complaints, as well as track positive feedback.

For example: “Price is high (price, negative) but the location is splendid (location, positive)”.

The sentiment is highlighted in the text of the review, which makes it easy to work with.

This process facilitates quick and efficient responses to negative reviews, making Direct Response one of MetroReview’s key features. Direct Response makes it possible to send replies directly to those OTAs that provide the technical support for it. User OTA credentials are encrypted and securely stored in MetroReview database.

Email notifications: Users can also set custom email alerts to receive notifications set up for different cases (for example, survey review submission, or weekly report on reviews submitted the previous week).

Tasks & Goals Manager: Users with certain rights can assign tasks to other users. Tasks can be independent or attached to a certain review. Users can also set Goals for key KPI (score, number of reviews, response rate, etc.). For example, “To improve Overall Score up to 9.9 for the next 6 months”.

Custom Reports: Users can create dynamic reports based on chosen tiles.

Technical Details, Challenges, and Solutions:

Use of the live product by large chain hotels requires stability. We implemented a multi-level testing system: Jest + Enzyme, Cucumber + Capybara, rSpec, ESLint, Rubocop, Husky Git hooks, linters, Prettier, Circle CI.

We optimized RAM with jemalloc since we were working with big volumes of data.

MR does not scrape reviews itself. The team of scrapers do that, and they keep a “master copy” of OTA reviews on their side. We run synchronisation every 3 hours to update the MR database (users, hotels, reviews). Survey reviews are created on MR side, however, and we needed to sync them with the other database right away.

We implemented various API integrations with an NLP system and OTA systems (, Expedia, Jalan, Rakuten, Ikyu) to support Direct Response.

We performed dynamic validation of models with complicated dependencies for surveys, parent questions, custom questions, basic questions and more.

We ensured the secure storage of user OTA credentials for direct response. We wrote our own encryption utilizing a unique algorithm. Everything was encrypted with AES encryption between parties utilizing credentials - Direct Response API and MetroReview.

We used Yandex BEM (Block, Element, Modifier), a modular approach to web development that divides a user interface into independent blocks.