// Real data lifted from the company's price list. // Six properties × five service categories. Stored as structured rows so // the pricing grid can re-pivot by property or service. const PROPERTIES = [ { id: "biscayne", name: "1800 Biscayne", short: "1800 Bisc.", city: "Miami, FL" }, { id: "wyn", name: "29 Wyn Apartments", short: "29 Wyn", city: "Miami, FL" }, { id: "casero", name: "Casero", short: "Casero", city: "South Florida" }, { id: "harbour", name: "Cortland at Harbour Cove", short: "Harbour", city: "Miami, FL" }, { id: "hammocks", name: "Cortland at The Hammocks", short: "Hammocks", city: "Miami, FL" }, { id: "elite", name: "Elite Riverview Apts.", short: "Elite", city: "South Florida" }, { id: "midtown", name: "Midtown Aventura", short: "Midtown", city: "Aventura, FL" }, { id: "palms", name: "Palms of Doral", short: "Palms", city: "Doral, FL" }, { id: "paraiso", name: "Paraiso at Fountain Square", short: "Paraiso", city: "South Florida" }, { id: "vistalago", name: "Vista Lago at The Hammocks", short: "Vista Lago", city: "Miami, FL" }, ]; // Each service row carries a per-property price string. `null` = not on that property's list. const PRICING = [ { group: "Carpet", service: "Vacant carpet cleaning", note: "Pre-condition, cleaning, deodorizer. 1 bed / 2 bed / 3 bed.", prices: { alvista: "$55 / $65 / $75", hammocks: "$75 (1–2 bed) / $85 (3 bed)", bluecoast: "$75 (1–2 bed) / $85 (3 bed)", chglobal: "$75 (1 bed) / $150 (2 bed)", harbour: "$85 (3 bed)", general: "$75 (1–2 bed) / $85 (3 bed)", }, }, { group: "Carpet", service: "Occupied / Renewal cleaning", note: "Renewal turns. Same inclusions as vacant.", prices: { alvista: "$75 (1–2 bed) / $85 (3 bed)", hammocks: "$75 (1–2 bed) / $85 (3 bed)", bluecoast: "$75 (1–2 bed) / $85 (3 bed)", chglobal: "$65 (1 bed) / $130 (2 bed)", harbour: "$75 (3 bed)", general: "$75 (1–2 bed) / $85 (3 bed)", }, }, { group: "Carpet", service: "Deep cleaning · stains · stretch · repair", note: "Add-on to any carpet service.", prices: { alvista: "$35 – $65", hammocks: "$50 – $95", bluecoast: "$50 – $95", chglobal: "$35 – $65", harbour: "$35 – $75", general: "$50 – $95", }, }, { group: "Carpet", service: "Pet damage / urine treatment", note: "Enzymatic treatment and re-clean.", prices: { alvista: "$75 – $105", hammocks: "$135 – $150", bluecoast: "$135 – $150", chglobal: "$135 – $150", harbour: "$135 – $150", general: "$135 – $150", }, }, { group: "Hard floors", service: "Tile & grout cleaning", note: "Degrease, extract, seal on request.", prices: { alvista: "$145 – $175", hammocks: "$200 – $250", bluecoast: "$200 – $250", chglobal: null, harbour: "$200 – $250", general: "$150 – $200", }, }, { group: "Hard floors", service: "Vinyl cleaning & stripping", note: "Does not include removal of old wax unless quoted.", prices: { alvista: "$150", hammocks: "$145 (1 bed) / $175 (2–3 bed)", bluecoast: "$200 – $250", chglobal: null, harbour: "$200 – $250", general: "$150 – $200", }, }, { group: "Air", service: "A/C duct cleaning", note: "Cleaning + paint of outlet grilles; deodorized.", prices: { alvista: "$135 (1–2 bed) / $175 (3 bed)", hammocks: "$155 / $175 / $195", bluecoast: "$195 (1–2 bed) / $225 (3 bed)", chglobal: null, harbour: "$195 (1–2 bed) / $225 (3 bed)", general: "Call for estimate", }, }, { group: "Air", service: "Dryer vent cleaning", note: "From the roof — $200. Call for full-property quote.", prices: { alvista: "$65 – $95", hammocks: "$65 – $95", bluecoast: "$65 – $95", chglobal: null, harbour: "$65 – $95", general: "$65 – $95", }, }, { group: "Water damage", service: "Emergency water extraction", note: "Extraction, pad removal if needed, mildewcide, deodorizer, sanitizing. Price scales with volume.", prices: { alvista: "$85 and up", hammocks: "$85 and up", bluecoast: "$85 and up", chglobal: "$85 and up", harbour: "$85 and up", general: "$85 and up", }, }, { group: "Water damage", service: "Equipment — per day", note: "Blowers · dehumidifier · ozone · air scrubber.", prices: { alvista: "Blower $35 · Dehu $150 · Ozone $100 · Scrubber $175", hammocks: "Blower $45 · Dehu $200–250 · Ozone $100–150 · Scrubber $195–225", bluecoast: "Blower $45 · Dehu $200–250 · Ozone $100–150 · Scrubber $195–225", chglobal: "Blower $45 · Dehu $200–250 · Ozone $100–150 · Scrubber $195–225", harbour: "Blower $45 · Dehu $200–250 · Ozone $100–150 · Scrubber $195–225", general: "Blower $40 · Dehu $150–200 · Ozone $100–150 · Scrubber $195–225", }, }, { group: "Water damage", service: "Remove & re-install padding", note: "Billed from $85 and up per unit of affected area.", prices: { alvista: "$85 and up", hammocks: "$85 and up", bluecoast: "$85 and up", chglobal: "$85 and up", harbour: "$85 and up", general: "$85 and up", }, }, ]; const SERVICES = [ { n: "01", kind: "Carpet", title: "Carpet cleaning & repair", body: "Pre-conditioned hot-water extraction, deodorized, with optional deep-stain treatment, stretch and seam repair. Priced per bedroom count, vacant or renewal.", items: ["Vacant turns", "Renewal cleaning", "Stretch · re-seam", "Stain removal", "Pet / urine"], }, { n: "02", kind: "Hard floors", title: "Tile, grout, vinyl", body: "Degrease and extract grout lines. Strip and re-coat vinyl where specified. Sealing on request.", items: ["Tile & grout", "Vinyl strip · re-coat", "Sealant", "Grout color restore"], }, { n: "03", kind: "Air", title: "A/C ducts & dryer vents", body: "Supply and return cleaning, grille paint, deodorizer. Dryer vents cleaned from unit or roof. Full-property walks quoted flat.", items: ["Duct cleaning", "Grille paint", "Dryer vents", "Roof-side vent"], }, { n: "04", kind: "Water", title: "Emergency water damage", body: "24-hour extraction with mildewcide, deodorizer and sanitizing. Blowers, dehumidifiers, ozone and air scrubbers priced per day on-site.", items: ["Extraction", "Pad removal", "Drying equipment", "Mildewcide · ozone"], urgent: true, }, { n: "05", kind: "Property", title: "Full-property services", body: "Property-wide A/C line flushes, dryer-vent campaigns and pool/deck furniture cleaning on request. Bundle pricing for management companies.", items: ["A/C lines", "Dryer vents", "Pool furniture", "Deck washdown"], }, ]; const PROCESS = [ { n: "01", title: "Work order", body: "PM sends unit list, turn date, access notes. We confirm within the hour during business days." }, { n: "02", title: "Site assessment", body: "Tech notes stains, stretch, pad condition and any water events. Scope adjusted before invoice." }, { n: "03", title: "Clean & treat", body: "Pre-condition, extract, deodorize. Deep-stain, repair and pet treatments as flagged." }, { n: "04", title: "QC & turnover", body: "Walk-through photos sent with invoice. Unit ready for move-in inspection the same day." }, ]; const FAQS = [ { q: "How soon can you respond to a water event?", a: "Most calls in Broward or Miami-Dade get a truck on-site within 90 minutes. Overnight and weekend extractions are billed at the standard day rate — no surcharge." }, { q: "Do you invoice per unit or per property?", a: "Either. Most partners run a monthly turn PO against the unit-level rates on their property's card. Full-property work (A/C lines, dryer vent campaigns, pool furniture) is quoted flat." }, { q: "What's included in a standard carpet turn?", a: "Pre-condition, hot-water extraction, deodorizer and a basic spot-treat. Deep stains, stretch, re-seam and pet / urine treatments are add-ons and priced on each property's card." }, { q: "Do you certify for insurance claims?", a: "Yes. For water-damage events we document moisture readings on intake and at release, and itemize extraction volume, pad removal and equipment days so the carrier can match the loss." }, { q: "Is my property not on the list?", a: "Use the Standard rate card as a starting point and call for a walk-through. New multifamily partners get a property-specific card within a week of the first job." }, ];