Developer Short-Term Rental PMS (property management system)

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Any

SALARY

competitive

HOURS PER WEEK

TBD

DATE UPDATED

Apr 23, 2026

JOB OVERVIEW

We're building a new operating system for short-term rentals — the kind of platform that replaces the tab-switching, spreadsheet-juggling, five-tools-duct-taped-together reality of running an STR portfolio today. We're early, we're moving fast, and we're hiring the people who'll build it with us.
We're looking for a Full-Stack Developer with deep short-term rental domain knowledge to help build the core platform. This is not a role where you learn the industry on the job. We want someone who already understands how STR actually works — the operators, the channels, the edge cases — because that knowledge will shape what we build as much as the code will.
What you'll own
You'll work across the stack on the features that matter most to operators: bookings, calendars, pricing, messaging, cleaning, reporting, owner statements. You'll build integrations with the platforms and tools the industry already runs on — and the workflows that sit on top of them.
Specifically:
– Integrations with Airbnb, ---------- , Vrbo, and the wider STR ecosystem — channel managers, pricing tools, payment providers, smart locks, cleaning platforms
– Core product features: multi-calendar logic, rate and availability sync, guest messaging flows, automated workflows, reporting dashboards
– Backend architecture: APIs, webhooks, queues, database design for booking and property data at scale
– Frontend work where needed — dashboards and operator-facing tools that feel fast and actually get used
– The unglamorous but critical layer: handling sync failures, reconciling conflicting data across channels, building systems that don't break at 2am
– Working directly with the founder and early team to turn product direction into shipped features
What we're looking for
– 2–4 years building production web applications, full-stack or strong backend with frontend competence
– Real short-term rental domain knowledge — you've worked on PMS, channel manager, pricing, or STR ops software before, or you've run and operated STR properties yourself at a meaningful scale
– You understand the operator's world: why calendar sync is harder than it looks, what makes a messaging automation actually useful, why pricing tools integrate the way they do
– Fluent with REST APIs, webhooks, and the real-world mess of third-party integrations — rate limits, auth quirks, silent failures, stale data
– Comfortable with a modern stack: TypeScript/Node, Python, Postgres, React. Pragmatic about tools, opinionated about quality
– You ship. Mid-level here means you take a loose spec and come back with working software, not a list of questions
– Strong written English, comfortable working async with a small distributed team
Bonus points
– Have worked at or built on top of Hostaway, Guesty, Hospitable, Lodgify, Uplisted, OwnerRez, or similar
– Familiar with PriceLabs, Wheelhouse, or Beyond Pricing integrations
– Direct experience with Airbnb's API (it's its own beast)
– Have built messaging automations, dynamic pricing logic, or revenue management tooling
– Early-stage experience — comfortable with ambiguity, fast iteration, and changing direction when the product demands it
The setup
Remote, global. Full-time preferred. You'll work directly with the founder and a small early team, with a tight feedback loop and meaningful ownership — what you build ships to real operators, not a staging environment.
How to apply
Send us something you've actually shipped in the STR space — a GitHub repo, an integration you wrestled with, a tool you built, a case study. CV welcome. The work matters more than the credentials.

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.0139
Total Execution Time  0.0153
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,503,704 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Developer-Short-Term-Rental-PMS-property-management-system-1631214
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0084 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0005   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1631214
 LIMIT 1 
0.0004   SELECT *
FROM `employers`
WHERE `employer_id` = 921808
 LIMIT 1 
0.0009   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1631214
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-07-21',ej.date_added) duration_daysDATEDIFF('2026-07-21',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-07-21',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1631214' 
0.0009   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1631214 
0.0011   UPDATE employer_jobs SET hit_counts '***Apr-23-2026=159***Apr-24-2026=196***Apr-25-2026=42***Apr-26-2026=26***Apr-27-2026=24***Apr-28-2026=21***Apr-29-2026=7***Apr-30-2026=6***May-01-2026=10***May-02-2026=3***May-03-2026=7***May-04-2026=8***May-05-2026=6***May-06-2026=5***May-07-2026=13***May-08-2026=6***May-09-2026=2***May-10-2026=2***May-11-2026=1***May-12-2026=4***May-13-2026=3***May-14-2026=2***May-15-2026=5***May-16-2026=3***May-17-2026=2***May-18-2026=2***May-19-2026=2***May-20-2026=5***May-21-2026=2***May-22-2026=3***May-23-2026=2***May-25-2026=4***May-26-2026=4***May-27-2026=1***May-28-2026=3***May-29-2026=6***May-30-2026=2***May-31-2026=4***Jun-01-2026=7***Jun-02-2026=6***Jun-03-2026=4***Jun-04-2026=2***Jun-05-2026=2***Jun-06-2026=4***Jun-07-2026=6***Jun-08-2026=3***Jun-09-2026=4***Jun-10-2026=2***Jun-11-2026=2***Jun-12-2026=2***Jun-13-2026=1***Jun-14-2026=2***Jun-15-2026=3***Jun-16-2026=3***Jun-17-2026=2***Jun-19-2026=4***Jun-20-2026=2***Jun-22-2026=2***Jun-23-2026=5***Jun-24-2026=1***Jun-25-2026=2***Jun-26-2026=4***Jun-27-2026=1***Jun-28-2026=4***Jun-29-2026=3***Jun-30-2026=2***Jul-01-2026=1***Jul-02-2026=2***Jul-03-2026=1***Jul-04-2026=5***Jul-06-2026=1***Jul-07-2026=3***Jul-09-2026=1***Jul-10-2026=1***Jul-11-2026=2***Jul-12-2026=1***Jul-13-2026=6***Jul-17-2026=2***Jul-18-2026=1***Jul-21-2026=1' WHERE job_id'1631214'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Apr-2026=481***May-2026=122***Jun-2026=85***Jul-2026=28' WHERE job_id'1631214'  
0.0009   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1631214' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1631214 
0.0014   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '921808'
AND `date_added` >= '2022-06-08' 
0.0004   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)