The modern stack for a self-managed RV park portfolio
Six modules on one data layer. Every feature tagged with where it actually stands. Pick a section to drill in.
Prepared for Brent Smith / MHS Parks · From Ravi Parikh · July 2026 · Draft — for discussion, not a contract
Start here
Your stack today
6+systems
$50–100Kper year, software
$300/property/mo journaling
0systems that talk
Campspot
nightly CSV export →
Rent Manager
Every night. By hand. Because the reservation system has no accounting.
"Capital wants transparency… you can't give them this spaghetti bowl of crap."— you, about 40 minutes into our call
The thesis: put operations, accounting, and investor reporting in one system and the RV park asset class becomes legible to institutional capital. Everyone still running the old stack is suddenly behind.
The shape
One core. Five modules. Real APIs.
RESERVATION CORE
availability · bookings · payments · checkout — live today, untouched
READS ⇄CRM
Consumes booking events. One fail-open lookup back (do-not-rent flags). Never blocks a booking.
WRITES →Tenancy
A lease places a hold on its site. One calendar — double-booking a resident is impossible.
STREAMAccounting
Booking money + lease money feed one stream. Books built natively — no QuickBooks, nothing to reconcile.
NONEInvestor reporting
Reads the accounting stream only. Fully insulated from bookings.
WAREHOUSEIntelligence
Everything lands in one warehouse. Cross-system questions become one query.
Modules, not a forkliftAdopt one at a time over APIs.
Your data is yoursFull export, always. No $10K cron jobs.
One write, everywherePost once; every module sees it. The nightly CSV dies.
Reports are questionsAsk for the report you want. No 900-report library.
Blast radius of anything new = one module, never the platform. Modules with no core dependency build in parallel.
Module 1 · Live today
Reservations
Replaces: Campspot, CampLife
Core roleThis IS the core. Everything else attaches beside it, never inside it.
›In production6
Booking engineOnline reservations, nightly through monthly, real-time availability.Live
Rate managementSeasonal rates, rules, fees, deposits by site type.Live
Front deskGrid view, check-in/out, walk-ins, moves, holds.Live
PaymentsCard + ACH, refunds, per-park merchant accounts.Live
Marketplace demandRoverPass marketplace feeds bookings into the same inventory.Live
Unified inventoryEvery site exists once, on one calendar — no split park map.Live
Module 2 · Spec now · build starts this quarter
CRM & guest communications
Replaces: the gap — nothing you run today does this. Reviewable build ~30 days after start; we're dogfooding it internally.
Core interactionReads events; one fail-open lookup back. Checkout untouched — still one email.
›Contacts & profiles7
Unified contactOne record per human across your whole portfolio.Phase 1
Multi-contact per rigHusband + wife + kids, with roles. Collected post-arrival.Phase 1
Dedup & mergeAuto-match on phone/email; reviewable, reversible merges.Phase 1
TimelineEvery stay, payment, message, call, note — one history.Phase 1
FlagsVIP, do-not-rent, payment risk — shown loudly at booking time.Phase 1
Guest detailsRig type/length/amps, pets, household, preferences.Phase 1
Computed fieldsLifetime nights, spend, last stay, open balance.Phase 1
›Leads & pipeline8
Lead types & stagesTransient, seasonal, long-term application, group — editable stages.Phase 2
Seasonal waitlistRanked per site type; notify next in line, one click.Phase 2
Phone intakeAI answers → lead auto-created. Missed call → transcribed voicemail lead.Phase 2
Email intakeForward your park inbox; AI parses it into a contact + lead + drafted reply.Phase 2
Web & walk-inForm embeds post straight in; walk-ins in seconds.Phase 2
Triage queueAnything unparseable lands in one daily queue. No lead dies in an inbox.Phase 2
Lead → leaseWon lead becomes a reservation or application. Zero re-entry.Phase 2
Tasks & today-list"Call back Tuesday" — a daily worklist for the desk.Phase 2
›Communications6
Email + SMS composerSend as the park, threaded on the contact, any shift sees it all.Phase 1
Broadcast announcements"Laundry closed" to everyone currently on-park, instantly.Phase 2
Shared inboxReplies route back per park — one conversation.Phase 2
TemplatesMerge fields: name, dates, site, balance, payment link.Phase 1
DeliverabilityDomains, auth, reputation, opt-outs — handled by us.Phase 1
AI call loggingCall summaries land on the timeline automatically.Phase 2
›Automations — toggles, not a builder7
Pre-arrivalN days before check-in.Phase 2
Post-stay review askThank-you + review request after checkout.Phase 2
Win-back"You stayed last summer — dates are open."Phase 2
Renewal reminderAgreement expiring in N days.Phase 2
Waitlist notifySpot opened → next in line pinged.Phase 2
Stale-lead nudgeAlerts your staff when a lead sits untouched.Phase 2
Contact-completionBugs occupants until you have everyone's info. Your idea.Phase 2
›Segments & campaigns4
Segment builder"Winter Texans I want to hit in July" = a saved, auto-updating list.Phase 3
One-off campaignsTemplated email to a segment, with metrics.Phase 3
CSV exportAny segment, out, any time.Phase 3
Managed marketingOur team runs it for you if you'd rather not staff it.Phase 3
Module 3 · Live engine, upgrading
Long-term tenancy
Replaces: Rent Manager
Liverecurring monthly billing + proration
Liveautopay + payment links
Liveauto late fees
Liveper-site metering
Verified by a full code audit: RoverPass already runs this engine in production at real volume. This module upgrades a live system — it is not a cold start.
The five tie-ins to the reservation core
1The site
A lease holds its site on the one calendar. Double-booking a resident: impossible.
2Invoicing
Today's recurring invoices upgrade to ledgers, per park, opt-in.
3The person
Guest and resident = one CRM contact, one history.
4The money
Stay money and lease money never mix — unified only in the books.
5Shared rails
Same payments, same dashboard, leased lots visible on the grid.
›Applications & screening7
Application formPer site type: household, income, references, rig photos (10-year rule in the flow).Phase 1
Application feeCard at submission, posts as revenue.Phase 1
Document uploadID, income proof, rig photos on the record.Phase 1
ScreeningBackground/credit/eviction via partner; role-restricted results.Phase 2
Review & decisionApprove/deny queue; FCRA adverse-action notice auto-generated.Phase 2
Approved → leaseEverything carries into the lease. Zero re-entry.Phase 1
Waitlist linkageFull site type? Application parks on the waitlist, pre-screened.Phase 2
›Leases & billing — upgrading the live engine7
Recurring billingMonthly + fixed-interval invoices, prorated, auto-generated.Live
AutopayCard-on-file per schedule, guest payment links.Live
Rent-roll dashboardEvery long-term guest, balance, next bill, autopay status — one screen. (A first-cut rent-roll report is already built in the warehouse, unreleased.)Phase 1
Guided monthly setupOne flow replaces today's four separate screens.Phase 1
Lease docs + e-signSigned online, renewals programmed, increases with notices.Phase 1
Person-level balancesRunning balance + partial payments across invoices.Design w/ eng
Deposits as liabilitiesHeld properly; itemized disposition at move-out.Phase 2
›Metered utilities — upgrading the live model5
Meters & readsElectric/gas/water per site, rollover handling, CSV import.Live
Auto-billing from readsRead → charge on the next invoice, automatically. Today it's manual per read.Phase 1
Mobile captureWalk-order entry on a phone, photo per read.Phase 2
Exception queueSpikes, negatives, missing reads held for review — nothing bills silently wrong.Phase 2
Rate structuresTiers, base fees, pass-through-at-cost. Today: flat rate only.Phase 2
›Delinquency & deposits5
Late feesAuto-applied today; upgrading to your rules (any grace, recurring, caps).Live → up
Aging dashboard0–30/60/90+ across the portfolio.Phase 1
NoticesLate/demand/non-renewal, merge-filled from real balances, logged.Phase 2
Eviction-path controlsFlag a tenancy → partial payments blocked automatically.Phase 2
Cash at retailUnbanked residents pay cash at national counters; posts automatically.Phase 2
Accounting is its own module → see Module 4 · Accounting. Lease money flows there on the accounting stream automatically.
Module 4 · Own system, on purpose · 56 features specced across A1→A3
Accounting
Replaces: Rent Manager's GL, QuickBooks, and the nightly offshore journaling
Core interactionConsumes the accounting stream only. Deliberately its own system: append-only books that no booking-flow deploy can ever touch.
Opposite invariantsOperations edit records; books never do. Append-only, debits = credits, periods lock.
Blast radiusOps ships daily; books change slowly and audited. Separate systems, separate risk.
Entity-firstThe first-class object is the legal entity (your SPEs) — mapped to parks, not owned by them.
One stream inBooking money + lease money + distributions arrive as charge-coded events. The GL is derived, never re-keyed.
›Entities & chart of accounts5
ACC-01 · Entity registryYour LLCs/SPEs as first-class records.A1Read →
ACC-02 · Entity ↔ park mappingEach park's money routes to exactly one owning entity.A1Read →
ACC-03 · Chart of accounts templatesA park-industry CoA installed at entity creation.A1Read →
ACC-04 · CoA managementAdd, rename, nest, merge, and archive accounts per entity.A1Read →
ACC-05 · System accountsThe pinned accounts the platform posts to automatically.A1Read →
›Journal engine6
ACC-06 · Journal entries & linesThe append-only, double-entry core of the whole system.A1Read →
ACC-07 · Reversals & correctionsThe only way to change the past.A1Read →
ACC-08 · Period lockingClosed months don't change.A1Read →
ACC-09 · Cash + accrual viewsBoth accounting bases from one journal.A1Read →
ACC-10 · Manual journal entriesHuman postings for the things automation can't know.A1Read →
ACC-11 · Audit trailWho did what, when, to the books.A1Read →
›Ingestion — books that write themselves6
ACC-12 · Event stream consumerThe one door money-facts enter through.A1Read →
ACC-13 · Posting rulesCharge code + context → the right journal lines.A1Read →
ACC-14 · Mapping controlsWhere your bookkeeper adjusts the rules.A1Read →
ACC-15 · Exception queueNothing misbooks silently.A1Read →
ACC-16 · Integrity checkPlatform facts vs. the books, checked daily.A1Read →
ACC-17 · Sales-tax trackingCollected tax, visible and owed, by jurisdiction.A1Read →
›Banking & reconciliation7
ACC-18 · Bank feedsEvery entity bank account, connected.A2Read →
ACC-19 · Import & dedupClean, unique bank lines.A2Read →
ACC-20 · AI categorizationA first-pass bookkeeper on every bank line.A2Read →
ACC-21 · Stripe payout decompositionEvery payout split and matched — the reconciliation hours disappear.A2Read →
ACC-22 · Cash-network settlementWalmart cash payments trace end-to-end.A2Read →
ACC-23 · Bank reconciliationThe monthly proof, mostly automated.A2Read →
ACC-24 · Transfer detectionMoney between your own accounts isn't income.A2Read →
›Vendors & accounts payable10
ACC-25 · Vendor recordsOne vendor list, shared across your org.A2Read →
ACC-26 · W-9 collectionGet the form before the money.A2Read →
ACC-27 · COI trackingInsurance certificates with teeth.A2Read →
ACC-28 · 1099 generation + e-fileJanuary without spreadsheets.A2Read →
ACC-29 · Bill inboxVendors change nothing; bills just arrive.A2Read →
ACC-30 · AI bill codingThe AI reads the bill.A2Read →
ACC-31 · Approval workflowsWho says yes before money moves.A3Read →
ACC-32 · Payment executionBills get paid — ACH, printed and mailed checks, or card.A3Read →
ACC-33 · Recurring billsThe utility bill that comes every month.A2Read →
ACC-34 · Vendor historyEverything about a vendor, one screen.A2Read →
›Reporting & close11
ACC-35 · P<he statement small operators buy the module for.A1Read →
ACC-36 · Balance sheetAt enterprise: the ownership stack, on the statement.A3Read →
ACC-37 · Trial balanceThe accountant's home screen.A1Read →
ACC-38 · GL detailEvery line, filterable, traceable to its source.A1Read →
ACC-39 · AR/AP agingWho owes you, whom you owe, bucketed.A2Read →
ACC-40 · Per-park P&LOne entity, two parks, three correct P&Ls.A1Read →
ACC-41 · Comparative periodsThis July vs. last July, no exports.A1Read →
ACC-42 · Consolidated rollupsThe portfolio view across all entities.A3Read →
ACC-43 · Close checklistMonth-end, systematized — and a cockpit for closing many entities.A2Read →
ACC-44 · Accountant accessA free, read-only seat for your CPA.A2Read →
ACC-45 · Tax packageOne export that ends the January scramble.A2Read →
›Equity & intercompany5
ACC-46 · Partner equity structureThe ownership stack, in the chart of accounts.A3Read →
ACC-47 · Contribution & distribution postingCapital in and out, posted once, correct everywhere.A3Read →
ACC-48 · Capital roll-forwardsThe per-partner artifact K-1 preparers need.A3Read →
ACC-49 · IntercompanyFifteen LLCs that borrow from each other, kept honest.A3Read →
ACC-50 · Management feesThe monthly mgmt-co ritual, automated.A3Read →
›Onboarding & migration3
ACC-51 · Onboarding wizardEntity to books-flowing in one sitting.A1Read →
ACC-52 · Opening balancesStart from truth, not zero.A1Read →
ACC-53 · Cutover policyGo-forward only — stated, enforced, visible.A1Read →
›Platform3
ACC-54 · Embedded UIYou never know it's a separate system.A1Read →
ACC-55 · Roles & permissionsBooks-specific access control.A1Read →
ACC-56 · BudgetsPlan vs. actual, at the account level.A3Read →
Not in this catalog, on purpose: payroll (integrate), depreciation automation (your CPA, v1), tax prep/filing, trust accounting, multi-currency, true consolidation eliminations. The gating input for the enterprise phase is the working session on your books.
Module 4 · Accounting · Entities & chart of accounts
ACC-01 · Entity registry
Your LLCs/SPEs as first-class records. A1 · See the mockup →
Everything in the accounting system hangs off a legal entity — not a park. This is the registry: each LLC or SPE you operate, with the facts the books need.
What it must do
- Name, EIN, entity type (LLC/LP/S-corp/sole prop), tax classification, fiscal-year start, default accounting basis (cash or accrual), address
- Status lifecycle: active → dissolved; a dissolved entity keeps its books readable forever but blocks new postings
- Entities can never be hard-deleted once they have journal history
- One owner organization holds many entities
Builds on: Nothing — this is the first brick.
Done when: All 9+ of your LLCs entered with correct EINs; a dissolved entity keeps readable books but rejects new postings.
Module 4 · Accounting · Entities & chart of accounts
ACC-02 · Entity ↔ park mapping
Each park's money routes to exactly one owning entity. A1 · See the mockup →
Parks are operating assets; entities own them. This mapping is how a reservation at a park becomes revenue on the right LLC's books — and it's effective-dated, because parks get sold between entities mid-year.
What it must do
- One park maps to exactly one entity at a time; one entity can own many parks
- Mapping changes are effective-dated: sell a park to a new LLC July 1 and June revenue stays on the old entity, July posts to the new — no re-posting
- A park with no mapping is an ingestion exception, never a silent default
Builds on: ACC-01.
Done when: Move a park between entities mid-year and both P&Ls split cleanly at the date, prior months untouched.
Module 4 · Accounting · Entities & chart of accounts
ACC-03 · Chart of accounts templates
A park-industry CoA installed at entity creation. A1
New entities shouldn't start from a blank chart. The template comes from our accounting team's campground practice — the accounts a park CPA actually expects.
What it must do
- Versioned template; account types (asset/liability/equity/income/expense) with normal-balance side
- Template updates never mutate existing entities' charts
- Installed automatically during onboarding
Builds on: ACC-01.
Done when: A campground CPA recognizes a new entity's chart without edits.
Module 4 · Accounting · Entities & chart of accounts
ACC-04 · CoA management
Add, rename, nest, merge, and archive accounts per entity. A1
Owners and bookkeepers shape the chart over time — safely. The rules exist so nobody can strand a balance or corrupt history.
What it must do
- Account numbers unique per entity; renames are display-only (the underlying id never changes)
- Archive is blocked while an account holds a balance — an audited reclass flow moves the balance first
- Sub-account nesting to 3 levels; merge = reclass journal + archive in one audited step
Builds on: ACC-03.
Done when: Archiving an account with a balance is impossible except through the reclass flow.
Module 4 · Accounting · Entities & chart of accounts
ACC-05 · System accounts
The pinned accounts the platform posts to automatically. A1
Automated posting needs guaranteed destinations. These accounts are created with every entity and protected from deletion or re-typing.
What it must do
- Per entity: accounts receivable, clearing/undeposited funds per payment method, security-deposit liability, sales-tax liability, processing-fee expense, platform-fee expense, retained earnings, opening-balance equity
- Partner-equity classes added at the enterprise phase
- Visible in the chart with a system badge; cannot be archived or re-typed
Builds on: ACC-03.
Done when: Deleting the deposit-liability account is impossible from any UI or API.
Module 4 · Accounting · Journal engine
ACC-06 · Journal entries & lines
The append-only, double-entry core of the whole system. A1
Every dollar-fact becomes a balanced journal entry. The discipline is enforced by the database itself, not by app code that a bug could bypass.
What it must do
- Entry = header (entity, dates, source, memo) + lines (account, debit/credit, park dimension)
- Database-enforced: lines sum to zero; no UPDATE or DELETE on posted entries — ever
- Every automated line carries the id of the platform event that caused it
- Amounts stored in integer cents; posting date and effective date both kept, in the entity's timezone
Builds on: ACC-01 through ACC-05.
Done when: A direct database UPDATE on a posted line fails at the constraint level, not just the app level.
Module 4 · Accounting · Journal engine
ACC-07 · Reversals & corrections
The only way to change the past. A1
Books never get edited — mistakes get reversed and re-posted, leaving the full story visible. This is what makes the history defensible to a lender, buyer, or auditor.
What it must do
- A reversal is a new mirrored entry, linked both ways to the original, with a required reason
- A correction = reversal + new entry, performed as one audited operation
- Reversing something in a locked month posts into the earliest open period, flagged
Builds on: ACC-06, ACC-08.
Done when: Original, reversal, and correction all visible and linked in the GL, with the net effect correct in both periods.
Module 4 · Accounting · Journal engine
ACC-08 · Period locking
Closed months don't change. A1 · See the mockup →
Once a month is closed, it stays closed — the number you showed your lender in March is the number in the system in November.
What it must do
- Lock per entity per month; posting into a locked period is rejected
- Automated events dated into a locked period go to the exception queue for a human decision
- Unlock requires an elevated role and a reason, is logged, and auto-relocks
- Year-lock after tax filing
Builds on: ACC-06.
Done when: A refund event dated into a locked month lands in the review queue, not the ledger.
Module 4 · Accounting · Journal engine
ACC-09 · Cash + accrual views
Both accounting bases from one journal. A1 · See the mockup →
Operators want accrual to run the business and cash for taxes. Rent Manager does both; so do we — from the same entries, so the two can never disagree about the underlying facts.
What it must do
- Accrual view keys off effective dates; cash view keys off when payment was actually applied
- An invoiced-but-unpaid charge appears in accrual and not in cash — automatically
- Basis toggle on every report; per-entity default
Builds on: ACC-06, ACC-12 (charge events must link to their payments).
Done when: An unpaid December invoice shows on the December accrual P&L and the January cash P&L (paid Jan 5) — same journal, no duplicates.
Module 4 · Accounting · Journal engine
ACC-10 · Manual journal entries
Human postings for the things automation can't know. A1
Depreciation from your CPA, an insurance accrual, an odd adjustment — there's a controlled door for humans, clearly marked as such everywhere.
What it must do
- Role-gated (bookkeeper/accountant; owner access is a per-org setting)
- Templates for recurring entries; attachments for the backing document
- Balanced-entry validation before submit; flagged as manual in every report
Builds on: ACC-06.
Done when: A CPA posts year-end depreciation with the schedule PDF attached, identifiable as manual in the GL.
Module 4 · Accounting · Journal engine
ACC-11 · Audit trail
Who did what, when, to the books. A1
Every posting, lock, unlock, mapping change, and exception decision — logged immutably, readable by humans, kept for seven years.
What it must do
- Covers postings, reversals, locks/unlocks, chart changes, mapping changes, exception resolutions
- Human-readable before/after diff per event; exportable
Builds on: All Area 1–2 features.
Done when: “Why does March look different than it did in April's board packet?” is answerable from the trail alone.
Module 4 · Accounting · Ingestion — books that write themselves
ACC-12 · Event stream consumer
The one door money-facts enter through. A1
Reservations, invoices, payments, refunds, payouts, store sales — the operating platform emits them as events, and this consumer turns them into journal entries. Idempotent and replay-safe, because books built on events are only as good as event handling.
What it must do
- Consumes all reservation-system and tenancy money events; fund distributions later
- Idempotent by event id: processing the same event twice produces nothing new
- Replay-safe: reprocessing a whole day nets zero new entries
- Lag monitoring with alerts
Builds on: The reservation system's event feed (a prerequisite build); ACC-06.
Done when: Replaying a full day of events creates zero duplicate journal entries.
Module 4 · Accounting · Ingestion — books that write themselves
ACC-13 · Posting rules
Charge code + context → the right journal lines. A1 · See the mockup →
The brain of automated bookkeeping: every kind of platform charge knows which accounts it hits, with your entity routing applied.
What it must do
- Complete default rule set ships — every platform charge code mapped out of the box
- Rules key on charge code, payment method, and event type; routing via the park↔entity map
- Rule changes are effective-dated — history is never rewritten
- Simulation mode: preview what any event would post before going live
Builds on: ACC-02, ACC-05, ACC-12.
Done when: A reservation payment posts to clearing, revenue, tax liability, and fee expense with zero human touch.
Module 4 · Accounting · Ingestion — books that write themselves
ACC-14 · Mapping controls
Where your bookkeeper adjusts the rules. A1
Defaults fit most parks; this is the screen for the rest — with guardrails so a mapping change can't quietly corrupt reports.
What it must do
- Per-entity overrides of any default mapping
- Validation warns on type mismatches (a revenue code aimed at an asset account)
- Change preview shows what future postings will be affected; every change audited and effective-dated
Builds on: ACC-13.
Done when: Remap “pet fee” to a new income account: old postings unchanged, new ones flow correctly.
Module 4 · Accounting · Ingestion — books that write themselves
ACC-15 · Exception queue
Nothing misbooks silently. A1 · See the mockup →
When automation isn't sure — unmapped code, unmapped park, event dated into a locked month — the item waits for a human instead of guessing. Same philosophy as the metering exception queue.
What it must do
- Exception types: unmapped charge code, unmapped park, locked-period event, malformed event, sign anomalies
- Queue per entity with age and severity; resolution = map-and-post, post-with-override, or dismiss-with-reason (all audited)
- Exceptions older than 7 days escalate to the bookkeeping dashboard
Builds on: ACC-12, ACC-13.
Done when: A brand-new charge code queues its events, gets mapped once, and every queued event posts — none lost, none guessed.
Module 4 · Accounting · Ingestion — books that write themselves
ACC-16 · Integrity check
Platform facts vs. the books, checked daily. A1 · See the mockup →
The books are derived from the operating platform — so every night we prove the derivation: do payments, refunds, and payouts on the platform equal what the ledger says?
What it must do
- Daily per-entity comparison with drill-to-source on any variance
- Event-gap detection (missing sequence numbers)
- Green/red status on the entity dashboard; red blocks the month from closing
Builds on: ACC-12, ACC-13.
Done when: Delete one event in a test environment and the check turns red next morning, naming the exact gap.
Module 4 · Accounting · Ingestion — books that write themselves
ACC-17 · Sales-tax tracking
Collected tax, visible and owed, by jurisdiction. A1 · See the mockup →
Tax collected on the platform accrues to liability accounts automatically; the monthly report says what you owe whom.
What it must do
- Tax lines post to liability sub-accounts keyed by jurisdiction/tax config
- Monthly liability report per entity per jurisdiction; remittance recorded as a payment or entry
- Filing automation is explicitly out for v1 — the report feeds your existing filing process
Builds on: ACC-13.
Done when: “What do we owe Texas for June?” is one report that ties to platform-collected tax to the penny.
Module 4 · Accounting · Banking & reconciliation
ACC-18 · Bank feeds
Every entity bank account, connected. A2
Each LLC's accounts feed transactions daily. Connection health is monitored so a dead feed surfaces before month-end, not during close.
What it must do
- Bank aggregation with N accounts per entity, each tied to a ledger cash account
- Connection health monitoring and re-auth flows; CSV/OFX import fallback for feed-hostile banks
- We never store bank credentials
Builds on: ACC-01, ACC-05; aggregation provider selection.
Done when: A broken connection alerts before month-end, not during close.
Module 4 · Accounting · Banking & reconciliation
ACC-19 · Import & dedup
Clean, unique bank lines. A2
Bank data arrives messy — feeds backfill, CSVs overlap, pending becomes posted. This layer guarantees each real transaction exists exactly once.
What it must do
- Dedup on provider transaction id plus fuzzy matching for CSV overlap
- Pending transactions visible but never booked; only posted lines post
- A bank line can never hit the ledger twice
Builds on: ACC-18.
Done when: Importing an overlapping CSV after a feed backfill creates zero duplicates.
Module 4 · Accounting · Banking & reconciliation
ACC-20 · AI categorization
A first-pass bookkeeper on every bank line. A2 · See the mockup →
The AI proposes the account and park for each transaction, auto-posts when confident, queues when not — and learns your corrections permanently.
What it must do
- Confidence-scored suggestions; auto-post above a per-entity threshold, review queue below
- Corrections become remembered rules (this payee → that account)
- Bulk review UI ordered by confidence
Builds on: ACC-19, ACC-13.
Done when: After one month of corrections, 80%+ of a typical entity's bank lines auto-post correctly.
Module 4 · Accounting · Banking & reconciliation
ACC-21 · Stripe payout decomposition
Every payout split and matched — the reconciliation hours disappear. A2 · See the mockup →
The single highest-value automation in the module. Each processor payout is decomposed into what it really is — gross collections, refunds, fees — posted correctly, and matched to the bank deposit it became.
What it must do
- Consume payout and balance-transaction data from the payments processor
- Decompose: gross collected − refunds − processing fees − platform fees = net payout
- Auto-match net to the bank deposit line; unmatched payouts age into the exception queue
Builds on: ACC-12, ACC-18, ACC-19.
Done when: A month of payouts reconciles to bank deposits to the penny with zero manual matching.
Module 4 · Accounting · Banking & reconciliation
ACC-22 · Cash-network settlement
Walmart cash payments trace end-to-end. A2
When residents pay cash at retail, the provider settles in batches. Those settlements decompose and match exactly like card payouts.
What it must do
- Provider settlement file ingestion; per-resident detail ties to the resident's ledger
- Settlement batch matches its bank deposit
Builds on: ACC-21 pattern; the tenancy module's cash-at-retail feature.
Done when: A $500 cash rent payment traces register receipt → resident ledger → settlement batch → bank deposit.
Module 4 · Accounting · Banking & reconciliation
ACC-23 · Bank reconciliation
The monthly proof, mostly automated. A2 · See the mockup →
Reconciliation is where books earn trust. The AI does the first pass; a human confirms the breaks; the result feeds the close checklist.
What it must do
- Per account per month: opening balance → matched lines → unmatched list → adjusted vs. statement balance
- AI first pass; human confirms exceptions only
- Reconciliation status feeds the close checklist
Builds on: ACC-19, ACC-20, ACC-21.
Done when: A fully-fed account reconciles in under 5 minutes of human time.
Module 4 · Accounting · Banking & reconciliation
ACC-24 · Transfer detection
Money between your own accounts isn't income. A2
Transfers between accounts — and loans between your entities — are detected and booked as what they are.
What it must do
- Detect matching debit/credit pairs across accounts (same org, near dates and amounts)
- Same-entity pairs book as transfers; cross-entity pairs propose intercompany due-to/due-from
- Cross-entity never auto-books without confirmation
Builds on: ACC-19, ACC-49.
Done when: A $10k move between two LLCs books as due-to/due-from on both sides from one confirmation.
Module 4 · Accounting · Vendors & accounts payable
ACC-25 · Vendor records
One vendor list, shared across your org. A2 · See the mockup →
Vendors exist once at the org level with per-entity defaults, so Joe's Septic codes correctly whichever LLC he's working for.
What it must do
- Name, contacts, default expense account and park, payment terms, 1099-eligibility flag
- Org-level vendor, per-entity usage and defaults; duplicate-merge tool (audited)
Builds on: ACC-01.
Done when: “Joe's Septic” exists once for the org and codes correctly per entity by default.
Module 4 · Accounting · Vendors & accounts payable
ACC-26 · W-9 collection
Get the form before the money. A2 · See the mockup →
Vendors self-serve their W-9 through a request link; the system warns (or blocks, your choice) when you try to pay a 1099-eligible vendor without one.
What it must do
- Request link with self-serve upload and TIN entry; stored on the vendor
- Payment warning, configurable to hard-block, for 1099-eligible vendors with no W-9
- TINs masked except for authorized roles
Builds on: ACC-25.
Done when: Paying a new 1099 vendor without a W-9 requires an explicit, logged override.
Module 4 · Accounting · Vendors & accounts payable
ACC-27 · COI tracking
Insurance certificates with teeth. A2 · See the mockup →
Certificates of insurance live on the vendor with expiry alerts — and the lapsed-coverage flag shows up at the exact moment it matters: bill approval.
What it must do
- Coverage type and expiry per certificate; alerts at 30/7/0 days
- Expired-COI flag surfaces on bill approval; report of active vendors with missing/expired coverage
Builds on: ACC-25.
Done when: The AC contractor's lapsed COI is visible on the very bill approval where it matters.
Module 4 · Accounting · Vendors & accounts payable
ACC-28 · 1099 generation + e-file
January without spreadsheets. A2 · See the mockup →
Per-vendor totals compute all year from paid bills and categorized bank lines; at year-end you review and e-file through a partner without leaving the platform.
What it must do
- Card-paid amounts excluded per IRS rules; threshold logic built in
- Review screen → partner e-file → recipient copies delivered
- Corrections and amendments supported
Builds on: ACC-25, ACC-26, ACC-20; e-file partner.
Done when: The year-end 1099 run goes from review to filed without leaving the platform.
Module 4 · Accounting · Vendors & accounts payable
ACC-29 · Bill inbox
Vendors change nothing; bills just arrive. A2 · See the mockup →
Every entity gets a bills@ address. Vendors email invoices as they always have; the inbox catches, stores, and dedupes them.
What it must do
- Email-in with PDF/photo attachments; forwarded-email handling
- Dedup on file hash and extracted invoice number
- Paper/PO-box intake stays with the AP fulfillment partner for enterprise operators
Builds on: ACC-01.
Done when: The same invoice emailed twice creates exactly one bill.
Module 4 · Accounting · Vendors & accounts payable
ACC-30 · AI bill coding
The AI reads the bill. A2 · See the mockup →
Vendor, invoice number, dates, amount, line detail — extracted and coded with a confidence score. Below threshold it drafts for review; corrections teach it.
What it must do
- Vendor matching against the org list (or new-vendor creation flow)
- Proposed account and park coding with confidence; draft-and-review below threshold
- Corrections feed the same rules memory as bank categorization
Builds on: ACC-29, ACC-25, ACC-13.
Done when: 90%+ of a pilot entity's bills need zero coding edits after 60 days.
Module 4 · Accounting · Vendors & accounts payable
ACC-31 · Approval workflows
Who says yes before money moves. A3 · See the mockup →
Simple first — one approver per entity — then threshold chains for enterprise: managers approve small, owners approve big, with delegation for vacations.
What it must do
- Phase A2: single approver per entity
- Phase A3: threshold chains (e.g. manager under $500, owner above), per-entity config, delegation
- Approval state lives on the bill; every approval audited
Builds on: ACC-30.
Done when: A $3,000 bill cannot reach payable without the owner's recorded approval when thresholds say so.
Module 4 · Accounting · Vendors & accounts payable
ACC-32 · Payment execution
Bills get paid — ACH, printed and mailed checks, or card. A3 · See the mockup →
We orchestrate; a payments partner moves the money and prints the checks. Includes the trick old-school vendors love: you pay by card, they receive a paper check.
What it must do
- Phase A2: record payments made outside the system (mark-paid)
- Phase A3: partner rails — ACH, printed + mailed checks, pay-by-card→vendor-gets-check
- Per-entity funding accounts; payment-status webhooks post automatically; voids and reissues handled
Builds on: ACC-31; rails partner selection (AvidXchange-class or Melio-class; Stripe Treasury ruled out — no checks).
Done when: One approved bill paid by ACH and one by mailed check, both auto-posted and traceable through bank rec.
Module 4 · Accounting · Vendors & accounts payable
ACC-33 · Recurring bills
The utility bill that comes every month. A2 · See the mockup →
Expected bills auto-match to their recurrence; a missing bill or a weird amount gets flagged instead of auto-coded.
What it must do
- Recurring schedule per vendor — fixed amount or variable with tolerance
- Missing-bill alerts; out-of-tolerance amounts route to review
Builds on: ACC-29, ACC-30.
Done when: The electric bill arriving 40% high gets flagged, not auto-coded.
Module 4 · Accounting · Vendors & accounts payable
ACC-34 · Vendor history
Everything about a vendor, one screen. A2 · See the mockup →
Bills, payments, credits, running 1099 totals, W-9 and COI documents — the whole relationship in one place, exportable as a statement.
What it must do
- Per-vendor ledger with year-to-date totals
- Document panel (W-9, COIs); vendor statement export
Builds on: ACC-25 through ACC-32.
Done when: “How much have we paid Joe's Septic this year, and are we covered?” is one look.
Module 4 · Accounting · Reporting & close
ACC-35 · P&L
The statement small operators buy the module for. A1 · See the mockup →
Per entity, either basis, by park or combined, with comparisons — and every line drills down to the exact transactions behind it.
What it must do
- Basis toggle (cash/accrual); park dimension: whole entity, one park, or side-by-side
- Comparative: vs. prior period and prior year
- Drill from any line → ledger detail → source platform record; CSV/XLSX/PDF export
Builds on: Areas 1–3.
Done when: A CPA accepts the year-end P&L for tax prep without adjustment questions beyond normal year-end items.
Module 4 · Accounting · Reporting & close
ACC-36 · Balance sheet
At enterprise: the ownership stack, on the statement. A3
A standard balance sheet from day one; at the enterprise phase it shows what Rent Manager shows you today — sub-entity investments and each partner's equity by class.
What it must do
- Phase A1: standard assets/liabilities/equity with drill-through
- Phase A3: sub-entity investment accounts; partner equity per class per partner (contributions, distributions, allocated earnings)
Builds on: ACC-06; enterprise phase: ACC-46 through ACC-48.
Done when: Your controller puts our syndication balance sheet next to Rent Manager's and finds the same ownership stack.
Module 4 · Accounting · Reporting & close
ACC-37 · Trial balance
The accountant's home screen. A1
Opening, activity, closing for every account. Always sums to zero. Ties to the P&L and balance sheet by construction, because they're all the same journal.
What it must do
- Per entity per period; basis toggle; export
- Drill any account to detail
Builds on: ACC-06.
Done when: The TB always sums to zero and any line drills to detail.
Module 4 · Accounting · Reporting & close
ACC-38 · GL detail
Every line, filterable, traceable to its source. A1 · See the mockup →
The forensic view: filter by account, period, park, source type, manual vs. automated — and jump from any automated line to the actual reservation, bill, or payout that caused it.
What it must do
- Filters: account / period / park / source type / manual vs. auto
- Source links on every automated line; export
Builds on: ACC-06, ACC-11.
Done when: From a P&L anomaly to the exact guest reservation behind it in four clicks or fewer.
Module 4 · Accounting · Reporting & close
ACC-39 · AR/AP aging
Who owes you, whom you owe, bucketed. A2 · See the mockup →
Receivables from the operating platform and payables from unpaid bills, in standard 0-30/31-60/61-90/90+ buckets with drill-through. (Doesn't exist anywhere in the current product.)
What it must do
- AR aging from platform balances by entity and park
- AP aging from unpaid approved bills
- Drill to the underlying reservation, resident, or bill
Builds on: ACC-12, ACC-29.
Done when: AP aging always equals the sum of unpaid approved bills.
Module 4 · Accounting · Reporting & close
ACC-40 · Per-park P&L
One entity, two parks, three correct P&Ls. A1 · See the mockup →
Every platform-sourced line is stamped with its park. Entity-level costs (insurance, the owner's truck) get allocated across parks by rule — and allocated lines stay distinguishable from direct ones.
What it must do
- Park dimension on every platform line
- Allocation rules for shared costs: fixed % or per-site count
- Allocated vs. direct visually distinct on reports
Builds on: ACC-06, ACC-13.
Done when: An entity owning two parks produces each park's P&L and the combined one, all correct.
Module 4 · Accounting · Reporting & close
ACC-41 · Comparative periods
This July vs. last July, no exports. A1 · See the mockup →
Any statement, any number of periods side by side, with dollar and percent variance columns.
What it must do
- N periods side-by-side on any statement
- $ and % variance columns; export keeps the layout
Builds on: ACC-35, ACC-37.
Done when: A 12-month P&L renders in one view and exports cleanly.
Module 4 · Accounting · Reporting & close
ACC-42 · Consolidated rollups
The portfolio view across all entities. A3
Aggregated statements across any group of entities you define — with intercompany balances flagged so management fees never silently double-count.
What it must do
- Consolidation groups: org-defined subsets of entities
- Aggregated P&L and balance sheet; intercompany balances flagged
- True accounting eliminations deliberately deferred beyond A3
Builds on: ACC-36, ACC-49.
Done when: The 15-entity portfolio P&L never silently double-counts management fees.
Module 4 · Accounting · Reporting & close
ACC-43 · Close checklist
Month-end, systematized — and a cockpit for closing many entities. A2 · See the mockup →
The ritual becomes a checklist: bank recs done, exceptions cleared, integrity green — then lock. The bookkeeping team sees every entity's close state on one screen.
What it must do
- Per entity per month: recs (ACC-23) + exceptions (ACC-15) + integrity (ACC-16) + drafts resolved → lock (ACC-08)
- Portfolio view: close status across all entities a bookkeeping team manages
- A red integrity check blocks the lock
Builds on: ACC-08, ACC-15, ACC-16, ACC-23.
Done when: Forty entities' close states on one screen; a red check blocks the lock.
Module 4 · Accounting · Reporting & close
ACC-44 · Accountant access
A free, read-only seat for your CPA. A2 · See the mockup →
Your accountant gets their own login per entity: every statement, the GL, the documents — export anything, change nothing. Accountants are a channel, not a cost.
What it must do
- Per-entity invite; read-only across statements, GL, TB, docs
- Full export; access audited and revocable; free seat
Builds on: ACC-35 through ACC-38, ACC-55.
Done when: Your CPA self-serves the entire year-end without emailing anyone for reports.
Module 4 · Accounting · Reporting & close
ACC-45 · Tax package
One export that ends the January scramble. A2 · See the mockup →
Everything the preparer needs, bundled: trial balance, GL detail, both-basis statements, 1099 summary, capital roll-forwards where they exist.
What it must do
- One ZIP/PDF bundle per entity per year
- Bulk generation across all entities a bookkeeping team manages
Builds on: ACC-35 through ACC-38, ACC-28, ACC-48.
Done when: A CPA confirms the package contains everything needed to prepare the return.
Module 4 · Accounting · Equity & intercompany
ACC-46 · Partner equity structure
The ownership stack, in the chart of accounts. A3 · See the mockup →
Equity classes per entity — Class A, Class B, GP — with per-partner sub-accounts for contributions, distributions, and allocated earnings. Partners are the same contact records the rest of the platform uses.
What it must do
- Equity classes per entity; per-partner sub-accounts
- Partners are CRM contacts with an investor role — shared identity with the investor-reporting module
Builds on: ACC-05; the CRM contact model.
Done when: Each SPE's balance sheet shows each partner's capital position by class.
Module 4 · Accounting · Equity & intercompany
ACC-47 · Contribution & distribution posting
Capital in and out, posted once, correct everywhere. A3 · See the mockup →
Contributions and distributions hit the right partner sub-accounts automatically — and the investor module's capital accounts are views of these same numbers, so the LP statement and the balance sheet can never disagree.
What it must do
- Contributions post from bank matching or the fund module
- Distribution runs post automatically when approved
- Manual path with partner selection for use before the fund module exists
Builds on: ACC-46; investor-reporting distribution runs (later).
Done when: A distribution posts once and appears identically in the LP's statement and the entity's balance sheet.
Module 4 · Accounting · Equity & intercompany
ACC-48 · Capital roll-forwards
The per-partner artifact K-1 preparers need. A3 · See the mockup →
Opening capital + contributions + allocated earnings − distributions = closing. Per partner, per entity, per year — the thing that otherwise gets rebuilt in Excel every spring.
What it must do
- Allocated earnings default to ownership % with CPA override (tax allocations stay CPA territory)
- Bulk export into the tax package
Builds on: ACC-46, ACC-47.
Done when: The K-1 preparer uses our roll-forward without rebuilding it in Excel.
Module 4 · Accounting · Equity & intercompany
ACC-49 · Intercompany
Fifteen LLCs that borrow from each other, kept honest. A3 · See the mockup →
Due-to/due-from account pairs that mirror automatically, plus the report that matters: across the whole org, intercompany must net to zero — or the report names the broken pair.
What it must do
- Paired accounts: Entity A “due from B” ⇄ Entity B “due to A”; posting one side prompts the mirror
- Org-wide nets-to-zero report with drill-through
- Feeds the bank transfer detection feature
Builds on: ACC-05, ACC-24.
Done when: The org-wide intercompany report nets to zero, or shows exactly which pair is broken.
Module 4 · Accounting · Equity & intercompany
ACC-50 · Management fees
The monthly mgmt-co ritual, automated. A3 · See the mockup →
Fee rules per entity pair — percent of revenue or flat — post income on the management company and expense on the property LLC from one reviewed click.
What it must do
- Fee rules per entity pair; monthly run with preview before posting
- Posts both sides plus the intercompany or cash settlement
Builds on: ACC-49.
Done when: Month-end management fees across the whole portfolio post from one reviewed click.
Module 4 · Accounting · Onboarding & migration
ACC-51 · Onboarding wizard
Entity to books-flowing in one sitting. A1 · See the mockup →
A guided path: create the entity, map its parks, confirm the chart, review mappings, set the go-live date — resumable, and drivable by our bookkeeping team on your behalf.
What it must do
- Steps: entity → parks → CoA → mappings → go-live → (A2: bank connections)
- Progress saves; service-assisted mode where the bookkeeping team drives and the owner approves
Builds on: ACC-01 through ACC-14.
Done when: A design-partner owner reaches “events posting, P&L populating” in one sitting.
Module 4 · Accounting · Onboarding & migration
ACC-52 · Opening balances
Start from truth, not zero. A1
Import the closing trial balance from QuickBooks or Rent Manager as one opening entry at the cutover date. Must balance, or it doesn't post.
What it must do
- CSV import with QuickBooks and Rent Manager export templates
- Posts as a single opening entry against opening-balance equity
- Offered as a done-for-you service
Builds on: ACC-51.
Done when: The day-one balance sheet matches the old system's closing trial balance exactly.
Module 4 · Accounting · Onboarding & migration
ACC-53 · Cutover policy
Go-forward only — stated, enforced, visible. A1
Platform events from before your go-live date are excluded from posting (visibly, not silently). No full-history re-posting; historical documents attach for reference.
What it must do
- Ingestion excludes pre-cutover events with a visible count
- No duplicate revenue between imported balances and streamed events at the boundary
Builds on: ACC-12, ACC-52.
Done when: No duplicate revenue at the cutover boundary.
Module 4 · Accounting · Platform
ACC-54 · Embedded UI
You never know it's a separate system. A1
Accounting screens live inside the same owner dashboard as reservations — one login, an entity switcher, statements readable on your phone.
What it must do
- Embedded via the same session-token pattern as the CRM
- Entity switcher; statements mobile-readable, heavy workflows desktop-first
Builds on: The dashboard token pattern.
Done when: Moving from reservations to the P&L requires no second login and no visible domain change.
Module 4 · Accounting · Platform
ACC-55 · Roles & permissions
Books-specific access control. A1
Financial data has its own roles — owner, entity admin, bookkeeper, approver, read-only accountant, auditor — granted per entity and enforced on the server.
What it must do
- Per-entity grants; server-side checks on every call
- Sensitive fields (TINs, bank numbers) masked by role
Builds on: ACC-54.
Done when: A park manager with operations access sees no financials without an explicit grant.
Module 4 · Accounting · Platform
ACC-56 · Budgets
Plan vs. actual, at the account level. A3 · See the mockup →
Annual budgets per account with monthly spreads; the P&L grows budget, actual, and variance columns; the cross-park intelligence views build on top.
What it must do
- Monthly spread: even or custom; seed from last year's actuals
- Budget-vs-actual columns on the P&L
Builds on: ACC-35.
Done when: The July P&L shows budget, actual, and variance per line for a budgeted entity.
Module 5 · In scoping · sequenced last
Investor & fund reporting
Replaces: IMS — eventually. Keep IMS until this earns it.
Core interactionNone. Reads the accounting stream only — a view over the books, not a re-keying exercise.
Why nobody else can build this right
IMS · ~$12K/yr
What you run. No connection to the operating system — everything re-keyed.
Juniper Square · $25–40K/yr
Institutional. Yardi/QB connectors, still not PMS-native.
Agora · $9–15K/yr
Mid-market. QuickBooks only.
InvestNext · $6–9K/yr
Visual waterfall builder. QuickBooks only.
Every one of them re-keys or imports operating results. Here, distributions and LP metrics are computed from the same books that ran the properties — a view, not a workflow. That's structural, not a feature they can add.
›Deals & capital accounts3
Deal registryOne syndication per property: deal ↔ SPE ↔ park, ownership mirrored from the books.Scoping
LP positions"Here are my six deals, positions, and metrics" — one login.Scoping
Capital accountsAppend-only per LP per deal: contributions, distributions, pref accrual.Scoping
›Waterfalls & distributions3
Waterfall engineComposable tranche stack: pref (cumulative/compounding), return of capital, catch-up, share classes, multi-tier promotes, side letters — separate op-cash and capital-event waterfalls. Every run shows per-LP tier math.Scoping
Distribution runsAvailable cash → tier math shown line-by-line → approve → paid → posted back to the books.Scoping
K-1 packageTrial balance + capital account roll-forwards to your CPA. We package; your preparer prepares.Scoping
›LP portal3
Investor loginPositions, distribution history, capital account statements, documents.Scoping
Performance metricsCash-on-cash and equity multiple first; IRR later (defensible numbers before debatable ones).Scoping
Deal announcementsUpdates to all LPs in a deal, logged.Scoping
›Capital calls — fast follow2
Call runsPro-rata amounts, LP notices, collection tracking — the mirror of a distribution. Built for the profile that doesn't stack cash against the refi wall.Scoping
Committed / called / receivedCapital accounts model all three from day one, so calls bolt on without rework.Scoping
Deliberately out: fundraising tooling (data rooms, subscription docs), fund-of-funds, ACH debits from LPs in v1 (wire/check tracking first). Your partner raises; the pain is reporting. And this module only starts after the per-entity GL is proven — before that, it would just be IMS again.
Module 6 · Reports live · cross-system layer phased
Intelligence & reporting
Replaces: analytics upsells, the 900-report library, the Excel glue
Core interactionReads the shared warehouse everything streams into. No exports, no load on production.
›The reporting layer7
Report library~48 warehouse-backed reports live today: occupancy & revenue (w/ drill-downs), pace YoY, arrivals/departures/in-house, payouts, tax, POS, meter reads. CSV/XLSX export.Live
Chat report builder"Six columns, July vs last July, same-store." Describe it, get it.Phased
Budget vs. actualForward bookings against plan, not just history.Phased
Mix analysis"Lost monthlies, better on transients?" — finally answerable.Phased
Same-store compsIdentical inventory, year over year, across the portfolio.Phased
Scheduled reportsAny saved report, emailed on your cadence.Phased
Export / APIEverything, always, no ransom.Phased
The plan
Sequencing & the ask
nowSpecs + accounting scoping
These docs, plus a working session on your entity/GL structure — the biggest open decision.
Q3CRM build starts
Reviewable build ~30 days after start. We dogfood it as our own CRM.
→Tenancy upgrades
Rent-roll dashboard, guided monthly setup, auto utility billing, flexible late fees, deposits.
→Accounting layer
Native P&L → per-entity GL, shaped by the scoping session. The Rent Manager conversation gets real.
laterInvestor reporting
Scoped only after the ledger is proven in production.
Full stack, thoroughly QA'd: a six-to-twelve-month arc. Modules land along the way and are useful standalone.
< todaytarget vs. your aggregate spend
per lotnot per seat — whole team logs in
freedata export, forever
What I want from you
1Pick this apart
What's missing, mislabeled, or in the wrong phase.
2One accounting session
Your entity structure and close process — the reference case for the GL.
330-day CRM look
Tell me where the first build is wrong.
Said plainly: no contract, no commitment, no switching pressure. Your brain on the design; founding terms if it earns your business. If something here is wrong, I'd rather hear it this month than after we've built it.
Prototype
UX mockups — click through the product
16 interactive screens, fake data, real flows. Buttons work Figma-style: modals open, states change, dead clicks flash the hotspots. Every screen links to its specs and its neighbors.
UX Mockups · Module 3 · Tenancy
Rent-roll dashboard
User storyAs an owner, I see every long-term guest, balance, next bill, and autopay status in one place.
Specs: Tenancy module Figma-style prototype: click anything — dead clicks flash the live hotspots.
UX Mockups · Module 3 · Tenancy
Resident ledger
User storyAs a manager, I see exactly what a resident owes and why — one running ledger.
Specs: Tenancy module Figma-style prototype: click anything — dead clicks flash the live hotspots.
Sunset Pines RV Resort· Sunset Pines Holdings LLCAmy (Manager) ▾Sarah Mitchell — Lot 14 CURRENT LEASE THRU MAY 2027
Deposit held: $500 (liability) · Autopay: Visa ••4412, 1st · Full guest profile →
| Date | Entry | Charge | Payment | Balance |
| Jul 1 | Autopay — Visa ••4412 | | $698.20 | $0.00 |
| Jul 1 | Lot rent — July | $650.00 | | $698.20 |
| Jun 28 | Water (4,120 → 4,545 gal) | $48.20 | | $48.20 |
| Jun 1 | Autopay — Visa ••4412 | | $694.10 | $0.00 |
← Rent roll Record payment Generate notice Statement PDF
Record payment — Sarah Mitchell
Method: Cash at office ▾ · Amount: $ · Deposit batch: Jul 6 ▾
Posts to the ledger and tonight's accounting stream automatically.
Record Cancel
Generate notice
Late notice · Demand for payment · Non-renewal — merge-filled from the live ledger balance, logged to the resident file.
Generate late notice Cancel
UX Mockups · Module 3 · Tenancy
Guided monthly-guest setup
User storyAs a manager, I set up a monthly guest in one guided flow — not four separate screens.
Specs: Tenancy module Figma-style prototype: click anything — dead clicks flash the live hotspots.
Sunset Pines RV Resort· Sunset Pines Holdings LLCAmy (Manager) ▾New monthly guest — Step 3 of 4: Billing
Billing scheduleMonthly on the 1st · $650/mo lot rent
Move-in Aug 12 → first invoice prorated: $419.35 (20 nights)
PRORATION PREVIEW
Autopay enrollmentCard on file: Visa ••7730
☑ Enroll in autopay (1st of month)
☑ Email + text receipt
RECOMMENDED
Also billing monthly — Water (metered · $0.11/gal) · Pet fee $15
Continue → Lease & e-sign Back
Lease — generated from application data12-month lease · Lot 22 · $650/mo · deposit $500 · rules & regs attached
Send for e-signature to: r.chen@gmail.com
ZERO RE-ENTRY — everything carried from the application
Send & finish
UX Mockups · Module 3 · Tenancy
Application review
User storyAs an owner, I review a complete application — screening, rig, income — with compliance built in.
Specs: Tenancy module Figma-style prototype: click anything — dead clicks flash the live hotspots.
Sunset Pines RV Resort· Sunset Pines Holdings LLCAmy (Manager) ▾Application — Lot 22 (long-term) AWAITING DECISION
Submitted Jul 3 · $45 fee paid · Robert & Lisa Chen + 1 child · 2019 Keystone Montana 34'
Rig review2019 (passes 10-year rule) · photos attached · 2 park references ✓
DocumentsID ✓ · Proof of income ✓ · Signed consent ✓
Approve → generate lease Conditional Deny
Deny application
Reason (required, logged):
FCRA: denial based on screening auto-generates the adverse-action notice to the applicant.
Deny + send notice Cancel
UX Mockups · Module 3 · Tenancy
Meter capture (mobile)
User storyAs field staff, I walk the park entering reads in lot order — photo attached, anomalies flagged.
Specs: Tenancy module Figma-style prototype: click anything — dead clicks flash the live hotspots.
Sunset Pines RV Resort· Sunset Pines Holdings LLCAmy (Manager) ▾Water reads — Jul walk
9 of 28 done · next: Lot 14
Lot 14 — meter W-014Last read: 4,545 gal (Jun 28)
gal
Usage: 437 gal · charge $48.07 → bills Aug 1 automatically
📷 Photo Save → next lot
Lot 8 — flaggedRead is 3.2× the trailing average. Held in the exception queue — nothing bills until reviewed.
EXCEPTION Review later
UX Mockups · Module 3 · Tenancy
Delinquency & aging
User storyAs an owner, I see who's behind and by how long — and enforcement rules run themselves.
Specs: Tenancy module Figma-style prototype: click anything — dead clicks flash the live hotspots.
Sunset Pines RV Resort· Sunset Pines Holdings LLCAmy (Manager) ▾Delinquency
Portfolio · July 6, 2026
| Resident | Lot | Balance | Aging | Late fees | Flags | |
| Miguel Torres | 22 | $1,389.40 | 62 days | $75 applied | EVICTION PATH — PARTIALS BLOCKED | Demand notice |
| J. Whitfield | 19 | $611.00 | 34 days | $32.50 applied | | Late notice |
Late fees post automatically (5-day grace, 5%). Cash-at-retail from a flagged resident routes to suspense, not the ledger.
Demand for payment — Miguel Torres, Lot 22
“You are hereby notified that rent and charges totaling $1,389.40 are past due. Payment in full is required within the period required by law…”
Merge-filled from the live ledger. Have your attorney approve the template for your state.
Send & log Cancel
UX Mockups · Module 2 · CRM
Guest profile & timeline
User storyAs front desk, I see the whole human — stays, lease, calls, notes — before I answer.
Specs: CRM module Figma-style prototype: click anything — dead clicks flash the live hotspots.
Sunset Pines RV Resort· Sunset Pines Holdings LLCAmy (Manager) ▾Sarah Mitchell RESIDENT VIP
sarah.m@gmail.com · (512) 555-0184 · 2021 Airstream 27' · 1 dog · Occupants: Tom ✓, Emma (nudge running)
- Jul 1💳 Autopay $698.20 — July rent + water
- Jun 4📞 AI Front Desk: guest passes for the 4th — resolved, summary attached
- May 12📄 Lease renewed through May 2027 (e-signed)
- Mar 2✉️ Broadcast: laundry-room closure — opened
- 2024🏕️ 3 weekend stays → seasonal → resident
✉️ Message 📞 Log call + Note
Message Sarah
Via: Email + SMS ▾ · Template: none ▾
Sends as Sunset Pines; threads on this timeline; any staff member sees the reply.
Send Cancel
UX Mockups · Module 2 · CRM
Lead pipeline & waitlist
User storyAs an owner, seasonal inquiries live in a pipeline with a ranked waitlist — not a legal pad.
Specs: CRM module Figma-style prototype: click anything — dead clicks flash the live hotspots.
Sunset Pines RV Resort· Sunset Pines Holdings LLCAmy (Manager) ▾Seasonal / long-term pipeline
Sunset Pines · 11 open leads
Inquiry (4)
R. Alvarez50-amp, Oct–Mar · via email
AI-PARSED
Contacted (3)
P. Nguyenwaiting on rig photos Nudge
Waitlist (3)
1 · T. Brooks50-amp pull-thru
Notify next
2 · A. Riveraany full-hookup
Won lead → reservation or application with zero re-entry.
UX Mockups · Module 2 · CRM
Intake triage queue
User storyAs staff, everything that couldn't auto-parse waits in one queue I clear daily.
Specs: CRM module Figma-style prototype: click anything — dead clicks flash the live hotspots.
Sunset Pines RV Resort· Sunset Pines Holdings LLCAmy (Manager) ▾Triage queue 3 WAITING
Voicemails, unparsed emails, walk-in notes
VOICEMAIL · 8:42 AM“Hi, this is Kathy Dunn, we're looking for a monthly spot starting next week, 32-foot fifth wheel… 830-555-0141.”
Create lead → monthly Not a lead
EMAIL · 7:15 AMFwd: “rates?? for winter also do u have propane” — no dates, no rig. AI drafted a reply asking for both.
Create lead + send draft Edit draft
AI-drafted reply
Hi! Winter monthly rates start at $650 + metered electric. We do have propane on site. What dates are you thinking, and what are you towing? — Sunset Pines
Send Close
UX Mockups · Module 4 · Accounting
Entity dashboard & close
Figma-style prototype: click anything — dead clicks flash the live hotspots.
Sunset Pines RV Resort· Sunset Pines Holdings LLCAmy (Manager) ▾Sunset Pines Holdings LLC INTEGRITY ✓
June 2026 close · entity 3 of 15 · statements →
June close checklist
- ✓Bank rec — Frost operating (auto-matched 96%)
- ✓Stripe payouts decomposed & matched (14/14)
- ⚠2 exceptions to resolve
- ✓Daily integrity check green (platform ↔ ledger)
- ○Lock period — blocked until exceptions clear
Lock June
UX Mockups · Module 4 · Accounting
Exception queue
Figma-style prototype: click anything — dead clicks flash the live hotspots.
Sunset Pines RV Resort· Sunset Pines Holdings LLCAmy (Manager) ▾Exceptions — Sunset Pines Holdings 2 OPEN
| Age | Type | Detail | Amount | |
| 2d | UNMAPPED CODE | New charge code “firewood-bundle” (6 events queued) | $142.50 | Map → post all |
| 1d | LOCKED PERIOD | Refund dated May 28 — May is locked | $85.00 | Post to June w/ flag |
Resolutions are audited. Exceptions older than 7 days escalate.
← Back to close
UX Mockups · Module 4 · Accounting
P&L with drill-through
Figma-style prototype: click anything — dead clicks flash the live hotspots.
Sunset Pines RV Resort· Sunset Pines Holdings LLCAmy (Manager) ▾P&L — June 2026
Sunset Pines Holdings · ACCRUAL CASH · parks side-by-side
| Sunset Pines | Cedar Flats | Combined | vs Jun '25 |
| Transient revenue | $38,204 | $21,110 | $59,314 | +8.2% |
| Lot rent (monthly) | $18,850 | $9,375 | $28,225 | +4.1% |
| Utility recovery | $1,982 | $1,014 | $2,996 | +11% |
| Processing fees | ($1,644) | ($902) | ($2,546) | — |
| Repairs & maintenance | ($4,310) | ($6,890) drill | ($11,200) | +64% |
| Net operating income | $31,778 | $12,404 | $44,182 | +6.9% |
Toggle ACCRUAL/CASH above — same journal, two views. Click “drill” on the R&M spike.
R&M — Cedar Flats · June
GL detail (3 entries):
Jun 18 · Joe's Septic — $5,200 · bill #2214 →
Jun 09 · Hill Country Electric — $1,240
Jun 03 · Ace Hardware (card) — $450
Every automated line links to its source bill, reservation, or payout.
Close
UX Mockups · Module 4 · Accounting
Bill inbox & AI coding
Figma-style prototype: click anything — dead clicks flash the live hotspots.
Sunset Pines RV Resort· Sunset Pines Holdings LLCAmy (Manager) ▾Bills — needs review 2
bills-sunsetpines@… · vendors changed nothing
Joe's Septic — $5,200.00AI CODED · 97%COI EXPIRED JUN 30
Invoice #2214 · due Jul 20 · → Repairs & Maintenance · Cedar Flats · W-9 ✓
Approve → pay ACH Pay by mailed check Edit coding
Hill Country Electric Co-op — $3,918.4440% ABOVE USUAL
Recurring ~$2,800 expected · flagged, not auto-coded · → Utilities · Sunset Pines
Review line detail
Pay by mailed check — Joe's Septic
Funding: Frost operating (Sunset Pines Holdings) · Partner prints & mails · arrives ~5 business days · tracked
Queue check Cancel
UX Mockups · Module 5 · Investor reporting
LP portal — my deals
Figma-style prototype: click anything — dead clicks flash the live hotspots.
Sunset Pines RV Resort· Sunset Pines Holdings LLCAmy (Manager) ▾Welcome back, Robert
6 investments · Smith Parks Capital
$96,410
Distributions to date
| Deal | Invested | Ownership | Distributions | Cash-on-cash | |
| Sunset Pines RV Resort | $100,000 | 4.2% · Class B | $27,300 | 9.8% | Capital stmt |
| Cedar Flats MHC | $75,000 | 3.1% · Class B | $16,900 | 8.4% | |
| Blue Heron RV Park | $50,000 | 2.8% · Class A | $11,250 | 10.0% | |
Documents: operating agreements, K-1s, capital statements. Numbers come from the books that run the properties.
Capital account — Sunset Pines SPE
Opening (1/1/26): $91,400
+ Contributions: $0
+ Allocated earnings (est.): $4,120
− Distributions: $5,600
Closing (6/30/26): $89,920
Generated from the entity's journal — the same numbers your K-1 preparer gets.
Close
UX Mockups · Module 5 · Investor reporting
Distribution run — tier math
Figma-style prototype: click anything — dead clicks flash the live hotspots.
Sunset Pines RV Resort· Sunset Pines Holdings LLCAmy (Manager) ▾Q2 2026 distribution — Sunset Pines SPE DRAFT
Distributable cash: $62,000 (from the entity's books) · operating waterfall
| Tranche | Rule | Amount | Remaining |
| 1 · Preferred return | 8% cumulative on unreturned capital → LPs | $41,200 | $20,800 |
| 2 · Split | 65% LP / 35% GP | $13,520 / $7,280 | $0 |
Robert Chen (Class B, 4.2%) — pref $1,730 + split $568 = $2,298 · posts to capital account + entity equity on approval
Approve & notify 22 LPs ← LP view
UX Mockups · Module 6 · Intelligence
Chat report builder
Figma-style prototype: click anything — dead clicks flash the live hotspots.
Sunset Pines RV Resort· Sunset Pines Holdings LLCAmy (Manager) ▾
show me monthly vs transient revenue mix by month this year vs last, same-store, both parks
Revenue mix — same-store, Jan–Jun
| Month | Monthly '26 | Transient '26 | Mix Δ vs '25 |
| Apr | $27,800 | $48,100 | +3.2pts monthly |
| May | $28,225 | $55,900 | +2.8pts |
| Jun | $28,225 | $59,314 | +2.1pts |
You lost 2 monthlies in June but transient ADR is up 11% — net revenue +6.9%. Save this report? Schedule it?
save it, email me on the 3rd
Saved as “Mix — same-store” · scheduled monthly on the 3rd ✓
Reply: “save it, email me on the 3rd”