Focal
Focal

MEV Built Focal Revenue’s Analytics Platform for Hotel Management Companies

15 hotel management groups
15 hotel management groups
One platform used across multi-property hotel portfolios
~400 hotels
~400 hotels
Expanded from an early product supporting 50 properties.
Successfully Acquired
Successfully Acquired
Focal Revenue joined myDigitalOffice, now Otelier.
MEV Built Focal Revenue’s Analytics Platform for Hotel Management Companies
Industry
Hospitality Technology / Hotel Revenue Intelligence / SaaS
Provided Services
Software Product Development
Data engineering and integrations
Infrastructure and DevOps
UI/UX Design
Core Technologies
Python / Node.js / Vue.js / PostgreSQL / Apache Parquet / AWS Lambda / AWS Step Functions / Amazon EventBridge / Amazon S3 / Amazon Athena / AWS Glue Data Catalog / Amazon RDS / DynamoDB / AWS DMS / SQS / Elastic Beanstalk / QuickSight / CloudWatch
Project Duration
2+ years

[ client & product overview/ ]

Focal Revenue (myRevenue) is a business intelligence platform for hotel management companies. It collects data from property management systems and other operational sources, normalizes it into a common analytics model, and presents reports used for revenue, expense, sales, marketing, and pricing decisions.
The founders launched the first product in 2019 and reached seven hotel management companies operating 50 hotels. Continued growth required more integrations, a scalable data-processing architecture, and a broader engineering team.

Executive Summary

Focal Revenue had an early product used by 50 hotels but needed to add PMS integrations, stabilize existing connectors, and process growing data volumes without redesigning the platform for every new source.
MEV expanded from one Python engineer into a cross-functional team and built the integration, data-processing, analytics, and product layers. The platform accepted data through APIs, SFTP, email, and file uploads; converted and normalized source-specific formats; and delivered portfolio-level analytics through APIs, dashboards, and reports.

Focal Revenue grew to about 400 hotels across 15 hotel management groups and was later acquired by myDigitalOffice, now Otelier.
Mike Medsker
Co-Founder and President, Focal Revenue
MEV has a deep desire to understand what a platform does, what functionality it delivers, and how it creates value for customers. That allows MEV to develop technology solutions that not only solve complex challenges, but also build a platform that is scalable and extensible. As we’ve grown to 400 hotels, our system’s performance is keeping pace, and our integrations meet the demands of our customers.

[ how we did it/ ]

Solution & Implementation

MEV built the integrations, data-processing workflows, analytics layer, application, and production operations needed to support the platform as it grew.

Integrated Multiple PMS and Hotel Data Sources

MEV built and stabilized integrations for systems including Opera v5 and Oracle extracts, Opera Cloud/OHIP, Stayntouch, SMS|Host, RoomMaster, RoomKey, Marriott, and Hilton data feeds.
  • Source channels: REST APIs, SFTP, email through AWS SES, and S3 uploads.
  • Format handling: XML, CSV, JSON, TXT, XLSX, and zipped DBF exports were detected, converted, and routed to the correct workflow.
  • Common analytics format: Each integration used source-specific rules but produced records that the same analytics product could process.

Built the Serverless Ingestion and Normalization Pipeline

The pipeline separated source ingestion, format conversion, normalization, database writes, and snapshot creation into observable AWS workflows.
  • File ingestion: S3 events triggered Lambda functions that mapped hotel IDs, identified the integration and file format, and converted files to Parquet or CSV when required.
  • Workflow orchestration: EventBridge scheduled property-specific processing. AWS Step Functions selected the integration flow and coordinated choice, wait, iteration, sequential, and parallel processing paths.
  • Query and normalization: Athena and the AWS Glue Data Catalog queried processed files in S3. Python functions applied common and PMS-specific transformation rules.
  • Analytics writes: Normalized rows were written to the analytics database and used to create daily data snapshots.

Implemented Daily, Historic, Validation, and Recovery Workflows

Hotel data did not arrive in one consistent pattern. Each integration had its own file combinations, arrival times, and processing deadlines.
  • Daily builds: Incremental processing ran according to the property schedule and the readiness of required source files.
  • Historic builds: Longer rebuilds supported property onboarding, corrupted-data recovery, and features that required backfilled records.
  • Processing controls: The system prevented duplicate daily builds, processed missed dates in order, and limited bulk historic work to protect database replication and queues.
  • Validation and alerts: Source-file status, data validation, Step Functions execution results, Slack alerts, and email reports showed when data was missing or a workflow failed.

Built the Analytics Application and Production Operations Layer

The application separated operational configuration from processed analytics data and exposed the results through APIs and reporting interfaces.
  • Dual-database design: The application database held users, property settings, and configuration. A separate analytics database stored normalized hotel data and snapshots.
  • Application layer: A Revenue App API and internal Revenue API connected the PostgreSQL data layer to the Vue.js product.
  • Reporting: QuickSight reports and product dashboards presented hotel performance, revenue, pace, forecasting, and historical trends.
  • Production operations: CircleCI, CloudWatch, Sentry, Slack, and failed-task queues supported deployment, monitoring, troubleshooting, rebuilds, and ongoing data operations.
Solution & Implementation
Solution & Implementation

[ technical flow/ ]

How the Data Pipeline Worked

Hotel data moved from source-specific PMS feeds through ingestion, conversion, normalization, storage, and analytics delivery.
01:

Receive hotel data

PMS data arrived through APIs, SFTP, email reports, S3 uploads, and source-specific files.
02:

Detect and convert the source format

Lambda functions identified the property, integration, and file type, then converted files into Parquet or CSV where required.
03:

Start the integration workflow

EventBridge triggered the relevant AWS Step Function, which handled choices, waits, iteration, and parallel processing.
04:

Query and normalize the data

Athena and the AWS Glue Data Catalog queried processed files in S3. Python functions applied common and PMS-specific transformation rules.
05:

Store analytics records and snapshots

Normalized records were written to the analytics database and used to create reporting snapshots.
06:

Validate and deliver the results

Validation workflows, logs, and alerts exposed failures. Node.js APIs, the Vue.js application, and QuickSight reports delivered the processed data to hotel teams.

[ product output/ ]

How Hotel Teams Used the Platform

Hotel owners, management companies, and commercial teams used the normalized data to review current performance and make revenue, sales, marketing, and operational decisions.
01:

Property And Portfolio Views

Compare hotel performance by property, region, or portfolio.
02:

Revenue And Pace Analysis

Track occupancy, ADR, revenue, booking pace, and forecasts.
03:

Historical Analysis

Use snapshots and time-based views to study changes and trends.
Simplified recreation based on a Focal Revenue dashboard screen. Values are illustrative.

[ results/ ]

The platform gave Focal Revenue the scale to support more hotel groups, PMS integrations, and portfolio analytics.
01:

About 400 hotels across 15 management groups

The platform expanded from an early deployment of 50 hotels.
02:

Commercial-grade PMS integrations

The integration layer handled modern APIs, legacy exports, different file formats, and property-specific schedules.
03:

A common hotel analytics model

Source-specific data became consistent reporting, forecasting, and historical analysis across hotel portfolios.
04:

Acquisition by myDigitalOffice, now Otelier

Focal Revenue became part of a larger hospitality software company.
Mike Medsker
Co-Founder and President, Focal Revenue
The MEV team’s expertise meant they saw solutions that I didn’t see.

Whenever I had to decide on a solution, they would highlight three paths, based on speed to deployment, scalability, or cost, for example. It made it easy for me as a less technical person to make the best decisions for the product.

[ portfolio/ ]

Related Case Studies

Preferences

Privacy is important to us, so you have the option of disabling certain types of storage that may not be necessary for the basic functioning of the website. Blocking categories may impact your experience on the website. More information

Accept all cookies