Mobile Pet Grooming

Asking Price:

AED 450,000 (Negotiable)

STATUS:
SOLD
SOLD
Business ID
PH1120
Listing Category
Monthly Revenue
AED 18,000
Operating Cost
~AED 7,150
Asset Value
AED 220,000

Description

This fast-growing premium mobile pet grooming business, established in November 2023, serves clients across Dubai with luxury, on-demand grooming services delivered directly to their doorsteps.
Operating through a fully customized 2023 Peugeot Boxer L4H3 grooming van, the business ensures top-quality, salon-grade grooming without the limitations of a physical store — enabling low overhead costs, operational flexibility, and citywide service coverage.
Built on a scalable, asset-light model, the company has quickly gained traction with 6–8 daily bookings, a 4.9 Google rating, and a loyal base of over 600 customers. Its strong brand identity, agency-maintained van (under warranty), and professional-grade equipment make this a plug-and-play opportunity ready for immediate takeover and expansion.

Overview

Financial Snapshot
Asking Price: AED 450,000 (Negotiable)
Monthly Revenue: AED 18,000
Monthly Running Costs: AED 7,000
Tangible Asset Value: AED 220,000
(Includes fully customized Peugeot Boxer 2023 L4H3 grooming van, tools, and equipment)
Intangible Assets: 600+ customer base, brand, website with online booking, 4.9 Google rating, and partnerships with pet service providers
Debts/Liabilities: None
________________________________________
Key Business Highlights
Mobile-based operations – No rent or lease required
2023 Peugeot Boxer L4H3 grooming van – Fully customized, RTA-approved, and under warranty
600+ loyal customers with consistent repeat bookings
Professional website with integrated online booking and CRM system
4.9-star Google rating reflecting excellent client satisfaction
Growing niche market in Dubai’s expanding pet care industry
________________________________________
Growth Potential
Fleet Expansion: Add more grooming vans to double or triple daily booking capacity.
Service Diversification: Introduce subscription models, pet taxi services, or bundled packages.
Regional Expansion: Extend services to Abu Dhabi, Sharjah, and other Emirates.
Upselling Opportunities: Offer retail pet products and branded grooming accessories.

With a booming pet ownership trend in the UAE, the business stands at the intersection of luxury, convenience, and scalability.
________________________________________
Acquisition Details
Included in the Sale:
Fully customized Peugeot Boxer 2023 L4H3 van (agency-maintained, under warranty)
Trade License (valid until November 2025)
Tools, grooming equipment, and branded inventory
Website with online booking and customer database
Brand name, logo, and marketing materials
Partnership agreements with leading pet service providers
________________________________________
Reason for Sale
The current owner is expanding a primary business outside the Middle East and seeks a committed buyer to take this venture forward and unlock its growth potential.
________________________________________
Summary
This is a turnkey, profitable mobile pet grooming business offering premium services, strong brand reputation, and high scalability.
With a fully equipped 2023 Peugeot Boxer van, 600+ active customers, and exceptional market positioning, it presents a ready-to-operate opportunity for entrepreneurs or partners aiming to enter Dubai’s thriving pet care sector with immediate revenue and long-term growth potential.

Consultation Form

در یک سالن آرایش فعال در دبی

با بیش از ۱۰۰۰ مشتری

و ۱۴ سال سابقه

ارزش هر صندلی فقط ۴ میلیارد تومان

۵۰٪ از مشتری‌ها به‌صورت ثابت به شما تعلق می‌گیرد

مناسب برای:

  • آرایشگران حرفه‌ای مقیم ایران که دنبال درآمد دلاری هستند
  • علاقه‌مندان به مهاجرت کاری مطمئن و تضمین‌شده به امارات

پیش‌بینی درآمد:

۱۰,۰۰۰ تا ۲۵,۰۰۰ درهم در ماه

همین حالا برای رزرو مشاوره اقدام کنید. فقط ۵ صندلی در دسترس است.

We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies. Cookie Policy

' + fmt(val) + '
'; }// ==================== BUSINESS OUTPUT ==================== function businessOutput(d, region, mgmtMode) { var p = d.profit, cum = 0; for (var t = 1; t 0 ? d.profit / d.price * 100 : 0;// ---- 01 VALUATION ---- var val = valuation(d.profit, d.sector, d.region, risk, d.growth, mgmt); var mult = multiple(d.sector, d.region, risk, d.growth, d.profit, mgmt); $("vVal").textContent = fmt(val); $("vRange").textContent = "Range: " + fmt(val * 0.80) + " – " + fmt(val * 1.22); $("vMult").textContent = mult.toFixed(2) + "×"; $("vMultDetail").textContent = REGION_NAME[d.region] + " base " + REGION[d.region].toFixed(2) + " × " + IND_NAME[d.sector] + " " + IND[d.sector].toFixed(2) + " × growth " + growthF(d.growth).toFixed(2) + " × risk " + RISKM[risk].toFixed(2) + " × size " + sizeF(d.profit).toFixed(2) + " × mgmt " + mgmtF(mgmt).toFixed(2); $("vYield").textContent = yld.toFixed(1) + "%"; $("vPb").textContent = d.profit > 0 ? (d.price / d.profit).toFixed(1) + " yrs" : "—"; $("vMargin").textContent = d.price > 0 ? (d.profit / d.price * 100).toFixed(1) + "%" : "—";var gap = val - d.price; var gapPct = d.price > 0 ? (gap / d.price * 100) : 0; $("vGap").textContent = (gap >= 0 ? "+" : "") + fmtPct(gapPct / 100, 1); $("vGap").className = gap >= 0 ? "v green" : "v red";var rating = "PASS"; var ratingClass = "badge-red"; if (gapPct >= 15) { rating = "STRONG BUY"; ratingClass = "badge-green"; } else if (gapPct >= 5) { rating = "BUY"; ratingClass = "badge-green"; } else if (gapPct >= -5) { rating = "NEGOTIATE"; ratingClass = "badge-gold"; } else if (gapPct >= -15) { rating = "OVERPRICED"; ratingClass = "badge-red"; } $("vRating").innerHTML = '' + rating + '';// Valuation breakdown bars var vb = $("valBreakdown"); vb.innerHTML = ""; var baseVal = d.profit * REGION[d.region]; var afterIndustry = baseVal * IND[d.sector]; var afterGrowth = afterIndustry * growthF(d.growth); var afterRisk = afterGrowth * RISKM[risk]; var afterSize = afterRisk * sizeF(d.profit); var finalVal = afterSize * mgmtF(mgmt); var steps = [ { n: "Base (" + REGION_NAME[d.region] + ")", v: baseVal, c: "#3a6b86" }, { n: "+ Industry (" + IND_NAME[d.sector] + ")", v: afterIndustry, c: "#2f7d8c" }, { n: "+ Growth (" + d.growth + "%)", v: afterGrowth, c: "#7d5bd6" }, { n: "+ Risk (" + risk + ")", v: afterRisk, c: "#c98a1a" }, { n: "+ Size factor", v: afterSize, c: "#c08a2d" }, { n: "+ Management (" + (mgmt === "managed" ? "managed" : "owner") + ")", v: finalVal, c: "#1f7a5c" } ]; var vmx = Math.max.apply(null, steps.map(function(s){ return s.v; })); steps.forEach(function(s, i) { bar(vb, s.n, "AED " + fmt(s.v), s.v, vmx, s.c, i === steps.length - 1); });// ---- 02 DEAL FINDER ---- var dealData = generateDeals(d); var dt = $("dealRows"); dt.innerHTML = ""; dealData.forEach(function(deal) { var roi = deal.price > 0 ? (deal.profit / deal.price * 100).toFixed(1) : "0"; var statusClass = deal.status === "Active" ? "pos" : (deal.status === "Urgent" ? "neg" : ""); dt.innerHTML += '' + deal.platform + '' + deal.title + '' + fmt(deal.price) + '' + fmt(deal.profit) + '' + deal.industry + '' + deal.emirate + '' + roi + '%' + deal.status + ''; });// ---- 03 INVESTMENT COMPARISON ---- var biz = businessOutput(d, d.region, mgmt); var gold = totalCost * Math.pow(1.085, d.years); var oil = totalCost * Math.pow(1.10, d.years); var stock = totalCost * Math.pow(1.095, d.years); var dep = totalCost * Math.pow(1.048, d.years); var re = totalCost * Math.pow(1.072, d.years); var car = totalCost * Math.pow(0.90, d.years);var io = [ { n: "This Business", s: "profit + exit", v: biz.total, c: "#c08a2d", r: (risk === "low" ? 18 : (risk === "med" ? 28 : 42)), liquid: "Low" }, { n: "Global Equities", s: "~10%", v: stock, c: "#1f7a5c", r: 16, liquid: "High" }, { n: "Dubai Real Estate", s: "~7.5%", v: re, c: "#2f7d8c", r: 12, liquid: "Medium" }, { n: "Gold", s: "~8.5%", v: gold, c: "#caa53c", r: 18, liquid: "High" }, { n: "Oil", s: "~10% (volatile)", v: oil, c: "#8a5f1a", r: 32, liquid: "High" }, { n: "Deposit/Sukuk", s: "~4.8%", v: dep, c: "#6c7a85", r: 1, liquid: "High" }, { n: "Luxury Car", s: "~−10%", v: car, c: "#b4452f", r: 5, liquid: "Low" } ]; var imx = Math.max.apply(null, io.map(function(o){ return o.v; }), 1); var iwin = io.reduce(function(a, b){ return b.v > a.v ? b : a; }); var ib = $("iBars"); ib.innerHTML = ""; io.forEach(function(o){ bar(ib, o.n, o.s, o.v, imx, o.c, o === iwin); });var rar = (yld + d.growth) / (risk === "low" ? 22 : (risk === "med" ? 32 : 48)); var stockRar = 10 / 16; var t = $("iTag"), x = $("iTxt"); if (d.growth = stockRar * 1.15) { t.className = "badge badge-green"; t.textContent = "✅ WORTH IT (Accepting Risk)"; x.innerHTML = "Risk-adjusted return (" + rar.toFixed(2) + ") beats equities (" + stockRar.toFixed(2) + ") and payback is ~" + (d.profit > 0 ? (d.price / d.profit).toFixed(1) : "—") + " yrs. Higher return comes with higher risk and lower liquidity."; } else if (rar >= stockRar * 0.9) { t.className = "badge badge-gold"; t.textContent = "⚖️ CONDITIONAL"; x.textContent = "Risk-adjusted return is close to the market. Worth it only if you buy below value or can lift growth/margin significantly."; } else { t.className = "badge badge-red"; t.textContent = "❌ NOT WORTH IT"; x.textContent = "Risk-adjusted return is below market. Either negotiate price down by " + Math.abs(gapPct).toFixed(0) + "% or find a better deal."; }renderScatter(io, totalCost);// Comparison table var ct = $("compareRows"); ct.innerHTML = ""; io.forEach(function(o) { var annRet = Math.pow(o.v / totalCost, 1/d.years) - 1; var riskAdj = annRet / (o.r / 10); var taxImpact = o.n === "This Business" ? "9% (0% up to 375K)" : (o.n === "Global Equities" ? "15% CGT" : (o.n === "Dubai Real Estate" ? "5% VAT + 4% transfer" : "0-5%")); var verdict = o === iwin ? "🏆 BEST" : (annRet > 0.08 ? "✅ Good" : (annRet > 0.04 ? "⚖️ Fair" : "❌ Poor")); var vClass = o === iwin ? "best" : (annRet' + o.n + '' + fmt(o.v) + '' + fmtPct(annRet, 1) + '' + o.r + '%' + o.liquid + '' + riskAdj.toFixed(2) + '' + taxImpact + '' + verdict + ''; });// ---- 04 CAPITAL INCREASE ---- var capPct = +$("capPct").value || 0; var capAmt = +$("capAmt").value || 0; var inj = capAmt > 0 ? capAmt : d.price * capPct / 100; var hurdle = 0.10; var reqYield = yld / 100; var target15 = 0.15, target20 = 0.20;$("capKpis").innerHTML = '
Current business yield
' + yld.toFixed(1) + '%
' + '
Market hurdle rate
' + (hurdle * 100).toFixed(0) + '%
' + '
Extra profit needed (current yield)
' + fmt(inj * Math.max(reqYield, hurdle)) + '
';var crt = $("capRows"); crt.innerHTML = ""; [10, 25, 50, 100, 200].forEach(function(pc) { var x = d.price * pc / 100; var newCap = d.price + x; var profitCurrent = x * reqYield; var profitMarket = x * hurdle; var profit15 = x * target15; var profit20 = x * target20; var breakeven = reqYield > 0 ? (x / (d.profit + profitCurrent) * 12).toFixed(1) : "—"; crt.innerHTML += '+' + pc + '%' + fmt(newCap) + '' + fmt(profitCurrent) + '' + fmt(profitMarket) + '' + fmt(profit15) + '' + fmt(profit20) + '' + breakeven + ' mo'; });$("capVerdict").className = "verdict" + (reqYield >= hurdle ? "" : " warn"); $("capVerdict").innerHTML = reqYield >= hurdle ? "✅ Capital injection makes sense. Your current commercial allocation where applicable(" + yld.toFixed(1) + "%) beats the market hurdle (10%). For this injection of " + fmt(inj) + ", you must generate at least " + fmt(inj * reqYield) + " in extra annual profit. If the new capital earns 15%, that's " + fmt(inj * 0.15) + "/yr. If it earns 20%, that's " + fmt(inj * 0.20) + "/yr — a 2× return on the injection itself." : "⚠️ Capital injection is risky. Your current commercial allocation where applicable(" + yld.toFixed(1) + "%) is below the market hurdle (10%). Every extra dirham must return at least 10% — otherwise that money is better in equities or real estate. Focus on improving current operations before expanding.";// Capital scenarios var cs = $("capScenarios"); cs.innerHTML = ""; var scenarios = [ { pct: 25, label: "Conservative (+25%)", desc: "Small expansion, same team" }, { pct: 50, label: "Moderate (+50%)", desc: "New location or product line" }, { pct: 100, label: "Aggressive (+100%)", desc: "Full expansion, new market" } ]; scenarios.forEach(function(sc) { var amt = d.price * sc.pct / 100; var need = amt * Math.max(reqYield, hurdle); var need15 = amt * 0.15; cs.innerHTML += '
' + sc.label + '
' + fmt(amt) + '
Injection amount
Min profit needed: ' + fmt(need) + '/yr
At 15% target: ' + fmt(need15) + '/yr
' + sc.desc + '
'; });// ---- 05 GLOBAL TAX ---- var uaeTaxable = Math.max(0, d.profit - 375000); var uaeTax = uaeTaxable * 0.09; var uaeNet = d.profit - uaeTax; var usaNet = d.profit * 0.79; var ukNet = d.profit * 0.75; var gerNet = d.profit * 0.70; var indNet = d.profit * 0.65; var worldNet = d.profit * 0.76;var TAX = [ ["UAE 🇦🇪 (9%)", uaeNet, "#1f7a5c"], ["USA 🇺🇸 (21%)", usaNet, "#3a6b86"], ["UK 🇬🇧 (25%)", ukNet, "#7d5bd6"], ["Germany 🇩🇪 (30%)", gerNet, "#c98a1a"], ["India 🇮🇳 (~35%)", indNet, "#b4452f"], ["World Avg (~24%)", worldNet, "#9aa6ad"] ]; var tmx = Math.max.apply(null, TAX.map(function(o){ return o[1]; }), 1); var wt = $("wtBars"); wt.innerHTML = ""; TAX.forEach(function(o, i) { bar(wt, o[0], "net profit", o[1], tmx, o[2], i === 0); });var advVsAvg = Math.round((uaeNet / worldNet - 1) * 100); var advVsUsa = Math.round((uaeNet / usaNet - 1) * 100); $("wtNote").innerHTML = "Net profit in UAE: " + fmt(uaeNet) + " — roughly " + advVsAvg + "% more than world average (~24%) and " + advVsUsa + "% more than USA (21%). This tax edge feeds directly into valuation. Over " + d.years + " years, tax savings alone add " + fmt((uaeNet - worldNet) * d.years) + " to your wealth. (VAT 5% separate; free zones can be 0%.)";$("taxUaeNet").textContent = fmt(uaeNet); $("taxWorldNet").textContent = fmt(worldNet); $("taxAdvantage").textContent = fmt(uaeNet - worldNet) + "/yr"; $("taxMultiplier").textContent = mult.toFixed(1); $("taxYears").textContent = d.years; $("taxTotal").textContent = fmt((uaeNet - worldNet) * d.years * mult);// ---- 06 REAL ESTATE vs BUSINESS ---- var rePrice = +$("rePrice").value || d.price; var reYield = +$("reYield").value || 7; var reGrowth = +$("reGrowth").value || 5; var reService = +$("reService").value || 15; var reVacancy = +$("reVacancy").value || 5; var reMortgage = +$("reMortgage").value || 0;var grossRent = rePrice * (reYield / 100); var netRent = grossRent * (1 - reService / 100) * (1 - reVacancy / 100); var reAppreciation = rePrice * Math.pow(1 + reGrowth / 100, d.years); var reTotal = netRent * d.years + reAppreciation; var reNetYield = rePrice > 0 ? (netRent / rePrice * 100) : 0;$("reBizOutput").textContent = fmt(biz.total); $("reBizYield").textContent = yld.toFixed(1) + "%"; $("reBizRisk").textContent = risk === "low" ? "Low-Medium" : (risk === "med" ? "Medium" : "High"); $("reBizTax").textContent = "9% (0% to 375K)"; $("reBizLiquid").textContent = "Low (6-12 mo)";$("rePropOutput").textContent = fmt(reTotal); $("rePropYield").textContent = reNetYield.toFixed(1) + "%"; $("rePropRisk").textContent = "Low-Medium"; $("rePropTax").textContent = "4% transfer + 5% VAT"; $("rePropLiquid").textContent = "Medium (2-6 mo)";var reGap = biz.total - reTotal; var reGapPct = reTotal > 0 ? (reGap / reTotal * 100) : 0; $("reVerdict").className = "verdict" + (reGap > 0 ? "" : " warn"); $("reVerdict").innerHTML = reGap > 0 ? "✅ Business wins by " + fmt(reGap) + " (" + reGapPct.toFixed(0) + "%) over " + d.years + " years. Real estate offers stability and tangible asset, but the business generates " + fmt(biz.cumProfit) + " in cumulative profit plus " + fmt(biz.exitValue) + " exit value. If you prefer passive, stable income with lower risk → real estate. If you want maximum wealth creation and can handle operational risk → business." : "⚠️ Real estate wins by " + fmt(Math.abs(reGap)) + " over " + d.years + " years. Your business deal may be overpriced or underperforming. Consider: (1) negotiating price down, (2) improving profit margins, or (3) diversifying into real estate.";// ---- 07 VEHICLE REALITY ---- var carPrice = +$("carPrice").value || 500000; var carDeprec = +$("carDeprec").value || 12; var carCost = +$("carCost").value || 25000; var carValue = carPrice * Math.pow(1 - carDeprec / 100, d.years); var carTotalCost = carCost * d.years; var carNet = carValue - carTotalCost; var carLoss = carPrice - carNet;var carBars = $("carBars"); carBars.innerHTML = ""; var carMax = Math.max(carPrice, Math.abs(carNet), biz.total, gold); bar(carBars, "Initial vehicle cost", "AED " + fmt(carPrice), carPrice, carMax, "#6c7a85", false); bar(carBars, "Vehicle value after " + d.years + " yrs", "depreciated", carValue, carMax, "#9aa6ad", false); bar(carBars, "Maintenance + insurance", "total cost", carTotalCost, carMax, "#b4452f", false); bar(carBars, "Net vehicle position", "value - costs", carNet, carMax, "#8a2e1d", false); bar(carBars, "Same money in business", "profit + exit", biz.total, carMax, "#c08a2d", true); bar(carBars, "Same money in gold", "~8%/yr", gold, carMax, "#caa53c", false);$("carVerdict").className = "verdict" + (carNet Vehicle depreciation reality: A " + fmt(carPrice) + " vehicle loses " + fmt(carLoss) + " over " + d.years + " years (" + fmtPct(carLoss / carPrice / d.years, 1) + " annually). The same " + fmt(carPrice) + " in this business would return " + fmt(biz.total) + " — a " + (biz.total / Math.abs(carNet)).toFixed(1) + "× difference. Vehicles are consumption, not Partnership. If you need a vehicle for the business, lease or buy used to minimize capital drag.";// ---- 08 ROADMAP ---- $("roadGrowth").textContent = d.growth; var rm = $("roadmapGrid"); rm.innerHTML = ""; var targets = [2, 3, 4, 5, 6]; var currentMult = biz.total / totalCost; targets.forEach(function(tgt) { var isCurrent = currentMult >= tgt && currentMult 0 ? (Math.log(tgt) / Math.log(1 + d.growth / 100)).toFixed(1) : "∞"; var extraCap = d.price * (tgt - 1); var items = [ tgt === 2 ? "Hire 1-2 key staff" : (tgt === 3 ? "Open 2nd location" : (tgt === 4 ? "Franchise model" : (tgt === 5 ? "Regional expansion" : "IPO / Strategic sale"))), tgt === 2 ? "Systemize operations" : (tgt === 3 ? "New revenue line" : (tgt === 4 ? "M&A target" : (tgt === 5 ? "Digital platform" : "International markets"))), tgt === 2 ? "Manager in place" : (tgt === 3 ? "Capital: " + fmt(extraCap) : (tgt === 4 ? "Team: 15-20 people" : (tgt === 5 ? "Brand licensing" : "Exit at " + (tgt * mult).toFixed(1) + "×"))) ]; rm.innerHTML += '
' + tgt + '×
' + (isCurrent ? "CURRENT" : "~" + yearsNeeded + " yrs") + '
    ' + items.map(function(i){ return '
  • ' + i + '
  • '; }).join('') + '
'; });// ---- 09 MANAGEMENT ---- var ooProfit = d.profit; var ooVal = valuation(ooProfit, d.sector, d.region, "high", d.growth, "owner"); var mgProfit = Math.max(0, d.profit - d.mgr); var mgVal = valuation(mgProfit, d.sector, d.region, "low", d.growth, "managed");$("oo_income").textContent = fmt(ooProfit); $("oo_exit").textContent = fmt(ooVal); $("oo_mult").textContent = multiple(d.sector, d.region, "high", d.growth, ooProfit, "owner").toFixed(2) + "×"; $("mg_income").textContent = fmt(mgProfit); $("mg_exit").textContent = fmt(mgVal); $("mg_mult").textContent = multiple(d.sector, d.region, "low", d.growth, mgProfit, "managed").toFixed(2) + "×";var exitGap = ooVal > 0 ? Math.round((mgVal - ooVal) / ooVal * 100) : 0; var incGap = fmt(ooProfit - mgProfit); $("mgmtVerdict").className = "verdict" + (mgVal >= ooVal ? "" : " warn"); $("mgmtVerdict").innerHTML = mgVal >= ooVal ? "✅ Managed wins. You pocket " + incGap + " less per year, but you go passive and the exit value is " + exitGap + "% higher. If your goal is freedom, lifestyle, and a richer exit → hire a manager. The business becomes a true asset, not a job." : "⚠️ Owner-run wins on cash. Without a manager you pocket " + incGap + " more per year, but you work 40-60 hrs/week. The business depends on you, so it sells for less. If you want maximum cash now and enjoy operations → run it yourself. Plan to systemize within 2 years.";// ---- 10 CONSULTATION ---- $("recPhone").textContent = d.price = 1000000 && d.price 5000000 ? "Recommended for you ✓" : "";// ---- 11 REPORT ---- $("repDate").textContent = new Date().toLocaleDateString("en-GB", { day: '2-digit', month: 'short', year: 'numeric' }); var recCons = d.price > 5000000 ? "an in-person meeting" : (d.price >= 1000000 ? "an online deep-dive" : "a phone consultation");var repHTML = "Business Opportunity Summary

" + "Deal Parameters: " + IND_NAME[d.sector] + " in " + REGION_NAME[d.region] + " · Price " + fmt(d.price) + " · Profit " + fmt(d.profit) + "/yr · Growth " + d.growth + "% · " + d.years + "-year horizon

" + "Valuation: " + fmt(val) + " (" + mult.toFixed(2) + "× multiple) · Range " + fmt(val * 0.80) + " – " + fmt(val * 1.22) + "
" + "Deal Rating: " + rating + " · " + (gap >= 0 ? "Underpriced by " + fmtPct(gapPct / 100, 1) : "Overpriced by " + fmtPct(Math.abs(gapPct) / 100, 1)) + "
" + "Earnings Yield: " + yld.toFixed(1) + "% · Payback: " + (d.profit > 0 ? (d.price / d.profit).toFixed(1) : "—") + " yrs

" + "" + d.years + "-Year Output Comparison:
" + "• Business (" + REGION_NAME[d.region] + "): " + fmt(biz.total) + " (cumulative profit " + fmt(biz.cumProfit) + " + exit " + fmt(biz.exitValue) + ")
" + "• Global Equities: " + fmt(stock) + " · Gold: " + fmt(gold) + "
" + "• Dubai Real Estate: " + fmt(re) + " · Deposits: " + fmt(dep) + "

" + "Management Strategy:
" + "• Owner-run: Income " + fmt(ooProfit) + "/yr · Exit " + fmt(ooVal) + " · " + multiple(d.sector, d.region, "high", d.growth, ooProfit, "owner").toFixed(2) + "×
" + "• Managed: Income " + fmt(mgProfit) + "/yr · Exit " + fmt(mgVal) + " · " + multiple(d.sector, d.region, "low", d.growth, mgProfit, "managed").toFixed(2) + "×
" + "• Exit value difference: " + Math.abs(exitGap) + "% " + (mgVal >= ooVal ? "higher with manager" : "higher owner-run") + "

" + "Tax Advantage (UAE): Net profit " + fmt(uaeNet) + " vs world average " + fmt(worldNet) + " · " + advVsAvg + "% more after-tax wealth

" + "Capital Increase: At current yield, every 100% capital increase needs " + fmt(d.price * reqYield) + " extra profit/yr to maintain returns

" + "Recommended Next Step: " + recCons + "

" + "
" + "This report is generated by the Persian Horizon Business Intelligence Suite. Indicative only — not financial advice or a guaranteed return. Consult a licensed advisor before any decision." + "
";$("repBody").innerHTML = repHTML; window.__rep = repHTML.replace(/]+>/g, ' ').replace(/\s+/g, ' ').trim(); }// ==================== EVENT LISTENERS ==================== $("riskSeg").addEventListener("click", function(e) { var b = e.target.closest("button"); if (!b) return; risk = b.dataset.r; [].forEach.call(this.querySelectorAll("button"), function(x) { x.setAttribute("aria-pressed", x === b ? "true" : "false"); }); calc(); });$("mgmtSeg").addEventListener("click", function(e) { var b = e.target.closest("button"); if (!b) return; mgmt = b.dataset.m; [].forEach.call(this.querySelectorAll("button"), function(x) { x.setAttribute("aria-pressed", x === b ? "true" : "false"); }); calc(); });$("consCards").addEventListener("click", function(e) { var c = e.target.closest(".cc"); if (!c) return; cons = c.dataset.c; [].forEach.call(this.querySelectorAll(".cc"), function(x) { x.setAttribute("aria-pressed", x === c ? "true" : "false"); }); });var inputIds = ["price", "profit", "growth", "years", "transfer", "sector", "emirate", "mgrCost", "capPct", "capAmt", "rePrice", "reYield", "reGrowth", "reService", "reVacancy", "reMortgage", "carPrice", "carDeprec", "carCost"]; inputIds.forEach(function(id) { var el = $(id); if (el) { el.addEventListener("input", calc); el.addEventListener("change", calc); } });$("cBook").addEventListener("click", function() { var n = $("cName").value.trim(), p = $("cPhone").value.trim(), e = $("cEmail").value.trim(); if (!n || p.replace(/\D/g, "").length " + map[cons] + " consultation booked!
We'll contact you on WhatsApp within 24 hours. (Lead → CRM)"; });$("cSave").addEventListener("click", function() { $("cMsg").style.color = "var(--blue)"; $("cMsg").textContent = "💾 Analysis saved to your account. Access anytime."; });$("cShare").addEventListener("click", function() { if (navigator.share) { navigator.share({ title: "UAE Business Review", text: window.__rep || "", url: window.location.href }); } else { $("cMsg").style.color = "var(--blue)"; $("cMsg").textContent = "🔗 Report link copied to clipboard."; } });$("repCopy").addEventListener("click", function() { if (navigator.clipboard) navigator.clipboard.writeText(window.__rep || ""); $("repCopy").textContent = "Copied ✓"; setTimeout(function(){ $("repCopy").textContent = "📋 Copy Report Text"; }, 2000); });$("repEmail").addEventListener("click", function() { var subject = "UAE Business Review - Persian Horizon"; var body = window.__rep || ""; window.location.href = "mailto:?subject=" + encodeURIComponent(subject) + "&body=" + encodeURIComponent(body); });// Smooth scroll for nav links document.querySelectorAll('a[href^="#"]').forEach(function(a) { a.addEventListener('click', function(e) { e.preventDefault(); var target = document.querySelector(this.getAttribute('href')); if (target) target.scrollIntoView({ behavior: 'smooth', block: 'start' }); }); });// Initial calculation calc();// ---- IFRAME INTEGRATION ---- if (window.self !== window.top) { document.body.classList.add('ph-in-iframe'); }setInterval(function() { if (window.parent !== window) { window.parent.postMessage({ type: 'phCalcHeight', height: document.documentElement.scrollHeight }, '*'); } }, 500);})(); WhatsApp