Developer Short-Term Rental PMS (property management system)

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

TYPE OF WORK

Any

WAGE / 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.0380
Total Execution Time  0.0394
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,512,048 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.0318 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0010   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1631214
 LIMIT 1 
0.0003   SELECT *
FROM `employers`
WHERE `employer_id` = 921808
 LIMIT 1 
0.0226   SELECT COUNT(DISTINCT t.id) as cnt
FROM 
`t_thread` `t`
INNER JOIN `t_message` `mON `t`.`id` = `m`.`thread_id`
INNER JOIN `t_message_employer` `eON `m`.`id` = `e`.`message_id`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1631214
AND `misc`.`idIS NULL 
0.0007   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-06-20',ej.date_added) duration_daysDATEDIFF('2026-06-20',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-06-20',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1631214' 
0.0008   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1631214 
0.0018   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' WHERE job_id'1631214'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Apr-2026=481***May-2026=122***Jun-2026=61' WHERE job_id'1631214'  
0.0007   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.0023   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '921808'
AND `date_added` >= '2022-06-08' 
0.0003   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)