Skip to content
PipeLedger AI
All resources

Real estate development · Customer story

Ome Dezin: an AI-assisted controller setup for real estate development

Ome Dezin brought project costs, funding, and company results into one financial review process. With PipeLedger connected to its QuickBooks records, owners and the controller can use AI assistants to investigate differences and follow the answers back to the books.

Business
Real estate development
Structure
Multiple LLCs, including a holding company
Accounting source
QuickBooks Online
Workflow
AI-assisted controller review

By PipeLedger · Published · Updated

Ome Dezin website image showing two people beside a sculptural wooden staircase in a bright interior.

A growing development business needed a shared financial picture

Los Angeles-based Ome Dezin restores character-driven sanctuaries with thoughtful design and contemporary livability. After years in real estate development, the team began professionalizing its operations in 2025 as it took on larger, lender-financed projects with more co-investors, lenders, and contractors. Clear legal structures, owner protection, and project-level accountability became top priorities.

Ome Dezin was already using QuickBooks. What it needed next was help managing financial data across multiple LLCs, including the holding company, and bringing their results together. The owners wanted a clear answer to two questions: what has each project contributed individually, and what are the company results? They needed one project overview that made sense from purchase through development and sale, without having to understand how the accountant recorded each cost.

As Ome Dezin attracted co-investor capital, the team needed financial results it could explain with confidence. Funding, reimbursements, and loans between the LLCs repeatedly reopened reconciliation questions, leaving the owners without a clear explanation of what each project had earned or where the money belonged.

The team invested in a shared financial data warehouse, combined reporting across the LLCs, and AI-assisted controller review. The goal was a consistent view of project and company results, with accounting differences that could be traced back to the records and resolved.

One reporting template for every project

Every Ome Dezin project reports through the same template. The Finance Catalog groups the chart of accounts into four Catalog Categories shared by all projects: Revenue, Acquisition Cost, Development Cost, and Financing Cost. Development Cost is split further into Catalog Subcategories for hard costs, soft costs, carrying costs, and closing costs. These groupings are defined once and applied to every project, so a completed sale, an active renovation, and a newly acquired property can be read through the same lines.

Ome Dezin’s earlier spreadsheet template carried rising admin costs and could not keep up once several projects ran at the same time with different funding arrangements and cost treatments. Investing in a data warehouse and PipeLedger made sense. The replacement lives in the Finance Catalog rather than in the books. QuickBooks keeps its own account hierarchy; the controller assigns each account a Catalog Category and Catalog Subcategory that say what the cost means to the business. A property tax bill and an architect’s invoice both land in Development Cost, one under carrying costs and the other under soft costs, without renaming anything in QuickBooks. The amounts below are illustrative; the structure is the real template.

The Project Report template, with illustrative amounts
Catalog Category (L4)Catalog Subcategory (L5)Example accountsIllustrative amount
RevenueReal Estate Sales RevenueSale of property5,250,000
Acquisition CostProperty acquisition releaseProject acquisition cost release(3,600,000)
Development CostHard costs - general contractorGeneral contractor; General contractor - landscaping, pool, roofing; General contractor - paint/stucco, flooring(560,000)
Development CostHard costs - materials & suppliesFurniture & staging; Supplies - cabinetry; Appliances; Supplies - floors, tiles, lighting, plumbing(285,000)
Development CostSoft costs - Architect, engineering & AVProfessional fees - architect/creative; General contractor - Audio / Visual (AV)(55,000)
Development CostCarrying costs - tax / insurance / utilitiesProperty taxes and transfer taxes; Insurance; Utilities(95,000)
Development CostClosing, title, escrow, legalRealtor commission; Title & escrow costs; Inspection costs(240,000)
Financing CostFinancing CostFinancing charges(90,000)
Project result325,000

Two cost definitions follow from the template. Development Cost is everything in the Development Cost category across both expense and asset accounts, so development spending can be compared across projects whichever treatment applied; Acquisition Cost and Financing Cost stay outside it. Total Project Cost is broader: recorded project expenses plus the capitalized costs still held as assets, including acquisition. When a capitalized cost is released to cost of goods sold at sale, the asset falls and the expense rises by the same amount, so the total counts that cost once. The implementation guide includes a worked cost-release example.

The definitions behind the project results

We publish how customers use PipeLedger so that other teams can reuse the same approach. The definitions below are the ones Ome Dezin runs.

A property can take more than a year to develop. Real estate developers therefore capitalize eligible project costs: they hold those costs as assets during development and recognize them as expense when the property is sold. Other costs may be expensed as incurred. The controller needs to follow both treatments across the full project lifecycle.

PipeLedger’s Finance Catalog turns the controller’s definitions into reusable measures. Each measure specifies the accounts to include, the period to cover, and how to calculate the result. Ome Dezin can apply those definitions across its projects without maintaining a separate spreadsheet formula for each one.

For Ome Dezin, three definitions mattered most. Development Cost had to be measured from the template’s catalog categories, whether a cost was expensed or capitalized. Total Project Cost had to hold across costing methods, combining expensed costs with the capitalized costs still on the balance sheet. And because co-investors fund projects alongside the owners, contributed capital had to be selected account by account, so that Project ROE uses only the approved contribution accounts. The Finance Catalog handles all three:

Project result metrics
MetricDescriptionPipeLedger technical formulaWhat it supports
Development CostDevelopment costs across approved asset and expense accounts, excluding acquisition and separately classified financing costs.
development_cost
= SUM_WINDOW(mart_gl_lines)
include: taxonomy_level_4_catalog = Development Costwindow: lifetime
Compare development spending across projects, whether costs are expensed or capitalized.
Total Project CostThe project’s recorded cost through the reporting date, including acquisition.
ome_total_project_cost
= ome_project_capitalized_cost_activity + ome_project_cost_expenses
window: lifetime
Follow costs through development and sale without counting a matched cost release twice.
Project Return on Equity (ROE)Lifetime accounting return on the capital contributed to the project; not annualized.
ome_project_roe
= SUM_WINDOW(net_income) / SUM_WINDOW(ome_project_equity_contributions)
ome_project_equity_contributions: account_id in approved contribution accounts, credit-positivewindow: lifetimeannualization: noneunit: percentage
Keep invested capital visible when assessing returns, even after it has been repaid.
Return on Project CostLifetime accounting profit relative to total project cost; not annualized.
ome_project_return_on_cost
= SUM_WINDOW(net_income) / SUM_WINDOW(ome_total_project_cost)
window: lifetimeannualization: noneunit: percentage
Compare the profit earned relative to the recorded cost of each project.

The formula column mirrors the workspace Metrics tab. Lowercase identifiers are Finance Catalog metric IDs: canonical metrics such as net_income and total_equity, and the ome_ definitions Ome Dezin authored for its own business, which another developer can adapt to their own accounts. Uppercase functions are PipeLedger metric calculation types, and the detail lines carry each metric’s window, annualization, and membership settings. This is a readable rendering of the catalog configuration, not a free-form formula to paste into a derived metric. The returns are accounting returns on recorded balances, not investor cash-flow IRRs.

From project reports to consolidated project overviews

Each project report rolls up into one Project Overview across all LLCs. Every row is a project. Every column is a definition from section 2: revenue, cost of goods sold, expenses, profit, Total Project Cost, Development Cost, Project ROE, and Return on Project Cost. The chart above the table plots each project’s total cost against its operating profit, so the portfolio can be read at a glance before anyone opens a row.

Ome Dezin’s Project Overview dashboard: a bubble chart of total project cost against operating profit above a table with one row per project and columns for revenue, COGS, expenses, profit, total project cost, development cost, ROE, and ROC. Amounts are redacted.
Ome Dezin’s Project Overview in Google Data Studio, with amounts redacted. One row per project; the columns follow the template and metric definitions from section 2.

The overview is refreshed automatically every week, and on request from the controller, who works mostly during account closing. The controller reviews it first, looking for projects whose numbers do not match their stage: a development asset still open after a sale, a cost booked to the wrong project, an equity balance that does not reflect a co-investor contribution. The owners then review the same page. Because every project uses the same template, the questions are the same each month: what has this project cost, what has it earned, and what is still on the balance sheet.

Connected AI models do the retrieval work during that review. When a number on the overview looks wrong, the controller or an owner asks the question directly in ChatGPT, Codex or Claude: which entries make up Development Cost on this project, what is making contributions between the partners uneven, which contractor was paid for the landscaping. The assistant resolves the project, retrieves the supporting records within its permitted scope, and explains the difference in plain language, much quicker than a human. PipeLedger’s AI works at the journal-entry level, helping classify debits and credits correctly so real estate books stay GAAP-compliant, all the way from project accounting to the cash flow statement.

Behind the question, the assistant uses pl_resolve to identify the project or counterparty and pl_query to retrieve records within its permitted scope.

What each project still holds, and how it is funded

Section 3 answers what each project has earned. This view answers what is still invested in each project at a month-end, and how that investment is funded. The Project Financing Overview shows, per project, the capitalized project cost still on the balance sheet, the financing equity and financing debt behind it, total financing, and loan-to-cost.

Ome Dezin’s Project Financing Overview dashboard: a bubble chart of financing debt against capitalized project cost above a table with one row per project and columns for capitalized project cost, financing equity, financing debt, total financing, and LTC ratio. Amounts are redacted.
Ome Dezin’s Project Financing Overview in Google Data Studio, with amounts redacted. Each row is a project’s position at the selected month-end; the columns are the project financing metrics defined below.

The controller uses this view to follow each project through its lifecycle. During development, capitalized cost and financing grow together. After a sale, cost release, debt repayment, and equity distributions can happen at different times, so the view shows what is still on the books: a capitalized balance not yet released, debt not yet repaid, equity not yet distributed. Each is a prompt to investigate rather than an error by default. The supporting General Ledger records show whether a booking or a classification needs correction, and the next refresh confirms the fix.

Borrowing and owner contributions explain funding; they are not additional project costs. Loan-to-cost compares financing debt with capitalized project cost at the same date. For Ome Dezin, the same figures support the co-investor conversation: each project shows its equity, the debt alongside it, and what remains invested, without anyone reconstructing the numbers from the books.

The five balance metrics behind this view, in the same notation as the project result metrics in section 2:

Project financing metrics
MetricDescriptionPipeLedger technical formulaWhat it supports
Capitalized Project CostAcquisition and development costs still held as project assets at month-end.
ome_project_capitalized_cost_balance
= SUM(ending_balance)
source: mart_project_financial_positioninclude: project_economic_role = capitalized_project_cost
See the remaining investment and identify costs that may need releasing after a sale.
Financing EquityOwner and co-investor capital remaining in the selected project-equity accounts at month-end.
financing_equity
= SUM(ending_balance)
source: mart_project_financial_positioninclude: project_economic_role = financing_equity
Review equity funding attributed to each project.
Financing DebtBorrowing attributed to the project at month-end.
financing_debt
= SUM(ending_balance)
source: mart_project_financial_positioninclude: project_economic_role = financing_debt
Track outstanding project borrowing separately from other liabilities.
Total FinancingThe project’s equity and borrowing at the same month-end.
total_financing
= financing_equity + financing_debt
Review the funding behind the project alongside its remaining assets.
Loan-to-Cost (LTC)Project debt relative to costs still capitalized at month-end.
loan_to_cost
= financing_debt / capitalized_project_cost
unit: percentage
Understand borrowing relative to the remaining recorded project investment.

Company returns that support the next financing conversation

For a developer seeking additional funding, a banker or co-investor needs an understandable account of the business behind the next project. Cash, debt, equity, and returns become more useful when the controller can explain their definitions and connect them to reviewed books. That reporting gives lenders and co-investors a clearer basis for discussing the next project.

Thoughtful development takes time. A property may be acquired in one year, restored in the next, and sold later. Sales can therefore make a single year's income change sharply even while the team continues its work. Ome Dezin added a trailing 24-month view to give those longer project cycles more context and smooth some of the timing effects of individual sales.

Ome Dezin added five trailing 24-month metrics: 24-month Net Income, Average Book Equity, Average Assets, and annualized returns on those two average balances. Each return uses the full 24-month income divided by the average of 24 month-end balances, then multiplied by one-half for linear annualization.

The company view also shows bank cash, Total Assets at book value, and Financing Debt before netting cash. Together they explain liquidity, the recorded asset base, and borrowing. Financing Debt selects borrowing accounts; it is not a synonym for all liabilities.

The company page presents month-end figures in three layers: four headline figures with their change against twelve months earlier, a trend for each over the past year, and monthly tables of the amounts and the returns. Two rows are operational measures. Projects completed and Projects in progress come from PipeLedger’s Unit Register, so the owners see the number of projects next to the capital behind them.

Ome Dezin’s consolidated company metrics dashboard: four headline cards for cash, trailing 24-month net income, return on average equity, and debt-to-capital, three of them with change against twelve months earlier; a trend chart for each; and monthly tables of financial position amounts, project counts, and return and leverage percentages. Amounts are redacted.
Ome Dezin’s consolidated company metrics in Google Data Studio, with amounts redacted. Headline figures, twelve-month trends, and monthly tables of amounts and returns, all from the definitions below.
Company metrics
MetricDescriptionPipeLedger technical formulaWhat it supports
CashRecorded bank balances at month-end.
cash
= SUM(ending_balance)
source: canonical Finance Catalog metricinclude: Bank accounts
Review the cash position across the selected LLCs.
Net Income — Trailing 24 MonthsRecorded earnings across the latest 24 reporting months.
ome_t24m_net_income
= SUM_WINDOW(net_income)
window: trailing_24_months
Put individual property sales in the context of a longer development cycle.
Total EquityBook equity at month-end, including current-year earnings.
total_equity
= SUM(ending_balance)
source: canonical Finance Catalog metricinclude: equity accounts + current-year earnings
Understand the company’s recorded equity base.
Average Book Equity — Trailing 24 MonthsAverage book equity supporting the business over the same 24-month window.
ome_t24m_average_book_equity
= AVERAGE_MONTH_END(total_equity)
window: trailing_24_months
Show the capital base used in the 24-month equity return.
Total AssetsAssets at their recorded book value at month-end.
total_assets
= SUM(ending_balance)
source: canonical Finance Catalog metricinclude: asset accounts
Review the recorded asset base behind the business.
Average Assets — Trailing 24 MonthsAverage book assets over the same 24-month window.
ome_t24m_average_assets
= AVERAGE_MONTH_END(total_assets)
window: trailing_24_months
Show the asset base used in the 24-month asset return.
Financing DebtBorrowing at month-end, before deducting cash; excludes other liabilities.
ome_financing_debt
= SUM(ending_balance)
source: mart_gl_trial_balanceinclude: project_economic_role = financing_debt
Explain outstanding borrowing to owners, lenders, and co-investors.
Debt-to-CapitalThe share of debt and book equity represented by borrowing.
ome_debt_to_capital
= ome_financing_debt / ome_debt_and_book_equity
ome_debt_and_book_equity: ome_financing_debt + total_equityunit: percentage
Review the company’s funding mix.
Return on Average Equity — Trailing 12 MonthsTwelve-month earnings relative to the average of opening and closing book equity.
ome_ttm_return_on_average_book_equity
= SUM_WINDOW(net_income) / AVERAGE(OPENING(total_equity), CLOSING(total_equity))
window: trailing_12_monthsannualization: noneunit: percentage
Review the latest year’s earnings relative to its equity base.
Return on Average Assets — Trailing 12 MonthsTwelve-month earnings relative to the average of opening and closing book assets.
ome_ttm_return_on_average_assets
= SUM_WINDOW(net_income) / AVERAGE(OPENING(total_assets), CLOSING(total_assets))
window: trailing_12_monthsannualization: noneunit: percentage
Review the latest year’s earnings relative to its asset base.
Return on Average Equity — Trailing 24 Months, AnnualizedTwo-year earnings relative to average monthly book equity, expressed as an annualized return.
ome_t24m_return_on_average_book_equity
= SUM_WINDOW(net_income) / AVERAGE_MONTH_END(total_equity)
window: trailing_24_monthsannualization: linear, 12 / 24unit: percentage
Give longer development cycles more context in financing discussions.
Return on Average Assets — Trailing 24 Months, AnnualizedTwo-year earnings relative to average monthly book assets, expressed as an annualized return.
ome_t24m_return_on_average_assets
= SUM_WINDOW(net_income) / AVERAGE_MONTH_END(total_assets)
window: trailing_24_monthsannualization: linear, 12 / 24unit: percentage
Explain earnings relative to the assets supporting those longer project cycles.
Projects completedNumber of projects completed by month-end, counted in the Unit Register rather than derived from the ledger.
projects_completed
= SUM(closing_balance_quantity)
source: mart_unit_rollforwardmetric_key: projects_completed
Put the money figures in the context of how many projects have been finished.
Projects in progressNumber of projects under way at month-end, from the same Unit Register roll-forward.
projects_in_progress
= SUM(closing_balance_quantity)
source: mart_unit_rollforwardmetric_key: projects_in_progress
Show how much work is in the pipeline behind the capital deployed.

What changed for Ome Dezin

The result is a way of working rather than a report. Seven things are different.

  • No spreadsheets. The project template, the overviews, and the company metrics come from the QuickBooks books through PipeLedger. Nothing is re-keyed, and there is no workbook to reconcile against the ledger.
  • Reporting that co-investors and lenders can rely on. Each project shows its cost, its funding, and its return with the definitions written down, which is the basis for bringing outside capital into the next project.
  • Room for more projects and more LLCs. A new entity or project is a connection and a set of tags, not a new template. The warehouse and the definitions scale with the business.
  • Scoped access for partners, project managers, and contractors. PipeLedger’s credential system shares each LLC’s reporting with the partner in that LLC, and gives project managers and contractors a scoped view of their project’s actual costs as they are published.
  • Owner controlling across every project. The owners review all projects on one page, ask the same questions each month, and follow any number back to its entries.
  • A faster close. With AI-assisted reconciliation, the hourly-paid controller spends significantly less time on the close than before, and a refresh on request shows a correction the same day.
  • A clean handover to the CPA. Year-end numbers arrive separated by LLC, with each project’s history and supporting entries attached.

For Ome Dezin, the change is a working financial review process: project tracking in QuickBooks, corrected classifications, shared definitions, and AI assistance for monthly reconciliation. The dashboard makes the results accessible; the supporting records let owners and the controller follow the explanation back to the books.

The real estate project reporting guide explains how to adapt these definitions to your accounts, entities, and project history.

Ome Dezin: an AI-assisted controller setup for real estate development | PipeLedger AI