{"product_id":"expansion-joint-owner-makes","title":"Expansion Joint Installation Owner Income: $19M Year 1 Model","description":"\u003cbr\u003e\u003cdiv class=\"container_new_design\"\u003e\n\u003cdiv class=\"text-section text-1_new_design\"\u003e\n\u003cdiv class=\"line_top\"\u003e\u003c\/div\u003e\n\u003cp\u003eYou’re pricing specialized construction work, so owner income depends on crew output, bid mix, and how much cash stays in the business In this five-year planning model, expansion joint installation revenue runs from \u003cstrong\u003e$36M in Year 1\u003c\/strong\u003e to \u003cstrong\u003e$189M in Year 5\u003c\/strong\u003e, with gross margin moving from \u003cstrong\u003e710% to 758%\u003c\/strong\u003e Figures are pre-tax planning estimates and exclude guaranteed draws, tax advice, debt service, and required retained cash\u003c\/p\u003e\n\n\n\u003c\/div\u003e\n\u003cdiv class=\"image-section image-1_new_design\" id=\"main_article_image\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\u003cbr\u003e\u003csection class=\"fml-owner-metric-cards\" aria-label=\"Expansion Joint Installation\"\u003e\u003cdiv class=\"metric-grid\"\u003e\n\u003carticle class=\"metric-card is-green\"\u003e\u003cspan class=\"metric-icon-tip\" tabindex=\"0\" data-tooltip=\"Year 1 EBITDA from the model; before taxes, debt service, reserves, and owner draws, so take-home can be lower.\"\u003e\u003cimg class=\"metric-icon\" src=\"\/cdn\/shop\/files\/fml-owner-income-kpi-owner-income.svg\" alt=\"Owner income icon\" loading=\"lazy\"\u003e\u003c\/span\u003e\u003cspan\u003eOwner income\u003c\/span\u003e\u003cstrong class=\"metric-value\" tabindex=\"0\" data-tooltip=\"Year 1 EBITDA from the model; before taxes, debt service, reserves, and owner draws, so take-home can be lower.\"\u003e$1.26M\u003c\/strong\u003e\u003c\/article\u003e\u003carticle class=\"metric-card\"\u003e\u003cspan class=\"metric-icon-tip\" tabindex=\"0\" data-tooltip=\"EBITDA margin uses model revenue and EBITDA for Year 1 and Year 5; it excludes taxes, financing, and retained cash.\"\u003e\u003cimg class=\"metric-icon\" src=\"\/cdn\/shop\/files\/fml-owner-income-kpi-net-margin.svg\" alt=\"Net margin icon\" loading=\"lazy\"\u003e\u003c\/span\u003e\u003cspan\u003eNet margin\u003c\/span\u003e\u003cstrong class=\"metric-value\" tabindex=\"0\" data-tooltip=\"EBITDA margin uses model revenue and EBITDA for Year 1 and Year 5; it excludes taxes, financing, and retained cash.\"\u003e44.5% to 64.9%\u003c\/strong\u003e\u003c\/article\u003e\u003carticle class=\"metric-card\"\u003e\u003cspan class=\"metric-icon-tip\" tabindex=\"0\" data-tooltip=\"Year 1 modeled revenue supports the opening-year owner income case; target pay is inferred, not separately set.\"\u003e\u003cimg class=\"metric-icon\" src=\"\/cdn\/shop\/files\/fml-owner-income-kpi-revenue-target.svg\" alt=\"Revenue for target pay icon\" loading=\"lazy\"\u003e\u003c\/span\u003e\u003cspan\u003eRevenue for target pay\u003c\/span\u003e\u003cstrong class=\"metric-value\" tabindex=\"0\" data-tooltip=\"Year 1 modeled revenue supports the opening-year owner income case; target pay is inferred, not separately set.\"\u003e$2.83M\u003c\/strong\u003e\u003c\/article\u003e\u003carticle class=\"metric-card\"\u003e\u003cspan class=\"metric-icon-tip\" tabindex=\"0\" data-tooltip=\"Capital-heavy build, $230k launch capex, $45k marketing, and $136.8k fixed overhead make execution tough.\"\u003e\u003cimg class=\"metric-icon\" src=\"\/cdn\/shop\/files\/fml-owner-income-kpi-business-difficulty.svg\" alt=\"Business difficulty icon\" loading=\"lazy\"\u003e\u003c\/span\u003e\u003cspan\u003eBusiness difficulty\u003c\/span\u003e\u003cstrong class=\"metric-value\" tabindex=\"0\" data-tooltip=\"Capital-heavy build, $230k launch capex, $45k marketing, and $136.8k fixed overhead make execution tough.\"\u003eHard\u003c\/strong\u003e\u003c\/article\u003e\n\u003c\/div\u003e\u003c\/section\u003e\u003cbr\u003e\u003ch2\u003e\u003cspan style=\"color: #126CFF;\"\u003eWant to test your owner pay target?\n\u003c\/span\u003e\u003c\/h2\u003e\n\u003csection class=\"fml-owner-calculator\" aria-label=\"Expansion Joint Installation Owner Income Calculator\" data-locale=\"en-US\" data-currency=\"USD\" data-default-scenario=\"base\" data-export-filename=\"Expansion Joint Installation Owner Income Calculator.xlsx\" data-source-site-name=\"Financial Models Lab\" data-source-site-url=\"https:\/\/financialmodelslab.com\" data-source-page-title=\"Expansion Joint Installation Owner Income Calculator\" data-note-title=\"Planning note:\" data-note-text=\"Research-based planning estimate only. Actual owner income depends on revenue, margins, payroll, reserves, taxes, and any financing. It is not guaranteed salary, tax advice, or owner distribution advice.\"\u003e\u003cdiv class=\"fml-owner-card\"\u003e\n\u003cheader class=\"fml-owner-header\"\u003e\u003cdiv class=\"fml-owner-heading\"\u003e\n\u003cp class=\"fml-owner-eyebrow\"\u003eOwner income calculator\u003c\/p\u003e\n\u003cp class=\"fml-owner-intro\"\u003eEstimate owner take-home and target-pay gap from revenue, margin, costs, reserves, and target pay.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fml-owner-scenarios\" aria-label=\"Income scenario presets\"\u003e\n\u003cbutton class=\"fml-owner-scenario\" type=\"button\" data-scenario=\"low\"\u003eLow\u003c\/button\u003e\u003cbutton class=\"fml-owner-scenario is-active\" type=\"button\" data-scenario=\"base\"\u003eBase\u003c\/button\u003e\u003cbutton class=\"fml-owner-scenario\" type=\"button\" data-scenario=\"high\"\u003eHigh\u003c\/button\u003e\n\u003c\/div\u003e\u003c\/header\u003e\u003cdiv class=\"fml-owner-layout\"\u003e\n\u003cform class=\"fml-owner-inputs\"\u003e\n\u003cdiv class=\"fml-owner-row\"\u003e\n\u003clabel class=\"fml-owner-label\"\u003e\u003cspan\u003eMonthly revenue\u003c\/span\u003e\u003cspan class=\"fml-owner-tooltip\" tabindex=\"0\" aria-label=\"Average monthly sales before expenses. Use a normal operating month, not a one-time peak.\"\u003ei\u003cspan role=\"tooltip\"\u003eAverage monthly sales before expenses. Use a normal operating month, not a one-time peak.\u003c\/span\u003e\u003c\/span\u003e\u003c\/label\u003e\u003cdiv class=\"fml-owner-money\"\u003e\n\u003cspan\u003e$\u003c\/span\u003e\u003cinput data-owner-field=\"monthlyRevenue\" data-owner-kind=\"money\" data-owner-label=\"Monthly revenue\" data-owner-note=\"Average monthly sales before expenses. Use a normal operating month, not a one-time peak.\" data-low=\"235833\" data-base=\"788917\" data-high=\"1667167\" name=\"monthlyRevenue\" type=\"text\" inputmode=\"numeric\" value=\"788,917\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fml-owner-row\"\u003e\n\u003clabel class=\"fml-owner-label\"\u003e\u003cspan\u003eGross margin\u003c\/span\u003e\u003cspan class=\"fml-owner-tooltip\" tabindex=\"0\" aria-label=\"Percent of revenue left after direct materials, sealants, logistics, and other direct job costs.\"\u003ei\u003cspan role=\"tooltip\"\u003ePercent of revenue left after direct materials, sealants, logistics, and other direct job costs.\u003c\/span\u003e\u003c\/span\u003e\u003c\/label\u003e\u003cdiv class=\"fml-owner-percent\"\u003e\n\u003cinput data-owner-field=\"grossMargin\" data-owner-kind=\"percent\" data-owner-label=\"Gross margin\" data-owner-note=\"Percent of revenue left after direct materials, sealants, logistics, and other direct job costs.\" name=\"grossMargin\" type=\"range\" min=\"0\" max=\"100\" step=\"1\" data-low=\"71\" data-base=\"73\" data-high=\"76\" value=\"73\"\u003e\u003coutput\u003e73%\u003c\/output\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fml-owner-row\"\u003e\n\u003clabel class=\"fml-owner-label\"\u003e\u003cspan\u003eLabor cost\u003c\/span\u003e\u003cspan class=\"fml-owner-tooltip\" tabindex=\"0\" aria-label=\"Monthly payroll and contractor cost before owner pay.\"\u003ei\u003cspan role=\"tooltip\"\u003eMonthly payroll and contractor cost before owner pay.\u003c\/span\u003e\u003c\/span\u003e\u003c\/label\u003e\u003cdiv class=\"fml-owner-money\"\u003e\n\u003cspan\u003e$\u003c\/span\u003e\u003cinput data-owner-field=\"laborCost\" data-owner-kind=\"money\" data-owner-label=\"Labor cost\" data-owner-note=\"Monthly payroll and contractor cost before owner pay.\" data-low=\"40917\" data-base=\"86583\" data-high=\"122667\" name=\"laborCost\" type=\"text\" inputmode=\"numeric\" value=\"86,583\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fml-owner-row\"\u003e\n\u003clabel class=\"fml-owner-label\"\u003e\u003cspan\u003eFixed overhead\u003c\/span\u003e\u003cspan class=\"fml-owner-tooltip\" tabindex=\"0\" aria-label=\"Rent, insurance, software, dues, utilities, and other recurring overhead.\"\u003ei\u003cspan role=\"tooltip\"\u003eRent, insurance, software, dues, utilities, and other recurring overhead.\u003c\/span\u003e\u003c\/span\u003e\u003c\/label\u003e\u003cdiv class=\"fml-owner-money\"\u003e\n\u003cspan\u003e$\u003c\/span\u003e\u003cinput data-owner-field=\"fixedOverhead\" data-owner-kind=\"money\" data-owner-label=\"Fixed overhead\" data-owner-note=\"Rent, insurance, software, dues, utilities, and other recurring overhead.\" data-low=\"11400\" data-base=\"11400\" data-high=\"11400\" name=\"fixedOverhead\" type=\"text\" inputmode=\"numeric\" value=\"11,400\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fml-owner-row\"\u003e\n\u003clabel class=\"fml-owner-label\"\u003e\u003cspan\u003eMarketing\u003c\/span\u003e\u003cspan class=\"fml-owner-tooltip\" tabindex=\"0\" aria-label=\"Monthly marketing and customer acquisition spend.\"\u003ei\u003cspan role=\"tooltip\"\u003eMonthly marketing and customer acquisition spend.\u003c\/span\u003e\u003c\/span\u003e\u003c\/label\u003e\u003cdiv class=\"fml-owner-money\"\u003e\n\u003cspan\u003e$\u003c\/span\u003e\u003cinput data-owner-field=\"marketing\" data-owner-kind=\"money\" data-owner-label=\"Marketing\" data-owner-note=\"Monthly marketing and customer acquisition spend.\" data-low=\"3750\" data-base=\"7083\" data-high=\"10417\" name=\"marketing\" type=\"text\" inputmode=\"numeric\" value=\"7,083\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fml-owner-row\"\u003e\n\u003clabel class=\"fml-owner-label\"\u003e\u003cspan\u003eDebt service\u003c\/span\u003e\u003cspan class=\"fml-owner-tooltip\" tabindex=\"0\" aria-label=\"Monthly loan or required financing payment. Use 0 if there is no debt.\"\u003ei\u003cspan role=\"tooltip\"\u003eMonthly loan or required financing payment. Use 0 if there is no debt.\u003c\/span\u003e\u003c\/span\u003e\u003c\/label\u003e\u003cdiv class=\"fml-owner-money\"\u003e\n\u003cspan\u003e$\u003c\/span\u003e\u003cinput data-owner-field=\"debtService\" data-owner-kind=\"money\" data-owner-label=\"Debt service\" data-owner-note=\"Monthly loan or required financing payment. Use 0 if there is no debt.\" data-low=\"0\" data-base=\"0\" data-high=\"0\" name=\"debtService\" type=\"text\" inputmode=\"numeric\" value=\"\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fml-owner-row\"\u003e\n\u003clabel class=\"fml-owner-label\"\u003e\u003cspan\u003eTax reserve\u003c\/span\u003e\u003cspan class=\"fml-owner-tooltip\" tabindex=\"0\" aria-label=\"Percent of profit set aside for taxes before owner take-home.\"\u003ei\u003cspan role=\"tooltip\"\u003ePercent of profit set aside for taxes before owner take-home.\u003c\/span\u003e\u003c\/span\u003e\u003c\/label\u003e\u003cdiv class=\"fml-owner-percent\"\u003e\n\u003cinput data-owner-field=\"taxReserve\" data-owner-kind=\"percent\" data-owner-label=\"Tax reserve\" data-owner-note=\"Percent of profit set aside for taxes before owner take-home.\" name=\"taxReserve\" type=\"range\" min=\"0\" max=\"45\" step=\"1\" data-low=\"20\" data-base=\"22\" data-high=\"25\" value=\"22\"\u003e\u003coutput\u003e22%\u003c\/output\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fml-owner-row\"\u003e\n\u003clabel class=\"fml-owner-label\"\u003e\u003cspan\u003eReinvestment reserve\u003c\/span\u003e\u003cspan class=\"fml-owner-tooltip\" tabindex=\"0\" aria-label=\"Percent of profit kept for repairs, growth, working capital, and risk buffer.\"\u003ei\u003cspan role=\"tooltip\"\u003ePercent of profit kept for repairs, growth, working capital, and risk buffer.\u003c\/span\u003e\u003c\/span\u003e\u003c\/label\u003e\u003cdiv class=\"fml-owner-percent\"\u003e\n\u003cinput data-owner-field=\"reinvestmentReserve\" data-owner-kind=\"percent\" data-owner-label=\"Reinvestment reserve\" data-owner-note=\"Percent of profit kept for repairs, growth, working capital, and risk buffer.\" name=\"reinvestmentReserve\" type=\"range\" min=\"0\" max=\"35\" step=\"1\" data-low=\"10\" data-base=\"12\" data-high=\"15\" value=\"12\"\u003e\u003coutput\u003e12%\u003c\/output\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fml-owner-row\"\u003e\n\u003clabel class=\"fml-owner-label\"\u003e\u003cspan\u003eTarget owner pay\u003c\/span\u003e\u003cspan class=\"fml-owner-tooltip\" tabindex=\"0\" aria-label=\"Monthly owner income target used to measure the target-pay gap.\"\u003ei\u003cspan role=\"tooltip\"\u003eMonthly owner income target used to measure the target-pay gap.\u003c\/span\u003e\u003c\/span\u003e\u003c\/label\u003e\u003cdiv class=\"fml-owner-money\"\u003e\n\u003cspan\u003e$\u003c\/span\u003e\u003cinput data-owner-field=\"targetOwnerPay\" data-owner-kind=\"money\" data-owner-label=\"Target owner pay\" data-owner-note=\"Monthly owner income target used to measure the target-pay gap.\" data-low=\"8000\" data-base=\"15000\" data-high=\"25000\" name=\"targetOwnerPay\" type=\"text\" inputmode=\"numeric\" value=\"15,000\"\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/form\u003e\n\u003caside class=\"fml-owner-results\" aria-live=\"polite\"\u003e\u003cspan class=\"fml-owner-tag\"\u003eOwner income output\u003c\/span\u003e\u003cdiv class=\"fml-owner-metrics\"\u003e\n\u003cdiv class=\"fml-owner-metric is-primary\"\u003e\n\u003cspan class=\"fml-owner-metric-label\"\u003eOwner Income\u003cspan class=\"fml-owner-tooltip\" tabindex=\"0\" aria-label=\"Monthly take-home after tax and reinvestment reserves.\"\u003ei\u003cspan role=\"tooltip\"\u003eMonthly take-home after tax and reinvestment reserves.\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cstrong data-owner-output=\"monthlyOwnerIncome\"\u003e$311K\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fml-owner-metric\"\u003e\n\u003cspan class=\"fml-owner-metric-label\"\u003eNet Margin\u003cspan class=\"fml-owner-tooltip\" tabindex=\"0\" aria-label=\"Owner income divided by monthly revenue.\"\u003ei\u003cspan role=\"tooltip\"\u003eOwner income divided by monthly revenue.\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cstrong data-owner-output=\"netProfitMargin\"\u003e39%\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fml-owner-metric\"\u003e\n\u003cspan class=\"fml-owner-metric-label\"\u003eRevenue for Target Pay\u003cspan class=\"fml-owner-tooltip\" tabindex=\"0\" aria-label=\"Monthly revenue needed to support the target owner pay.\"\u003ei\u003cspan role=\"tooltip\"\u003eMonthly revenue needed to support the target owner pay.\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cstrong data-owner-output=\"revenueNeeded\"\u003e$175K\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fml-owner-metric is-target-gap is-positive\"\u003e\n\u003cspan class=\"fml-owner-metric-label\"\u003eTarget Pay Gap\u003cspan class=\"fml-owner-tooltip\" tabindex=\"0\" aria-label=\"Owner income minus target owner pay. Negative means the target pay is not covered.\"\u003ei\u003cspan role=\"tooltip\"\u003eOwner income minus target owner pay. Negative means the target pay is not covered.\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003cstrong data-owner-output=\"targetPayGap\"\u003e$296K\u003c\/strong\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdl class=\"fml-owner-result-list\"\u003e\n\u003cdiv\u003e\n\u003cdt\u003eAnnual owner income\u003c\/dt\u003e\n\u003cdd data-owner-output=\"annualOwnerIncome\"\u003e$3,729,077\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdt\u003eProfit before reserves\u003c\/dt\u003e\n\u003cdd data-owner-output=\"profitBeforeReserves\"\u003e$470,843\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdt\u003eTax + reinvestment reserve\u003c\/dt\u003e\n\u003cdd data-owner-output=\"reserveAmount\"\u003e$160,087\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdt\u003eTarget pay gap\u003c\/dt\u003e\n\u003cdd data-owner-output=\"cashAfterTargetPay\"\u003e$295,756\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003c\/dl\u003e\n\u003cdiv class=\"fml-owner-bridge\"\u003e\n\u003cdiv class=\"fml-owner-bar-row\" data-owner-bridge=\"revenue\"\u003e\n\u003cspan\u003eRevenue\u003c\/span\u003e\u003cdiv\u003e\u003ci style=\"--fml-owner-share: 100%;\"\u003e\u003c\/i\u003e\u003c\/div\u003e\n\u003cb data-owner-bridge-value\u003e$789K\u003c\/b\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fml-owner-bar-row\" data-owner-bridge=\"grossProfit\"\u003e\n\u003cspan\u003eGross profit\u003c\/span\u003e\u003cdiv\u003e\u003ci style=\"--fml-owner-share: 73%;\"\u003e\u003c\/i\u003e\u003c\/div\u003e\n\u003cb data-owner-bridge-value\u003e$576K\u003c\/b\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fml-owner-bar-row\" data-owner-bridge=\"operatingCosts\"\u003e\n\u003cspan\u003eOperating costs\u003c\/span\u003e\u003cdiv\u003e\u003ci style=\"--fml-owner-share: 13%;\"\u003e\u003c\/i\u003e\u003c\/div\u003e\n\u003cb data-owner-bridge-value\u003e$105K\u003c\/b\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fml-owner-bar-row\" data-owner-bridge=\"reserveAmount\"\u003e\n\u003cspan\u003eReserves\u003c\/span\u003e\u003cdiv\u003e\u003ci style=\"--fml-owner-share: 20%;\"\u003e\u003c\/i\u003e\u003c\/div\u003e\n\u003cb data-owner-bridge-value\u003e$160K\u003c\/b\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fml-owner-bar-row\" data-owner-bridge=\"ownerIncome\"\u003e\n\u003cspan\u003eOwner income\u003c\/span\u003e\u003cdiv\u003e\u003ci style=\"--fml-owner-share: 39%;\"\u003e\u003c\/i\u003e\u003c\/div\u003e\n\u003cb data-owner-bridge-value\u003e$311K\u003c\/b\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cbutton class=\"fml-owner-export\" type=\"button\" data-owner-export\u003eEXPORT XLSX\u003c\/button\u003e\u003c\/aside\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fml-owner-note\"\u003e\n\u003cspan class=\"fml-owner-note-icon\" aria-hidden=\"true\"\u003e!\u003c\/span\u003e\u003cp\u003e\u003cstrong\u003ePlanning note:\u003c\/strong\u003e Research-based planning estimate only. Actual owner income depends on revenue, margins, payroll, reserves, taxes, and any financing. It is not guaranteed salary, tax advice, or owner distribution advice.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\u003cbr\u003e\u003cdiv class=\"container_new_design_blog\"\u003e\n\n\u003cdiv class=\"text-section_blog text-2_new_design_blog\"\u003e\n\n\u003cdiv class=\"line_top_blog\"\u003e\u003cbr\u003e\u003c\/div\u003e\n\n\u003ch3\u003e\u003cspan style=\"color: #126CFF;\"\u003eWant to see the forecast behind the income?\u003c\/span\u003e\u003c\/h3\u003e\n\n\u003cp\u003eThe dashboard in the \u003ca href=\"\/products\/expansion-joint-financial-model\"\u003eExpansion Joint Installation Financial Model Template\u003c\/a\u003e shows revenue assumptions, crew capacity, margins, overhead, reserves, scenarios, and owner income, with \u003cstrong\u003eYear 1 revenue at $36M\u003c\/strong\u003e and \u003cstrong\u003eYear 5 at $189M\u003c\/strong\u003e. Open the model to check the math.\u003c\/p\u003e\n\n\u003ch4\u003eOwner-income model highlights\u003c\/h4\u003e\n\u003cul class=\"lst_crct_blog\"\u003e\n\u003cli\u003eRevenue grows $36M to $189M\u003c\/li\u003e\n\u003cli\u003eGross margin shows 710% to 758%\u003c\/li\u003e\n\u003cli\u003ePayroll ramps $491k to $147M\u003c\/li\u003e\n\u003cli\u003eMarketing rises $45k to $125k\u003c\/li\u003e\n\u003cli\u003eCapex includes $85k rig, $145k trucks\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003c\/div\u003e\n\n\u003cdiv class=\"image-section_blog image-2_new_design_blog\"\u003e\n\n\u003cdiv class=\"preview-card\" data-preview-src=\"\/cdn\/shop\/files\/expansion-joint-financial-model-dashboard-financialmodelslab_9790a120-3b19-4187-b4a1-6112c30de57d.webp\"\u003e\n\u003cimg class=\"preview-img\" width=\"100%\" height=\"auto\" src=\"\/cdn\/shop\/files\/expansion-joint-financial-model-dashboard-financialmodelslab_9790a120-3b19-4187-b4a1-6112c30de57d.webp?width=500\" alt=\"Expansion Joint Installation Financial Model dashboard summarizing KPIs, runway\/cash and performance with a dynamic dashboard, highlighting cash-flow visibility and investor-ready charts.\"\u003e\n\u003cdiv class=\"preview-overlay\"\u003e\n\u003cbutton class=\"preview-btn\" type=\"button\" style=\"align-items: center; vertical-align: middle; display: inline-flex; justify-content: center; gap: 6px; line-height: 1;\"\u003e\nPREVIEW \u003csvg fill=\"#fff\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" aria-hidden=\"true\" focusable=\"false\" role=\"presentation\" viewbox=\"0 0 448 512\" width=\"14\"\u003e\u003cpath d=\"M416 176V86.63L246.6 256L416 425.4V336c0-8.844 7.156-16 16-16s16 7.156 16 16v128c0 8.844-7.156 16-16 16h-128c-8.844 0-16-7.156-16-16s7.156-16 16-16h89.38L224 278.6L54.63 448H144C152.8 448 160 455.2 160 464S152.8 480 144 480h-128C7.156 480 0 472.8 0 464v-128C0 327.2 7.156 320 16 320S32 327.2 32 336v89.38L201.4 256L32 86.63V176C32 184.8 24.84 192 16 192S0 184.8 0 176v-128C0 39.16 7.156 32 16 32h128C152.8 32 160 39.16 160 48S152.8 64 144 64H54.63L224 233.4L393.4 64H304C295.2 64 288 56.84 288 48S295.2 32 304 32h128C440.8 32 448 39.16 448 48v128C448 184.8 440.8 192 432 192S416 184.8 416 176z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n\u003c\/button\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003c\/div\u003e\n\u003c\/div\u003e\n\n\u003ch2\u003e\u003cspan style=\"color: #126CFF;\"\u003eHow much can an expansion joint installation business owner take home?\u003c\/span\u003e\u003c\/h2\u003e\u003cbr\u003e\n\u003cp\u003eAn \u003cstrong\u003eExpansion Joint Installation\u003c\/strong\u003e owner should treat operating profit as the starting point, not take-home pay. In the researched model, operating profit is \u003cstrong\u003e$19M in Year 1\u003c\/strong\u003e, about \u003cstrong\u003e$54M in Year 3\u003c\/strong\u003e on \u003cstrong\u003e$91M revenue\u003c\/strong\u003e, and about \u003cstrong\u003e$126M in Year 5\u003c\/strong\u003e on \u003cstrong\u003e$189M revenue\u003c\/strong\u003e, before taxes, debt service, reserves, and owner distributions; startup cost context matters here: \u003ca href=\"\/blogs\/startup-costs\/expansion-joint\"\u003eHow Much To Open Expansion Joint Installation Business?\u003c\/a\u003e\u003c\/p\u003e\n\u003cdiv class=\"container_2_clmn_row\"\u003e\n\u003cdiv class=\"card_smpl blue_card\"\u003e\n\u003cdiv class=\"card_smpl_header\"\u003e\n\u003cimg src=\"\/cdn\/shop\/files\/fml_20_fml-Orange-blog-colons-icon.svg\" alt=\"Icon\" class=\"icon_how_to_use\"\u003e\u003ch3\u003eProfit first\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003cul class=\"lst_crct_blog\"\u003e\n\u003cli\u003e\n\u003cstrong\u003eYear 1:\u003c\/strong\u003e $19M operating profit\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eYear 3:\u003c\/strong\u003e $54M on $91M revenue\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eYear 3 margin:\u003c\/strong\u003e about 59%\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eYear 5 margin:\u003c\/strong\u003e about 67%\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"card_smpl\"\u003e\n\u003cdiv class=\"card_smpl_header\"\u003e\n\u003cimg src=\"\/cdn\/shop\/files\/fml_20_fml-Orange-blog-intro-icon.svg\" alt=\"Icon\" class=\"icon_how_to_use\"\u003e\u003ch3\u003eTake-home limits\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003cul class=\"lst_crct_blog\"\u003e\n\u003cli\u003ePay taxes before distributions\u003c\/li\u003e\n\u003cli\u003eCover debt service first\u003c\/li\u003e\n\u003cli\u003eHold reserves for callbacks\u003c\/li\u003e\n\u003cli\u003eDon’t treat revenue as income\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003cbr\u003e\u003ch2\u003e\u003cspan style=\"color: #126CFF;\"\u003eHow much revenue does an expansion joint business need to pay the owner?\u003c\/span\u003e\u003c\/h2\u003e\u003cbr\u003e\n\u003cp\u003eIt can’t be pinned to one exact revenue number from the prompt alone, because owner pay depends on \u003cstrong\u003egross margin\u003c\/strong\u003e, overhead, payroll, marketing, and reserves. For \u003cstrong\u003eExpansion Joint Installation\u003c\/strong\u003e, the Year 1 fixed load is \u003cstrong\u003e$491k\u003c\/strong\u003e payroll + \u003cstrong\u003e$1,368k\u003c\/strong\u003e overhead + \u003cstrong\u003e$45k\u003c\/strong\u003e marketing = \u003cstrong\u003e$6,728k\u003c\/strong\u003e before owner pay, so the owner draw sits on top of that base; using the stated \u003cstrong\u003e710%\u003c\/strong\u003e gross margin input, each \u003cstrong\u003e$1M\u003c\/strong\u003e of revenue creates about \u003cstrong\u003e$710k\u003c\/strong\u003e gross profit before overhead.\u003c\/p\u003e\n\u003cdiv class=\"container_2_clmn_row\"\u003e\n\u003cdiv class=\"card_smpl\"\u003e\n\u003cdiv class=\"card_smpl_header\"\u003e\n\u003cimg src=\"\/cdn\/shop\/files\/fml_20_fml-Orange-blog-intro-icon.svg\" alt=\"Icon\" class=\"icon_how_to_use\"\u003e\u003ch3\u003eRevenue rule\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003cul class=\"lst_crct_blog\"\u003e\n\u003cli\u003e\n\u003cstrong\u003eRevenue\u003c\/strong\u003e covers fixed costs first\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOwner pay\u003c\/strong\u003e comes after that\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eReserves\u003c\/strong\u003e still need cash\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eGross margin\u003c\/strong\u003e sets the target\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"card_smpl blue_card\"\u003e\n\u003cdiv class=\"card_smpl_header\"\u003e\n\u003cimg src=\"\/cdn\/shop\/files\/fml_20_fml-Orange-blog-colons-icon.svg\" alt=\"Icon\" class=\"icon_how_to_use\"\u003e\u003ch3\u003eYear 1 load\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003cul class=\"lst_crct_blog\"\u003e\n\u003cli\u003e\n\u003cstrong\u003e$491k\u003c\/strong\u003e payroll\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e$1,368k\u003c\/strong\u003e overhead\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003e$45k\u003c\/strong\u003e marketing\u003c\/li\u003e\n\u003cli\u003e\n\u003cstrong\u003eOwner salary\u003c\/strong\u003e is a planning target\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003cbr\u003e\u003ch2\u003e\u003cspan style=\"color: #126CFF;\"\u003eCan an expansion joint installation business scale profitably?\u003c\/span\u003e\u003c\/h2\u003e\u003cbr\u003e\n\u003cp\u003eYes, \u003cstrong\u003eExpansion Joint Installation\u003c\/strong\u003e can scale profitably, but the bigger the book of work, the more cash and overhead it needs. Here’s the quick math: as acquired customers rise from \u003cstrong\u003e30\u003c\/strong\u003e to about \u003cstrong\u003e114\u003c\/strong\u003e per year and monthly billable hours per active customer rise from \u003cstrong\u003e45\u003c\/strong\u003e to \u003cstrong\u003e60\u003c\/strong\u003e, revenue grows from \u003cstrong\u003e$36M\u003c\/strong\u003e to \u003cstrong\u003e$189M\u003c\/strong\u003e. \u003cstrong\u003eScale adds cost\u003c\/strong\u003e, too, with payroll moving from \u003cstrong\u003e$491k\u003c\/strong\u003e to \u003cstrong\u003e$147M\u003c\/strong\u003e, marketing from \u003cstrong\u003e$45k\u003c\/strong\u003e to \u003cstrong\u003e$125k\u003c\/strong\u003e, and launch capex already including \u003cstrong\u003e$230k\u003c\/strong\u003e for rig and trucks.\u003c\/p\u003e\n\u003cdiv class=\"container_2_clmn_row\"\u003e\n\u003cdiv class=\"card_smpl\"\u003e\n\u003cdiv class=\"card_smpl_header\"\u003e\n\u003cimg src=\"\/cdn\/shop\/files\/fml_20_fml-Orange-blog-intro-icon.svg\" alt=\"Icon\" class=\"icon_how_to_use\"\u003e\u003ch3\u003eRevenue scale\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003cul class=\"lst_crct_blog\"\u003e\n\u003cli\u003eRevenue rises to \u003cstrong\u003e$189M\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eCustomers reach about \u003cstrong\u003e114\u003c\/strong\u003e yearly\u003c\/li\u003e\n\u003cli\u003eHours per customer hit \u003cstrong\u003e60\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eGrowth depends on billable density\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"card_smpl blue_card\"\u003e\n\u003cdiv class=\"card_smpl_header\"\u003e\n\u003cimg src=\"\/cdn\/shop\/files\/fml_20_fml-Orange-blog-colons-icon.svg\" alt=\"Icon\" class=\"icon_how_to_use\"\u003e\u003ch3\u003eCost pressure\u003c\/h3\u003e\n\u003c\/div\u003e\n\u003cul class=\"lst_crct_blog\"\u003e\n\u003cli\u003ePayroll climbs to \u003cstrong\u003e$147M\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eMarketing rises to \u003cstrong\u003e$125k\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eRig and trucks need \u003cstrong\u003e$230k\u003c\/strong\u003e\n\u003c\/li\u003e\n\u003cli\u003eMore supervisors and bonding are needed\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\n\n\u003ch2\u003e\u003cspan style=\"color: #126CFF;\"\u003eWant the six income drivers that matter most?\n\u003c\/span\u003e\u003c\/h2\u003e\n\u003csection class=\"fml-main-income-drivers\" aria-label=\"Accessible label for the Main Income Drivers card grid.\"\u003e\u003carticle class=\"driver-option is-cards\"\u003e\u003cdiv class=\"main-driver-grid\"\u003e\n\u003carticle class=\"main-driver-card is-primary\"\u003e\u003cdiv class=\"main-driver-heading\"\u003e\n\u003cspan class=\"driver-rank\"\u003e1\u003c\/span\u003e\u003ch4\u003eProject Mix\u003c\/h4\u003e\n\u003c\/div\u003e\n\u003cstrong\u003e$1.2K-$22.2K\u003c\/strong\u003e\u003cp\u003eHigher-share install and retrofit work lifts revenue per active customer because those jobs carry much larger ticket sizes than maintenance or emergency fixes.\u003c\/p\u003e\u003c\/article\u003e\u003carticle class=\"main-driver-card\"\u003e\u003cdiv class=\"main-driver-heading\"\u003e\n\u003cspan class=\"driver-rank\"\u003e2\u003c\/span\u003e\u003ch4\u003eCrew Utilization\u003c\/h4\u003e\n\u003c\/div\u003e\n\u003cstrong\u003e45-60h\/mo\u003c\/strong\u003e\u003cp\u003eMore billable hours per active customer push top-line revenue without adding fixed overhead at the same pace.\u003c\/p\u003e\u003c\/article\u003e\u003carticle class=\"main-driver-card\"\u003e\u003cdiv class=\"main-driver-heading\"\u003e\n\u003cspan class=\"driver-rank\"\u003e3\u003c\/span\u003e\u003ch4\u003eBid Margin\u003c\/h4\u003e\n\u003c\/div\u003e\n\u003cstrong\u003e71%-76%\u003c\/strong\u003e\u003cp\u003eHolding contribution margin in this range keeps more of each sales dollar after materials, logistics, and subcontractor fees.\u003c\/p\u003e\u003c\/article\u003e\u003carticle class=\"main-driver-card\"\u003e\u003cdiv class=\"main-driver-heading\"\u003e\n\u003cspan class=\"driver-rank\"\u003e4\u003c\/span\u003e\u003ch4\u003eMaterial Cost\u003c\/h4\u003e\n\u003c\/div\u003e\n\u003cstrong\u003e19.5%-22.5%\u003c\/strong\u003e\u003cp\u003eTighter control of joint materials, sealants, and adhesives protects gross profit on every job.\u003c\/p\u003e\u003c\/article\u003e\u003carticle class=\"main-driver-card\"\u003e\u003cdiv class=\"main-driver-heading\"\u003e\n\u003cspan class=\"driver-rank\"\u003e5\u003c\/span\u003e\u003ch4\u003eOverhead Load\u003c\/h4\u003e\n\u003c\/div\u003e\n\u003cstrong\u003e$136.8K\u003c\/strong\u003e\u003cp\u003eFixed rent, insurance, tools, software, dues, and utilities set the cash burn floor, so lean overhead lifts owner take-home fast.\u003c\/p\u003e\u003c\/article\u003e\u003carticle class=\"main-driver-card\"\u003e\u003cdiv class=\"main-driver-heading\"\u003e\n\u003cspan class=\"driver-rank\"\u003e6\u003c\/span\u003e\u003ch4\u003eCash Reserve\u003c\/h4\u003e\n\u003c\/div\u003e\n\u003cstrong\u003e$629K\u003c\/strong\u003e\u003cp\u003eFewer rework and warranty hits keep reserves intact while cash bottoms at $629K in Month 4 and payback lands in 9 months.\u003c\/p\u003e\u003c\/article\u003e\n\u003c\/div\u003e\u003c\/article\u003e\u003c\/section\u003e\u003cbr\u003e\u003ch2\u003e\u003cspan style=\"color: #126CFF;\"\u003eExpansion Joint Installation Core Six Income Drivers\u003c\/span\u003e\u003c\/h2\u003e\u003cbr\u003e\u003cbr\u003e\n\u003ch3\u003e\u003cspan style=\"color: #126CFF;\"\u003eProject Mix And Contract Size\u003c\/span\u003e\u003c\/h3\u003e\u003cbr\u003e\n\u003cdiv class=\"container_new_design_timeline\"\u003e\n\u003cdiv class=\"left-row1\"\u003e\n\u003ch3\u003eProject Mix and Contract Size\u003c\/h3\u003e\n\u003cp\u003eWhen your backlog leans to \u003cstrong\u003ecommercial\u003c\/strong\u003e, \u003cstrong\u003eparking structure\u003c\/strong\u003e, \u003cstrong\u003ebridge\u003c\/strong\u003e, and \u003cstrong\u003eroadway\u003c\/strong\u003e work, each mobilization can earn more than small repair calls. Year 1 project economics are \u003cstrong\u003e$222k\u003c\/strong\u003e new installation, \u003cstrong\u003e$168k\u003c\/strong\u003e retrofit, \u003cstrong\u003e$84k\u003c\/strong\u003e emergency repair, and \u003cstrong\u003e$12k\u003c\/strong\u003e maintenance plan, so mix changes \u003cstrong\u003eaverage ticket\u003c\/strong\u003e and the owner’s income per job.\u003c\/p\u003e\n\u003cp\u003eThe catch is cash timing. Bigger contracts can bring more revenue, but they can also need more bonding, face tougher bid competition, and collect slower. A high-value job only helps take-home income if it does not tie up too much working capital before payment lands.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"right-row1\"\u003e\n\u003cdiv class=\"tips-box\"\u003e\n\u003ch3\u003eTrack ticket size and cash speed\u003c\/h3\u003e\n\u003cp\u003eMeasure \u003cstrong\u003eaverage contract size\u003c\/strong\u003e, \u003cstrong\u003ehours per job\u003c\/strong\u003e, and \u003cstrong\u003edays to cash\u003c\/strong\u003e by project type. Split bids into new install, retrofit, emergency repair, and maintenance so you can see which work gives the best revenue per mobilization and which work burns time on setup, traffic control, or approvals.\u003c\/p\u003e\n\u003cp\u003eUse smaller repair calls to fill gaps, but push planned maintenance and larger jobs when the payment terms are clean. Watch \u003cstrong\u003ebonding needs\u003c\/strong\u003e, \u003cstrong\u003ebid hit rate\u003c\/strong\u003e, and collection timing before you chase bigger tickets, because delayed cash can cut owner pay even when booked revenue looks strong.\u003c\/p\u003e\n\u003cul class=\"lst_crct_blog\"\u003e\n\u003cli\u003e\u003cstrong\u003eTrack average ticket by job type\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eCompare mobilization per dollar\u003c\/strong\u003e\u003c\/li\u003e\n\u003cli\u003e\u003cstrong\u003eWatch cash timing on large bids\u003c\/strong\u003e\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"timeline\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"step-circle step1\"\u003e1\u003c\/div\u003e\n\u003c\/div\u003e\u003cbr\u003e\u003cbr\u003e\u003ch3\u003e\u003cspan style=\"color: #126CFF;\"\u003eCrew Utilization And Productivity\u003c\/span\u003e\u003c\/h3\u003e\u003cbr\u003e\n\u003cdiv class=\"container_new_design_timeline\"\u003e\n  \u003cdiv class=\"right-row2\"\u003e\n    \u003ch3\u003eCrew Billable Hours\u003c\/h3\u003e\n    \u003cp\u003eOwner income rises when crews are installing, not waiting. Here’s the quick math: \u003cstrong\u003e45 billable hours\u003c\/strong\u003e per active customer in Year 1 and \u003cstrong\u003e60 hours\u003c\/strong\u003e by Year 5. At \u003cstrong\u003e$185\/hour\u003c\/strong\u003e, that is \u003cstrong\u003e$8,325\u003c\/strong\u003e per active customer per month in Year 1; at \u003cstrong\u003e$215\/hour\u003c\/strong\u003e, it is \u003cstrong\u003e$12,900\u003c\/strong\u003e.\u003c\/p\u003e\n    \u003cp\u003eWhat this estimate hides: site access, weather, materials, traffic control, and change approvals can cut billable hours while payroll still runs. A \u003cstrong\u003e10-hour\u003c\/strong\u003e loss at \u003cstrong\u003e$185\/hour\u003c\/strong\u003e removes \u003cstrong\u003e$1,850\u003c\/strong\u003e of revenue before overhead and owner pay. \u003cstrong\u003e8-hour\u003c\/strong\u003e maintenance calls help fill gaps, but \u003cstrong\u003e135-hour\u003c\/strong\u003e new installs carry the biggest revenue blocks.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"left-row2\"\u003e\n    \u003cdiv class=\"tips-box\"\u003e\n      \u003ch3\u003eProtect Billable Time\u003c\/h3\u003e\n      \u003cp\u003eTrack \u003cstrong\u003ebillable utilization\u003c\/strong\u003e = billed hours ÷ paid crew hours, plus idle time by job. Watch active customers, scheduled hours, and delay causes. The goal is simple: get crews from site arrival to install faster, because every hour waiting lowers gross profit and adds owner follow-up.\u003c\/p\u003e\n      \u003cul class=\"lst_crct_blog\"\u003e\n        \u003cli\u003eConfirm access before dispatch.\u003c\/li\u003e\n        \u003cli\u003eStage materials and traffic control.\u003c\/li\u003e\n        \u003cli\u003eLog delay minutes by cause.\u003c\/li\u003e\n      \u003c\/ul\u003e\n      \u003cp\u003eUse maintenance jobs to fill short gaps, but keep new installs moving. Forecast weekly revenue from active customers × billable hours × rate, then compare it with payroll. If missed schedules stay common, the owner loses twice: less billed work and more management time, which cuts take-home cash.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"timeline\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"step-circle step2\"\u003e2\u003c\/div\u003e\n\u003c\/div\u003e\u003cbr\u003e\u003cbr\u003e\u003ch3\u003e\u003cspan style=\"color: #126CFF;\"\u003eBid Pricing And Margin Discipline\u003c\/span\u003e\u003c\/h3\u003e\u003cbr\u003e\n\u003cdiv class=\"container_new_design_timeline\"\u003e\n  \u003cdiv class=\"left-row3\"\u003e\n    \u003ch3\u003eBid Pricing Discipline\u003c\/h3\u003e\n    \u003cp\u003ePricing has to cover \u003cstrong\u003elabor, materials, mobilization, prep, traffic control, insurance, overhead, and profit\u003c\/strong\u003e. If it doesn’t, the job can look busy while the owner still takes home less. Year 1 hourly rates are \u003cstrong\u003e$185\u003c\/strong\u003e for new installation, \u003cstrong\u003e$210\u003c\/strong\u003e for retrofit, \u003cstrong\u003e$150\u003c\/strong\u003e for maintenance, and \u003cstrong\u003e$350\u003c\/strong\u003e for emergency repair.\u003c\/p\u003e\n    \u003cp\u003eBy Year 5, rates rise to \u003cstrong\u003e$215\u003c\/strong\u003e, \u003cstrong\u003e$245\u003c\/strong\u003e, \u003cstrong\u003e$175\u003c\/strong\u003e, and \u003cstrong\u003e$420\u003c\/strong\u003e. The risk is scope creep: saw cutting, grinding, disposal, and night work can wipe out margin if they are not priced in. One missed add-on can turn a profitable bid into break-even work.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"right-row3\"\u003e\n    \u003cdiv class=\"tips-box\"\u003e\n      \u003ch3\u003ePrice the Extra Work Up Front\u003c\/h3\u003e\n      \u003cp\u003eBuild every bid from the same inputs: estimated hours, crew cost, material load, mobilization, traffic control, and overhead. That keeps the hourly rate tied to actual job cost, not wishful thinking. Use \u003cstrong\u003echange-order rules\u003c\/strong\u003e for anything outside base scope, especially cutting, grinding, disposal, and night shifts.\u003c\/p\u003e\n      \u003cp\u003eTrack \u003cstrong\u003ebid rate vs. actual hours\u003c\/strong\u003e, plus every add-on charged on each job. If the actual scope keeps growing after award, raise the price before the crew starts. That protects gross margin, keeps cash available for payroll, and raises the owner’s draw because profit is not getting eaten by unbilled work.\u003c\/p\u003e\n      \u003cul class=\"lst_crct_blog\"\u003e\n        \u003cli\u003e\u003cstrong\u003eCompare quoted hours to actual hours\u003c\/strong\u003e\u003c\/li\u003e\n        \u003cli\u003e\u003cstrong\u003ePrice scope changes before work starts\u003c\/strong\u003e\u003c\/li\u003e\n        \u003cli\u003e\u003cstrong\u003eSeparate base work from add-ons\u003c\/strong\u003e\u003c\/li\u003e\n      \u003c\/ul\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"timeline\"\u003e\u003c\/div\u003e\n  \u003cdiv class=\"step-circle step3\"\u003e3\u003c\/div\u003e\n\u003c\/div\u003e\u003cbr\u003e\u003cbr\u003e\u003ch3\u003e\u003cspan style=\"color: #126CFF;\"\u003eLabor Materials And Direct Job Costs\u003c\/span\u003e\u003c\/h3\u003e\u003cbr\u003e\n\u003cdiv class=\"container_new_design_timeline\"\u003e\n\u003cdiv class=\"right-row4\"\u003e\n\u003ch3\u003eLabor, Materials, and Direct Job Costs\u003c\/h3\u003e\n\u003cp\u003eWhen you bill \u003cstrong\u003e$100\u003c\/strong\u003e, Year 1 direct costs run \u003cstrong\u003e$290\u003c\/strong\u003e in the model: \u003cstrong\u003e180%\u003c\/strong\u003e joint materials, \u003cstrong\u003e45%\u003c\/strong\u003e sealants and adhesives, \u003cstrong\u003e40%\u003c\/strong\u003e logistics and fuel, and \u003cstrong\u003e25%\u003c\/strong\u003e certification fees. That means gross profit before overhead starts negative, so owner pay depends on cutting waste, rework, and idle time fast.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"left-row4\"\u003e\n\u003cdiv class=\"tips-box\"\u003e\n\u003ch3\u003eTrack Cost Per Job, Not Just Revenue\u003c\/h3\u003e\n\u003cp\u003eWatch direct cost as a percent of revenue, plus material usage by job, fuel miles, and failed repair rate. The model improves to \u003cstrong\u003e242%\u003c\/strong\u003e by Year 5, a \u003cstrong\u003e48-point\u003c\/strong\u003e drop, or \u003cstrong\u003e$48\u003c\/strong\u003e saved per \u003cstrong\u003e$100\u003c\/strong\u003e billed. Here’s the quick math: every point trimmed goes straight to distributable cash before overhead, so crew scheduling, purchasing, prep accuracy, and waste control matter.\u003c\/p\u003e\n\u003cul class=\"lst_crct_blog\"\u003e\n\u003cli\u003eLog material waste by job.\u003c\/li\u003e\n\u003cli\u003eMatch crew size to scope.\u003c\/li\u003e\n\u003cli\u003ePre-check prep and access.\u003c\/li\u003e\n\u003cli\u003eBuy materials in planned quantities.\u003c\/li\u003e\n\u003cli\u003eTrack callbacks and redo hours.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"timeline\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"step-circle step4\"\u003e4\u003c\/div\u003e\n\u003c\/div\u003e\u003cbr\u003e\u003cbr\u003e\u003ch3\u003e\u003cspan style=\"color: #126CFF;\"\u003eOverhead Compliance Insurance And Equipment\u003c\/span\u003e\u003c\/h3\u003e\u003cbr\u003e\n\u003cdiv class=\"container_new_design_timeline\"\u003e\n\u003cdiv class=\"left-row5\"\u003e\n\u003ch3\u003eFixed Overhead Load\u003c\/h3\u003e\n\u003cp\u003eExpansion joint installation has to produce enough gross profit each month to cover \u003cstrong\u003e$11,400\u003c\/strong\u003e in fixed overhead, or about \u003cstrong\u003e$136,800\u003c\/strong\u003e a year. That includes \u003cstrong\u003e$6,500\u003c\/strong\u003e rent, \u003cstrong\u003e$2,200\u003c\/strong\u003e general liability insurance, \u003cstrong\u003e$1,100\u003c\/strong\u003e equipment maintenance, \u003cstrong\u003e$450\u003c\/strong\u003e software, \u003cstrong\u003e$300\u003c\/strong\u003e dues, and \u003cstrong\u003e$850\u003c\/strong\u003e for utilities and communications. If billable work is light, these costs hit owner pay first.\u003c\/p\u003e\n\u003cp\u003eWhat this hides is simple: underused crews and idle trucks spread fixed costs over fewer billable hours, so profit per hour drops fast. The launch rig at \u003cstrong\u003e$85,000\u003c\/strong\u003e and service trucks at \u003cstrong\u003e$145,000\u003c\/strong\u003e also tie up cash before volume is steady. If monthly job margin does not cover overhead, the owner takes less draw even when the schedule looks full.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"right-row5\"\u003e\n\u003cdiv class=\"tips-box\"\u003e\n\u003ch3\u003eKeep Coverage Tight\u003c\/h3\u003e\n\u003cp\u003eTrack billable hours, gross profit by job type, and overhead coverage each month. Here’s the quick math: fixed overhead of \u003cstrong\u003e$11,400\u003c\/strong\u003e must be paid bef\nore owner draw, so every lost day of crew time matters. Separate installation, retrofit, emergency repair, and maintenance work so you can see which jobs actually carry rent, insurance, and equipment costs.\u003c\/p\u003e\n\u003cp\u003eUse a monthly floor for pricing and scheduling. If a job needs extra setup, traffic control, or night work, price it so the job still adds cash after direct labor and materials. One clean rule: don’t add trucks or labor until recurring work can fund them. Idle time turns insurance, rent, and equipment costs into lower income, not growth.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"timeline\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"step-circle step5\"\u003e5\u003c\/div\u003e\n\u003c\/div\u003e\u003cbr\u003e\u003cbr\u003e\u003ch3\u003e\u003cspan style=\"color: #126CFF;\"\u003eRework Warranty Safety And Cash Reserves\u003c\/span\u003e\u003c\/h3\u003e\u003cbr\u003e\n\u003cdiv class=\"container_new_design_timeline\"\u003e\n\u003cdiv class=\"right-row6\"\u003e\n\u003ch3\u003eWarranty Cash And Reserve Discipline\u003c\/h3\u003e\n\u003cp\u003e\u003cstrong\u003eRework, warranty calls, retainage, and slow collections\u003c\/strong\u003e can drain cash even when booked revenue looks strong. In this trade, that means owner pay must come from \u003cstrong\u003epre-tax cash after reserves\u003c\/strong\u003e, not from revenue on paper. At \u003cstrong\u003e$36M\u003c\/strong\u003e in revenue, every \u003cstrong\u003e1%\u003c\/strong\u003e reserve holds back \u003cstrong\u003e$360k\u003c\/strong\u003e; at \u003cstrong\u003e$189M\u003c\/strong\u003e, it holds back \u003cstrong\u003e$1.89M\u003c\/strong\u003e.\u003c\/p\u003e\n\u003cp\u003eThe key input is the reserve rate, plus expected cash drag from defects, failed sealant repairs, weather delays, safety issues, and warranty callbacks. \u003cstrong\u003eReserves are not profit\u003c\/strong\u003e; they are cash kept for risk. If the business pays owner draws before that holdback, it can look profitable and still run short on payroll, subcontractors, or repair work.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"left-row6\"\u003e\n\u003cdiv class=\"tips-box\"\u003e\n\u003ch3\u003eSet The Reserve Before Owner Pay\u003c\/h3\u003e\n\u003cp\u003eBuild the calculator so it starts with booked revenue, then subtracts the reserve percentage before showing owner draw. Use the formula: \u003cstrong\u003epre-tax cash after reserves = cash before reserves - (revenue × reserve %)\u003c\/strong\u003e. That keeps the owner from spending cash that should cover callbacks, claims, and collection delays.\u003c\/p\u003e\n\u003cul class=\"lst_crct_blog\"\u003e\n\u003cli\u003eTrack warranty callbacks monthly.\u003c\/li\u003e\n\u003cli\u003eSeparate retainage from free cash.\u003c\/li\u003e\n\u003cli\u003eSet one reserve percentage.\u003c\/li\u003e\n\u003cli\u003eReview slow-paying accounts weekly.\u003c\/li\u003e\n\u003cli\u003eHold more cash as revenue scales.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThis matters more as revenue grows from \u003cstrong\u003e$36M\u003c\/strong\u003e to \u003cstrong\u003e$189M\u003c\/strong\u003e, because a small reserve rate turns into a large dollar holdback fast. If collections slip or rework rises, owner take-home should drop before the business spends down operating cash.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"timeline\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"step-circle step6\"\u003e6\u003c\/div\u003e\n\u003c\/div\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003ch2\u003e\u003cspan style=\"color: #126CFF;\"\u003eLow, base, and high income scenario objective\n\u003c\/span\u003e\u003c\/h2\u003e\n\u003csection class=\"fml-scenario-table\" aria-label=\"Expansion Joint Installation Owner Income Scenarios\" data-site-name=\"Financial Models Lab\" data-site-url=\"https:\/\/financialmodelslab.com\" data-source-title=\"Expansion Joint Installation Owner Income Scenarios\" data-note-label=\"Planning note\" data-note-text=\"These scenario ranges are researched planning assumptions, not guaranteed earnings, salary promises, tax advice, or distributions.\"\u003e\u003cdiv class=\"fml-scenario-table-card\"\u003e\n\u003cheader class=\"fml-scenario-table-header\"\u003e\u003cdiv\u003e\n\u003cp class=\"fml-scenario-table-eyebrow\"\u003eOwner income scenarios\u003c\/p\u003e\n\u003cp class=\"fml-scenario-table-description\"\u003eOwner income changes fast here because billable hours, pricing, and staffing move together, while payroll and equipment push break-even to Month 4. These scenarios show how scale changes cash needs.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"fml-scenario-table-actions\"\u003e\u003cbutton class=\"fml-scenario-table-export\" type=\"button\" data-scenario-export\u003eEXPORT XLSX\u003c\/button\u003e\u003c\/div\u003e\u003c\/header\u003e\u003cdiv class=\"fml-scenario-table-wrap\"\u003e\u003ctable class=\"fml-scenario-table-grid\"\u003e\n\u003ccaption\u003eModeled owner income by operating stage.\u003c\/caption\u003e\n\u003cthead\u003e\u003ctr\u003e\n\u003cth class=\"fml-scenario-table-stub\" scope=\"col\" data-export-value=\"Scenario\"\u003eScenario\u003c\/th\u003e\n\u003cth class=\"fml-scenario-table-column\" scope=\"col\" data-export-value=\"Low Case\"\u003e\n\u003cspan class=\"fml-scenario-column-title\"\u003eLow Case\u003c\/span\u003e\u003cspan class=\"fml-scenario-badge is-soft\"\u003eLean ramp\u003c\/span\u003e\n\u003c\/th\u003e\n\u003cth class=\"fml-scenario-table-column\" scope=\"col\" data-export-value=\"Base Case\"\u003e\n\u003cspan class=\"fml-scenario-column-title\"\u003eBase Case\u003c\/span\u003e\u003cspan class=\"fml-scenario-badge is-soft\"\u003eCore plan\u003c\/span\u003e\n\u003c\/th\u003e\n\u003cth class=\"fml-scenario-table-column\" scope=\"col\" data-export-value=\"High Case\"\u003e\n\u003cspan class=\"fml-scenario-column-title\"\u003eHigh Case\u003c\/span\u003e\u003cspan class=\"fml-scenario-badge is-warning\"\u003eUpside path\u003c\/span\u003e\n\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n\u003ctbody\u003e\n\u003ctr data-scenario-row\u003e\n\u003cth class=\"fml-scenario-row-heading\" scope=\"row\" data-export-value=\"Launch model\"\u003e\u003cspan class=\"fml-scenario-row-heading-inner\"\u003e\u003cspan class=\"fml-scenario-row-icon is-launch\" aria-hidden=\"true\"\u003e\u003cimg class=\"fml-scenario-row-icon-img\" src=\"\/cdn\/shop\/files\/scenario-launch-model.svg\" alt=\"Launch model icon\" loading=\"lazy\"\u003e\u003c\/span\u003e\u003cspan\u003e\u003cspan class=\"fml-scenario-row-title\"\u003eLaunch model\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/th\u003e\n\u003ctd data-export-value=\"This is the lower earnings path, where Year 1 output and pricing are still ramping and owner pay tracks a lean first-year operating profit.\"\u003eThis is the lower earnings path, where Year 1 output and pricing are still ramping and owner pay tracks a lean first-year operating profit.\u003c\/td\u003e\n\u003ctd data-export-value=\"This is the modeled core case, where the operation is past launch and owner income follows Year 3 scale.\"\u003eThis is the modeled core case, where the operation is past launch and owner income follows Year 3 scale.\u003c\/td\u003e\n\u003ctd data-export-value=\"This is the stronger earnings path, where Year 5 scale and utilization push owner income higher but also raise reserve needs.\"\u003eThis is the stronger earnings path, where Year 5 scale and utilization push owner income higher but also raise reserve needs.\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-scenario-row\u003e\n\u003cth class=\"fml-scenario-row-heading\" scope=\"row\" data-export-value=\"Typical setup\"\u003e\u003cspan class=\"fml-scenario-row-heading-inner\"\u003e\u003cspan class=\"fml-scenario-row-icon is-setup\" aria-hidden=\"true\"\u003e\u003cimg class=\"fml-scenario-row-icon-img\" src=\"\/cdn\/shop\/files\/scenario-typical-setup.svg\" alt=\"Typical setup icon\" loading=\"lazy\"\u003e\u003c\/span\u003e\u003cspan\u003e\u003cspan class=\"fml-scenario-row-title\"\u003eTypical setup\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/th\u003e\n\u003ctd data-export-value=\"Year 1 revenue is $2.83M with $1.26M EBITDA, 45 billable hours per active customer, and a small crew built around 3 certified technicians, 1 senior lead, and 1 sales hire.\"\u003eYear 1 revenue is $2.83M with $1.26M EBITDA, 45 billable hours per active customer, and a small crew built around 3 certified technicians, 1 senior lead, and 1 sales hire.\u003c\/td\u003e\n\u003ctd data-export-value=\"Year 3 revenue is $9.47M with $5.45M EBITDA, 52 billable hours per active customer, and a larger team of 8 certified technicians, 2 senior leads, and 2 sales staff.\"\u003eYear 3 revenue is $9.47M with $5.45M EBITDA, 52 billable hours per active customer, and a larger team of 8 certified technicians, 2 senior leads, and 2 sales staff.\u003c\/td\u003e\n\u003ctd data-export-value=\"Year 5 revenue is $20.01M with $12.99M EBITDA, 60 billable hours per active customer, and a fuller team of 12 certified technicians, 3 senior leads, and 3 sales staff.\"\u003eYear 5 revenue is $20.01M with $12.99M EBITDA, 60 billable hours per active customer, and a fuller team of 12 certified technicians, 3 senior leads, and 3 sales staff.\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-scenario-row\u003e\n\u003cth class=\"fml-scenario-row-heading\" scope=\"row\" data-export-value=\"Cost drivers\"\u003e\u003cspan class=\"fml-scenario-row-heading-inner\"\u003e\u003cspan class=\"fml-scenario-row-icon is-drivers\" aria-hidden=\"true\"\u003e\u003cimg class=\"fml-scenario-row-icon-img\" src=\"\/cdn\/shop\/files\/scenario-cost-drivers.svg\" alt=\"Cost drivers icon\" loading=\"lazy\"\u003e\u003c\/span\u003e\u003cspan\u003e\u003cspan class=\"fml-scenario-row-title\"\u003eCost drivers\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/th\u003e\n\u003ctd data-export-value=\"Billable hours; early pricing; lean crew; fixed payroll; capex recovery\"\u003e\u003cul class=\"fml-scenario-list\"\u003e\n\u003cli\u003eBillable hours\u003c\/li\u003e\n\u003cli\u003eearly pricing\u003c\/li\u003e\n\u003cli\u003elean crew\u003c\/li\u003e\n\u003cli\u003efixed payroll\u003c\/li\u003e\n\u003cli\u003ecapex recovery\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/td\u003e\n\u003ctd data-export-value=\"Billable hours; pricing mix; 8 techs; 2 leads; payroll\"\u003e\u003cul class=\"fml-scenario-list\"\u003e\n\u003cli\u003eBillable hours\u003c\/li\u003e\n\u003cli\u003epricing mix\u003c\/li\u003e\n\u003cli\u003e8 techs\u003c\/li\u003e\n\u003cli\u003e2 leads\u003c\/li\u003e\n\u003cli\u003epayroll\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/td\u003e\n\u003ctd data-export-value=\"Billable hours; pricing; 12 techs; reserve needs; overhead\"\u003e\u003cul class=\"fml-scenario-list\"\u003e\n\u003cli\u003eBillable hours\u003c\/li\u003e\n\u003cli\u003epricing\u003c\/li\u003e\n\u003cli\u003e12 techs\u003c\/li\u003e\n\u003cli\u003ereserve needs\u003c\/li\u003e\n\u003cli\u003eoverhead\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-scenario-row\u003e\n\u003cth class=\"fml-scenario-row-heading\" scope=\"row\" data-export-value=\"Owner income range\"\u003e\u003cspan class=\"fml-scenario-row-heading-inner\"\u003e\u003cspan class=\"fml-scenario-row-icon is-range\" aria-hidden=\"true\"\u003e\u003cimg class=\"fml-scenario-row-icon-img\" src=\"\/cdn\/shop\/files\/scenario-planning-range.svg\" alt=\"Owner income range icon\" loading=\"lazy\"\u003e\u003c\/span\u003e\u003cspan\u003e\u003cspan class=\"fml-scenario-row-title\"\u003eOwner income range\u003c\/span\u003e\u003cspan class=\"fml-scenario-row-subtitle\"\u003eBefore owner reserves\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/th\u003e\n\u003ctd data-export-value=\"$1.26M\"\u003e\n\u003cstrong class=\"fml-scenario-range\"\u003e$1.26M\u003c\/strong\u003e\u003cspan class=\"fml-scenario-badge is-soft\"\u003eIncome floor\u003c\/span\u003e\n\u003c\/td\u003e\n\u003ctd data-export-value=\"$5.45M\"\u003e\n\u003cstrong class=\"fml-scenario-range\"\u003e$5.45M\u003c\/strong\u003e\u003cspan class=\"fml-scenario-badge is-soft\"\u003eModeled income\u003c\/span\u003e\n\u003c\/td\u003e\n\u003ctd data-export-value=\"$12.99M\"\u003e\n\u003cstrong class=\"fml-scenario-range\"\u003e$12.99M\u003c\/strong\u003e\u003cspan class=\"fml-scenario-badge is-warning\"\u003eUpside income\u003c\/span\u003e\n\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003ctr data-scenario-row\u003e\n\u003cth class=\"fml-scenario-row-heading\" scope=\"row\" data-export-value=\"Best fit\"\u003e\u003cspan class=\"fml-scenario-row-heading-inner\"\u003e\u003cspan class=\"fml-scenario-row-icon is-fit\" aria-hidden=\"true\"\u003e\u003cimg class=\"fml-scenario-row-icon-img\" src=\"\/cdn\/shop\/files\/scenario-best-fit.svg\" alt=\"Best fit icon\" loading=\"lazy\"\u003e\u003c\/span\u003e\u003cspan\u003e\u003cspan class=\"fml-scenario-row-title\"\u003eBest fit\u003c\/span\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/th\u003e\n\u003ctd data-export-value=\"Fits owners testing launch cash flow and how much work the first year can really support.\"\u003eFits owners testing launch cash flow and how much work the first year can really support.\u003c\/td\u003e\n\u003ctd data-export-value=\"Fits planning for a steadier operating rhythm after breakeven and before the top-heavy staffing years.\"\u003eFits planning for a steadier operating rhythm after breakeven and before the top-heavy staffing years.\u003c\/td\u003e\n\u003ctd data-export-value=\"Fits owners stress-testing scale, hiring, and working capital before chasing fast growth.\"\u003eFits owners stress-testing scale, hiring, and working capital before chasing fast growth.\u003c\/td\u003e\n\u003c\/tr\u003e\n\u003c\/tbody\u003e\n\u003c\/table\u003e\u003c\/div\u003e\n\u003cdiv class=\"fml-scenario-table-note\"\u003e\n\u003cspan class=\"fml-scenario-table-note-icon\" aria-hidden=\"true\"\u003e!\u003c\/span\u003e\u003cp\u003e\u003cstrong\u003ePlanning note:\u003c\/strong\u003e These scenario ranges are researched planning assumptions, not guaranteed earnings, salary promises, tax advice, or distributions.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e","brand":"FinancialModelsLab","offers":[{"title":"Default Title","offer_id":49303725801715,"sku":"expansion-joint-owner-makes","price":0.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0522\/6191\/2762\/files\/expansion-joint-owner-makes.webp?v=1782682266","url":"https:\/\/financialmodelslab.com\/products\/expansion-joint-owner-makes","provider":"Financial Models Lab","version":"1.0","type":"link"}