Case study

ListingOK

AI-powered revenue management for short-term rentals and hotels. Dynamic pricing, market insights and channel manager in a single SaaS platform.

Screenshot of the ListingOK platform

At a glance

ClientListingOK
Project typeSaaS B2B product: revenue management
DurationSince March 2023 (over three years, in continuous evolution)
Tec2020 team1 CTO + 2 developers
TechReact · Vite · TypeScript · Node.js · Express · Firebase Auth · Azure · Airbnb market data pipelines · EN/ES i18n with programmatic SEO
Client websitelistingok.com

The challenge

The short-term rental manager has three problems at once: prices that go stale (raising or lowering twenty euros a night across a hundred listings adds up to thousands a month leaking out), zero market visibility (how much is the competition charging this week in my neighbourhood? is there an event spiking demand?) and multi-channel operations done by hand across Airbnb, Booking, Vrbo and local OTAs. Existing tools each solved a slice, and stitching them together cost as much as the original problem.

ListingOK started with a clear idea: put on a single screen what a short-term rental manager needs to set prices. The best nightly price, calculated by an AI. The connection to Airbnb, Booking and Vrbo. And the prices of the listings in their area. That way they get hours back and stop losing money. Our brief was to build that platform from scratch.

What we built

  • Dynamic pricing engine combining demand signals, historical occupancy and local events to suggest a nightly rate per listing.
  • Channel manager that syncs calendars, rates and reservations with Airbnb, Booking and Vrbo, both ways.
  • Market Insights: dashboard with occupancy, ADR and RevPAR per market, segmented by city and accommodation type.
  • Analyzer, a free tool that scores an Airbnb listing in a couple of clicks. It brings in customers: the manager tries it without signing up, sees the result in thirty seconds, then registers.
  • Programmatic SEO: market pages generated automatically (Airbnb occupancy by city), in English and Spanish, indexable and linked from the blog.
  • Bilingual EN/ES platform with separate routes (/en/…, /es/…), full hreflang and localised content, not auto-translated.
  • Firebase Auth login: email + social providers, session and verification handling, without writing our own identity system.
  • Partner programme and templates for property managers, plus a blog and events integrated into the same domain for SEO.

Technical decisions that mattered

1. React + Vite SPA, served by Express with SEO-friendly routes

The application is a React SPA bundled with Vite, served from a Node/Express process. Vite gives us fast builds and vendor-split bundles (React separated from product code), keeping time-to-interactive low even as the app grows. Express handles the index fallback for deep links and the bilingual routing (/en/*, /es/*), so each language has its own URL and Google sees both versions.

2. Firebase Auth: buy what doesn’t differentiate

A three-person team building a SaaS can’t spend two months building social login, password recovery, email verification and session handling. Firebase Auth solves all of that with an official SDK and a marginal production cost. The team focused on the pricing engine and the OTA connectors, which are the product. The lesson holds for any B2B SaaS: login doesn’t set you apart from the competition. The product does.

3. Market ingestion pipelines, not on-demand scraping

Computing occupancy, ADR and RevPAR in real time against Airbnb every time a user opens a screen is expensive and fragile. We chose scheduled ingestion pipelines that pre-process the markets that matter and leave them ready to serve, with aggressive caching. The side benefit is that the same data feeds the programmatic SEO pages: one set of data serves both the product and the pages Google reads.

4. Bilingual for real, not translated

The vacation rental market is global. We went EN/ES from day one, with full hreflang, separate sitemaps (sitemap-en.xml, sitemap-es.xml) and localised URLs (/es/precios/ vs. /en/pricing-revenue-management-software/). It cost more upfront, but it pays off: every blog article and every market page is in two languages, so Google has twice the pages without doubling the content team.

5. A free tool as the front door

The Analyzer was born as an acquisition tactic: paste an Airbnb URL and see a score with recommendations, no signup. It’s the piece that generates the least revenue and delivers the most qualified traffic into the funnel. The rule here: in niche SaaS, a free public utility outperforms any paid campaign of the same cost.

Outcome

ListingOK has been operating as a product since 2023 and continues to grow. The platform is genuinely bilingual, indexable in English and Spanish. The free Analyzer is still the way new customers come in. The blog and per-city market pages are updated weekly and bring in visits from Google that a three-person team couldn’t afford to buy with ads. Internally, the client / services / pipelines separation means a new OTA, a new market or a new pricing model drops in without touching the rest.

And the most underrated decision with three years of hindsight: buying the auth. Every time someone asks “but didn’t it cost you to build the auth?”, the answer is still “no, and that’s why we shipped the pricing engine in the first quarter”.

Got a SaaS in mind? Let’s talk about yours.

If you have an idea or a stuck technical project, the first call is free and lasts thirty minutes. Maybe something comes of it, maybe not, but you’ll know more by the time we hang up.

Let’s talk →
info@tec2020.com · Madrid, Spain