Skip to content
Live in production Built for DW Capital Holdings

DW Capital Portal

Property management platform

DW Capital Holdings runs a Texas property portfolio — long-term rentals alongside short-term and outdoor stays — and manages property for other owners as well as its own. This is the platform behind it: leases, rent and maintenance on one side, channel calendars and owner statements on the other, over a single database with four front doors. An owner, an administrator, a resident and a contractor each sign in to the slice that belongs to them. It is DW’s own software, built and operated in-house, and it is live.

Request a demo
Next.jsSupabaseStripeQuickBooks APIVerceliCal channel sync

Private client application — we walk you through it live rather than handing out a sign-in.

DW Capital Portal — Property management platform

4 doors

owner, admin, resident, contractor

3 channels

Airbnb, VRBO & Hipcamp

Hourly

calendar sync, both directions

117 policies

row-level security across four roles

The Problem

A portfolio that is part long-term rentals and part short-term stays, managed partly for other owners, does not fit either kind of software. Property managers run long-term tools that know nothing about channel calendars; hosts run channel tools that know nothing about leases, rent or maintenance. DW was tracking both across three channel dashboards and a spreadsheet.

How It Works

Start to finish.

  1. 01

    The lease spine

    Property, then unit, then lease, then the charges and payments against it — with maintenance requests raising work orders on the same records. Everything else hangs off that spine instead of living in a parallel spreadsheet.

  2. 02

    Four doors, one database

    Staff, owners, residents and contractors each get their own surface over one Postgres, with 117 row-level policies deciding what a row may show before any application code asks for it.

  3. 03

    Money in both directions

    Stripe for rent and autopay, QuickBooks Online as the book of record, and rent charges, late fees and reminders raised on a schedule rather than by someone remembering to raise them.

  4. 04

    The short-term layer

    Channel calendars, turnovers, owner statements and occupancy tax built on top for the Airbnb, VRBO and Hipcamp side — the part of the portfolio with no real API behind it, only iCal.

Inside The Product

Portfolio switcher

DW’s own holdings and each managed owner’s properties in one console, with every view narrowed to the portfolio in scope.

Channel calendars

Airbnb, VRBO and Hipcamp expose iCal rather than full APIs, so calendars sync both ways every hour — bookings block dates everywhere at once.

Earnings from real exports

Channel calendars carry no money, so earnings come from the monthly transaction exports, matched on confirmation code and then on dates. Nothing writes until it is reviewed.

Owner statements

Income on a statement is money actually received and the management fee is a percentage of it. A sent statement is a frozen snapshot and is never recomputed.

Occupancy tax

Per-property tax rates with the remitter tracked, because a channel that collects and remits on your behalf is not the same as one that does not.

Application to signed lease

A public application per unit, screening, then a lease signed in the product — native e-signature with DocuSign available as a provider — so a tenancy never leaves the system to get started.

Maintenance that ends somewhere

A resident raises a request, staff triage it, and it becomes a work order assigned to a contractor who has their own sign-in. The thread stays attached to the unit, not to somebody’s inbox.

Market and rent check

ADR, occupancy and RevPAR from the portfolio’s own bookings, a hand-curated comparable set, and a rent check built on Zillow’s published research files — every suggestion shows its working.

Screens

Inside DW Capital Portal.

Real screens from the running product. Open any one to inspect it full size.

Three channels on one unit, each calendar synced hourly, with upcoming stays from every source in one list.
Turnovers scheduled off the booking calendar, so a clean is never the thing that was forgotten.
A statement is generated per owner and month. A draft can be rebuilt as often as you like; sending one freezes it.
Listing-feed addresses are bearer credentials, so the page keeps them covered — copy still works, the value is never left on screen.
One of four front doors. An owner sees their properties and their statements, and nothing else.

Under The Hood

How it’s built.

The decisions that are load-bearing — the ones that decide whether this still works in three years, and the reason each was made.

01 The lease is the spine
Property, then unit, then lease, then the charges and payments against it — with maintenance requests raising work orders on the same records. Everything else hangs off that spine instead of living in a parallel spreadsheet.
02 Four roles, 117 policies
Staff, owners, residents and contractors share one Postgres, with row-level security deciding what each may see before the query runs.
03 iCal because there is no API
Airbnb, VRBO and Hipcamp expose calendars, not real APIs. The sync runs both directions every hour and treats the feed as the contract it actually is.
04 Money comes from exports, not calendars
Channel calendars carry no money, so earnings come from the monthly transaction exports, matched on confirmation code and then on dates. Nothing writes until it has been reviewed.
05 A sent statement is frozen
Income on a statement is money actually received and the fee is a percentage of it. Once sent it is a snapshot and is never silently recomputed underneath the owner who read it.

What Changed

Before, and after.

Before

Bookings, cleans, rent and maintenance tracked across separate dashboards and a spreadsheet.

After

One database with four front doors — owner, administrator, resident and contractor.

Before

Channel calendars checked by hand, and a double booking when one was missed.

After

Hourly two-way iCal sync, so a booking anywhere blocks the dates everywhere.

Before

Owner statements assembled by hand at month end.

After

A statement generated per owner and month, frozen the moment it is sent.

Before

Rent, late fees and reminders raised when somebody remembered.

After

Eight scheduled jobs raising them on the day they fall due.

Want us to build something like this for you?

A 30-minute call on the product or platform in front of you — and how we'd ship it.

or call (573) 747-5573

Search CMA