Transform Your Space with Expert Home Improvement Solutions

Discover unbeatable deals on high-quality home improvement supplies. Transform your space with expert help at The Home Improvement Outlet—where your dream home becomes reality.

gray fabric loveseat near brown wooden table

Explore Our Wide Range of Home Improvement Services

Discover a full spectrum of home improvement solutions tailored to enhance the beauty and functionality of your home. From remodeling to landscaping, trust us to elevate your space.

Explore Services for Every Home Need

Explore a wide range of customizable home improvement solutions tailored to fit your lifestyle and enhance your living space.

assorted-color handheld tools

Custom Kitchen and Bath Remodeling

Custom Kitchen & Bath Remodeling: Tailored designs and installations to upgrade your kitchen and bathroom with a choice of modern or classic styles for functionality and aesthetics.

assorted-color handheld tools
a stethoscope surrounded by hearts on a white surface
a stethoscope surrounded by hearts on a white surface

Diverse Flooring Installation Options

Explore our array of flooring options including hardwood, laminate, and tile. Expert installation and advice also provided to suit your home's unique style and requirements.

white ceramic sink near white ceramic sink

Expert Color Matching Service

Get expert color matching technology and personalized consultations to ensure your home reflects your style with the perfect palette.

white ceramic sink near white ceramic sink
boy in black hoodie writing on white paper
boy in black hoodie writing on white paper

Outdoor Spaces Enhanced

DIY Workshops: We offer hands-on classes for various DIY projects, teaching skills from basic repairs to advanced home renovations.

Testimonials

Jasmine Richards

Just remodeled my kitchen with The Home Improvement Outlet. Loved the paint consultation—totally nailed the vibe we wanted. Highly recommend their thorough, friendly service!

Monica Chandler

Tried several places for paint and flooring; none match The Home Improvement Outlet's precision color-matching and quality flooring range. Highly recommend for upping your home's game.

Thomas Krazinski

Used their outdoor landscaping service — quite satisfactory. The new patio and garden arrangement gave the backyard a serene and polished look. Quite pleased, overall.

FAQs

Got Questions? Find All Your Answers Right Here!

Do you offer warranties on your services and products?

Yes, we provide comprehensive warranties for both products and labor. Specific details vary by product type.

Can I get financing options for my home improvement project?

Absolutely! We offer a range of financing options to suit your budget and project needs.

Are your contractors licensed and insured?

Yes, all contractors working through The Home Improvement Outlet are fully licensed and insured.

Do you provide in-home consultations

Yes, we provide free in-home consultations to assess your needs and provide a tailored solution

I'm looking for a specific brand/product. Can you special order items?

We can special order a wide range of products if we do not currently stock them. Just let us know what you need, and we'll handle the rest.

What is your return policy?

Products can be returned within 30 days of purchase if they are unopened and in original condition.

// Construction Plan Material Calculator for GoHighLevel // This can be embedded in a custom HTML/JS section of your funnel // Materials database with pricing const materialsDB = { foundation: { concrete: { description: "Concrete (cubic yards)", price: 110.00 }, rebar58: { description: "#5 5/8\" X 20' REBAR GRADE 60", price: 12.99 }, rebar38: { description: "#3 3/8\" X 20' REBAR GRADE 60", price: 5.59 }, wireMesh: { description: "WIRE MESH MATT - REINFORCING 8x20 10ga", price: 30.88 }, formBoards: { description: "2 x 12 - 16' #2 YELLOW PINE S4S", price: 37.15 }, stakes: { description: "WOOD STAKE 20PC BUNDLE", price: 68.99 }, visqueen: { description: "VISQUEEN CLEAR BUILDERS PLASTIC 20 x 100 6mil", price: 99.99 }, anchorBolts: { description: "ANCHOR BOLT GALV W/NUT&WASHER 50PC BOX", price: 69.50 } }, framing: { studs: { description: "2 x 4 - 16' SPF #2 & BTR SDRY HT S4S", price: 7.10 }, studs104: { description: "2 x 4 - (9) 104-5/8\" PREMIUM STUD SPF S4S", price: 4.65 }, plates: { description: "2 x 6 - 16' #2 YELLOW PINE S4S", price: 8.55 }, headers: { description: "2 x 8 - 10' #2 YELLOW PINE S4S", price: 6.46 }, beams: { description: "2 x 12 - 16' #2 YELLOW PINE S4S", price: 37.15 } }, sheathing: { osb: { description: "OSB - 7/16 RATED SHEATHING 4 X 8", price: 10.69 }, houseWrap: { description: "HOUSE WRAP - HIO LOGO PERMAPRO 9 ft x 150 ft", price: 74.76 } }, roofing: { shingles: { description: "TAMKO HERITAGE WEATHERWOOD LIFETIME WARRANTY", price: 30.50 }, felt: { description: "FELT - CP-15 40\"X300' SYNTHETIC", price: 68.88 }, ridgeVent: { description: "RIDGE VENT - TAMKO COOL RIDGE SHINGLE", price: 9.46 } }, drywall: { drywall12: { description: "GYPSUM - 1/2\" DRYWALL PANEL 48 x 144", price: 28.02 }, drywall58: { description: "GYPSUM - 5/8\" Fire-Shield® DRYWALL PANEL 48 x 144", price: 19.28 } } }; // Customer and quote information let customerInfo = { name: "", address: "", city: "", state: "", zip: "", phone: "", poNumber: "" }; let quoteInfo = { quoteNumber: generateQuoteNumber(), date: new Date().toLocaleDateString(), taxRate: 10.99 }; // Initialize the quote items let quoteItems = []; let groupTotals = {}; // Helper Functions function generateQuoteNumber() { const timestamp = new Date().getTime().toString().slice(-10); return `WM${timestamp}`; } function calculateSquareFootage(length, width) { return length * width; } function calculatePerimeter(length, width) { return 2 * (length + width); } function calculateFoundationMaterials(squareFootage, perimeter, footingDepth = 1, footingWidth = 2) { const footingVolume = (perimeter * footingDepth * footingWidth) / 27; // cubic yards const slabVolume = (squareFootage * (4/12)) / 27; // 4" slab in cubic yards const totalConcrete = Math.ceil(footingVolume + slabVolume); // Rebar calculation (3 continuous bars in footing) const rebar5Count = Math.ceil((perimeter * 3) / 20); // 20' lengths const rebar3Count = Math.ceil((perimeter / 2) / 7); // Ties every 24" // Wire mesh for slab const wireMeshSheets = Math.ceil(squareFootage / 160); // 8'x20' sheets // Form boards const formBoardLength = perimeter * 2; // Both sides const formBoardCount = Math.ceil(formBoardLength / 16); // 16' boards // Stakes - every 4' const stakeCount = Math.ceil((perimeter / 4) * 2); const stakeBundles = Math.ceil(stakeCount / 20); // 20 per bundle // Vapor barrier const vaporBarrierRolls = Math.ceil(squareFootage / 2000); // 20'x100' rolls // Anchor bolts const anchorBoltCount = Math.ceil(perimeter / 6) + 4; // Every 6' plus corners const anchorBoltBoxes = Math.ceil(anchorBoltCount / 50); // 50 per box return { concrete: totalConcrete, rebar58: rebar5Count, rebar38: rebar3Count, wireMesh: wireMeshSheets, formBoards: formBoardCount, stakes: stakeBundles, visqueen: vaporBarrierRolls, anchorBolts: anchorBoltBoxes }; } function calculateFramingMaterials(squareFootage, perimeter, wallHeight = 9, interiorWallLength = 0) { // Estimate interior wall length if not provided if (interiorWallLength === 0) { interiorWallLength = squareFootage / 70; // Rough estimate } // Wall studs - 16" on center const totalWallLength = perimeter + interiorWallLength; const studCount = Math.ceil((totalWallLength * 12) / 16); // Add extra for corners, openings (windows/doors) const windowCount = Math.ceil(squareFootage / 200); // Rough estimate const doorCount = Math.ceil(squareFootage / 350); // Rough estimate const extraStuds = (Math.ceil(perimeter / 25) * 2) + (windowCount * 3) + (doorCount * 2); const totalStuds = studCount + extraStuds; // Headers for openings const headerCount = windowCount + doorCount; // Plates - double top plate and single bottom plate const plateLength = totalWallLength * 3; // Double top, single bottom const plateCount = Math.ceil(plateLength / 16); // 16' lengths // Sheathing const exteriorWallArea = perimeter * wallHeight; const sheathingSheets = Math.ceil((exteriorWallArea * 1.15) / 32); // 4'x8' sheets with waste // House wrap const houseWrapRolls = Math.ceil((exteriorWallArea * 1.1) / (9 * 150)); // 9' x 150' rolls with overlap return { studs: Math.ceil(totalStuds * 0.7), // Standard studs studs104: Math.ceil(totalStuds * 0.3), // Precut studs plates: plateCount, headers: headerCount, beams: Math.ceil(squareFootage / 500), // Rough estimate for support beams sheathing: sheathingSheets, houseWrap: houseWrapRolls }; } function calculateRoofingMaterials(squareFootage, roofPitch = 4/12) { // Adjust square footage for pitch const pitchFactor = Math.sqrt(1 + Math.pow(roofPitch, 2)); const roofArea = squareFootage * pitchFactor * 1.15; // Add 15% for overhangs // Convert to "squares" (100 sq ft) const roofSquares = Math.ceil(roofArea / 100); // Shingles - 3 bundles per square const shingleBundles = roofSquares * 3; // Felt/underlayment const feltRolls = Math.ceil(roofArea / 1000); // 1000 sq ft per roll // Ridge vent - estimate ridge length const ridgeLength = Math.sqrt(squareFootage) * 1.5; // Rough estimate const ridgeVentCount = Math.ceil(ridgeLength / 4); // 4' sections return { shingles: shingleBundles, felt: feltRolls, ridgeVent: ridgeVentCount }; } function calculateDrywallMaterials(squareFootage, wallHeight = 9, interiorWallLength = 0) { // Estimate interior wall length if not provided if (interiorWallLength === 0) { interiorWallLength = squareFootage / 70; // Rough estimate } // Total wall length const totalWallLength = interiorWallLength + (calculatePerimeter(Math.sqrt(squareFootage), Math.sqrt(squareFootage))); // Wall area const wallArea = totalWallLength * wallHeight; // Total drywall area (walls + ceiling) const totalArea = wallArea + squareFootage; // 4'x8' sheets with 10% waste const sheetCount = Math.ceil((totalArea * 1.1) / 32); // Split between 1/2" and 5/8" (5/8" typically for ceilings and fire-rated walls) const drywall12Count = Math.ceil(sheetCount * 0.7); const drywall58Count = Math.ceil(sheetCount * 0.3); return { drywall12: drywall12Count, drywall58: drywall58Count }; } function calculateFullMaterialsList(dimensions) { const squareFootage = calculateSquareFootage(dimensions.length, dimensions.width); const perimeter = calculatePerimeter(dimensions.length, dimensions.width); // Calculate materials by category const foundationMaterials = calculateFoundationMaterials(squareFootage, perimeter); const framingMaterials = calculateFramingMaterials(squareFootage, perimeter, dimensions.wallHeight); const roofingMaterials = calculateRoofingMaterials(squareFootage); const drywallMaterials = calculateDrywallMaterials(squareFootage, dimensions.wallHeight); // Clear existing items quoteItems = []; groupTotals = { foundation: 0, framing: 0, sheathing: 0, roofing: 0, drywall: 0 }; // Add foundation materials addGroupHeader("FOUNDATION GROUP"); for (const [key, quantity] of Object.entries(foundationMaterials)) { if (quantity > 0) { addItemToQuote(key, "foundation", quantity); } } addGroupTotal("foundation"); // Add framing materials addGroupHeader("1ST FLOOR FRAMING GROUP"); for (const [key, quantity] of Object.entries(framingMaterials)) { if (quantity > 0 && key !== "sheathing" && key !== "houseWrap") { addItemToQuote(key, "framing", quantity); } } addGroupTotal("framing"); // Add sheathing materials addGroupHeader("WALL SHEATHING GROUP"); addItemToQuote("osb", "sheathing", framingMaterials.sheathing); addItemToQuote("houseWrap", "sheathing", framingMaterials.houseWrap); addGroupTotal("sheathing"); // Add roofing materials addGroupHeader("ROOFING MATERIALS GROUP"); for (const [key, quantity] of Object.entries(roofingMaterials)) { if (quantity > 0) { addItemToQuote(key, "roofing", quantity); } } addGroupTotal("roofing"); // Add drywall materials addGroupHeader("SHEETROCK GROUP"); for (const [key, quantity] of Object.entries(drywallMaterials)) { if (quantity > 0) { addItemToQuote(key, "drywall", quantity); } } addGroupTotal("drywall"); return quoteItems; } function addGroupHeader(groupName) { quoteItems.push({ quantity: "", uom: "", item: `** ${groupName} **`, description: "", price: "", amount: "" }); } function addItemToQuote(itemKey, category, quantity) { const material = materialsDB[category][itemKey]; const amount = quantity * material.price; quoteItems.push({ quantity: quantity, uom: getUOMForItem(itemKey), item: itemKey.toUpperCase(), description: material.description, price: `${material.price.toFixed(2)}/PC`, amount: amount.toFixed(2) }); // Add to group total groupTotals[category] += amount; } function getUOMForItem(itemKey) { // Unit of Measure mapping const uomMap = { concrete: "YARD", rebar58: "PC", rebar38: "PC", wireMesh: "PC", formBoards: "PC", stakes: "BDL", visqueen: "ROL", anchorBolts: "BOX", studs: "PC", studs104: "PC", plates: "PC", headers: "PC", beams: "PC", osb: "PC", houseWrap: "ROL", shingles: "BDL", felt: "ROL", ridgeVent: "EA", drywall12: "PC", drywall58: "PC" }; return uomMap[itemKey] || "PC"; } function addGroupTotal(category) { quoteItems.push({ quantity: "", uom: "", item: "** GROUP TOTAL **", description: "", price: "", amount: `-----------\n${groupTotals[category].toFixed(2)}\n-----------` }); } function generateQuote(materials) { // Calculate subtotal let subtotal = 0; Object.values(groupTotals).forEach(total => { subtotal += total; }); // Calculate tax const tax = subtotal * (quoteInfo.taxRate / 100); // Calculate total const total = subtotal + tax; // Format quote return { quoteNumber: quoteInfo.quoteNumber, date: quoteInfo.date, customer: customerInfo, items: quoteItems, subtotal: subtotal.toFixed(2), taxRate: quoteInfo.taxRate, tax: tax.toFixed(2), total: total.toFixed(2) }; } function formatQuoteForDisplay(quote) { let quoteHTML = `

QUOTE #${quote.quoteNumber}

The Home Improvement Outlet

1422 Natchitoches
West Monroe, LA 71292
Phone: (318)-325-3400

BILL TO:

${quote.customer.name}
${quote.customer.address}
${quote.customer.city}, ${quote.customer.state} ${quote.customer.zip}

SHIP TO:

${quote.customer.name}
${quote.customer.address}
${quote.customer.city}, ${quote.customer.state} ${quote.customer.zip}

`; quote.items.forEach(item => { if (item.item.includes("** GROUP TOTAL **") || item.item.includes("** GROUP **")) { quoteHTML += ` `; } else { quoteHTML += ` `; } }); quoteHTML += `
QUANTITY UOM ITEM/DESCRIPTION PRICE/UOM AMOUNT
${item.item} ${item.amount}
${item.quantity} ${item.uom} ${item.item}
${item.description}
${item.price} ${item.amount}

SUBTOTAL: $${quote.subtotal}

TAX (${quote.taxRate}%): $${quote.tax}

TOTAL: $${quote.total}

Although we do our best to provide accurate quotes, all quantities and sizes are subject to job site verification, which is the responsibility of the buyer. We will not be responsible for quantity, sizing or pricing errors. Merchandise sold as is no warranty expressed or implied. All warranties are that of the manufacture not of the seller. Buyer accepts the products "As Is". All escalations beyond 10 days are for budgetary purposes only.

PAYMENT TERMS: DUE 10TH DAY OF MONTH

`; return quoteHTML; } // HTML Form and UI functions - This is what you'd embed in GoHighLevel function createMaterialCalculatorHTML() { return `

Construction Material Calculator

Customer Information

Building Dimensions

`; } // Initialize when loaded function initMaterialCalculator() { // Find the container element where the calculator should be inserted const container = document.getElementById('material-calculator-container'); if (container) { container.innerHTML = createMaterialCalculatorHTML(); } else { console.error('Container element not found. Add a div with id="material-calculator-container" to your page.'); } } // Usage instructions: // 1. Add this script to your GoHighLevel custom HTML section // 2. Add a div with id="material-calculator-container" where you want the calculator to appear // 3. Call initMaterialCalculator() when the page loads