Careers

Professional pressure washing team from DSH serving Dallas-Fort Worth commercial properties

Careers at DSH Pressure Washing and Roof Cleaning

Join Our Growing Team and Make a Difference in Fort Worth!

At DSH Pressure Washing and Roof Cleaning, we’re more than just a pressure washing company — we’re a team committed to delivering exceptional service, exceeding customer expectations, and giving back to our community. Our dedication to quality and customer care has made us Fort Worth’s trusted name in exterior cleaning, and we’re always looking for motivated, hardworking individuals to help us continue to grow.

If you take pride in your work, enjoy being part of a team, and want a career where your contributions truly matter, DSH Pressure Washing and Roof Cleaning may be the perfect fit.

DSH Pressure Washing technician cleaning commercial property in Dallas Texas

Why Work With Us?

  • Supportive, Team-Oriented Environment
    We believe in fostering a workplace where every team member feels valued and respected. At DSH, teamwork and communication are at the heart of what we do.
  • Opportunities for Growth and Advancement
    As we continue to grow, so do the opportunities. We offer training and development to help you build a long-term career in the pressure washing and exterior cleaning industry.
  • Competitive Pay and Benefits
    We offer competitive wages, with opportunities for bonuses and advancement based on performance and commitment.
  • Make a Difference Locally
    By joining DSH, you’ll help homeowners and business owners maintain and protect their properties while also giving back through our community-focused initiatives, such as toy drives and fundraisers.

Contact Us

Current Opportunities

We’re always accepting applications for the following positions:

  • Pressure Washing Technicians
    Handle residential and commercial cleaning projects with precision and care.
  • Roof Cleaning Specialists
    Help restore and protect our customers’ roofs using safe and effective cleaning methods.
  • Sales & Customer Service Representatives
    Be the face of our company and assist customers with scheduling, service questions, and recommendations.
  • Team Leaders and Crew Supervisors
    Manage job sites and ensure every project meets our standards of excellence.

We want to hear from you if you’re passionate about delivering great service and ready to work hard in a rewarding environment!

Ready to Start Your Career With Us?

Take the first step toward joining a team that values your skills and invests in your future.

Apply today by contacting us at dakkota@dshpressure.com or calling 682-276-5355 to learn more about available positions and how you can become part of the DSH Pressure Washing and Roof Cleaning family.

Contact Us

(function() { 'use strict'; console.log('🔍 Address Autocomplete Script Loading...'); const GOOGLE_API_KEY = 'AIzaSyD347GlhDTwEY2ehrK5iVzZJF0iBeBO8mw'; function loadGooglePlacesAPI() { console.log('📍 Loading Google Places API...'); if (window.google && window.google.maps) { console.log('✅ Google Maps already loaded'); initAutocomplete(); return; } const script = document.createElement('script'); script.src = `https://maps.googleapis.com/maps/api/js?key=${GOOGLE_API_KEY}&libraries=places`; script.async = true; script.defer = true; script.onload = () => { console.log('✅ Google Places API loaded successfully'); initAutocomplete(); }; script.onerror = () => { console.error('❌ Failed to load Google Places API'); }; document.head.appendChild(script); console.log('📡 Google Places API script added to page'); } function initAutocomplete() { console.log('🔍 Looking for address input field...'); let attempts = 0; const checkForm = setInterval(() => { attempts++; console.log(`🔍 Attempt ${attempts}: Searching for address field...`); // Try multiple selectors const selectors = [ 'input[placeholder*="address" i]', 'input[name*="address" i]', 'input[placeholder*="Property Address"]', 'input[name*="Property Address"]', '.elementor-field-type-text input' ]; let addressInput = null; for (const selector of selectors) { addressInput = document.querySelector(selector); if (addressInput) { console.log(`✅ Found address field using selector: ${selector}`, addressInput); break; } } if (addressInput) { clearInterval(checkForm); console.log('✅ Address input found!', addressInput); setupAutocomplete(addressInput); } else if (attempts >= 20) { clearInterval(checkForm); console.error('❌ Could not find address input field after 20 attempts'); console.log('Available inputs:', document.querySelectorAll('input')); } }, 500); } function setupAutocomplete(input) { console.log('🎯 Setting up autocomplete on:', input); try { const options = { types: ['address'], componentRestrictions: { country: 'us' }, fields: ['address_components', 'formatted_address', 'geometry'] }; const autocomplete = new google.maps.places.Autocomplete(input, options); console.log('✅ Autocomplete instance created'); autocomplete.addListener('place_changed', () => { console.log('📍 Place changed event fired'); const place = autocomplete.getPlace(); console.log('Selected place:', place); if (!place.geometry) { console.log('⚠️ No geometry available for:', place.name); return; } const addressData = parseAddressComponents(place.address_components); console.log('Parsed address data:', addressData); input.value = `${addressData.streetNumber} ${addressData.street}, ${addressData.city} ${addressData.state}, ${addressData.zip}`; fillOtherFields(addressData); input.dispatchEvent(new Event('change', { bubbles: true })); console.log('✅ Address filled:', input.value); }); console.log('🎉 Google Places Autocomplete fully initialized!'); } catch (error) { console.error('❌ Error setting up autocomplete:', error); } } function parseAddressComponents(components) { const data = { streetNumber: '', street: '', city: '', state: '', zip: '' }; components.forEach(component => { const types = component.types; if (types.includes('street_number')) data.streetNumber = component.long_name; if (types.includes('route')) data.street = component.long_name; if (types.includes('locality')) data.city = component.long_name; if (types.includes('administrative_area_level_1')) data.state = component.short_name; if (types.includes('postal_code')) data.zip = component.long_name; }); return data; } function fillOtherFields(addressData) { const cityField = document.querySelector('select[name*="city" i], input[name*="city" i]'); if (cityField && addressData.city) { if (cityField.tagName === 'SELECT') { const cityFormatted = addressData.city.toLowerCase().replace(/\s+/g, '_'); const option = Array.from(cityField.options).find( opt => opt.value === cityFormatted || opt.text.toLowerCase() === addressData.city.toLowerCase() ); if (option) { cityField.value = option.value; cityField.dispatchEvent(new Event('change', { bubbles: true })); } } else { cityField.value = addressData.city; cityField.dispatchEvent(new Event('change', { bubbles: true })); } } } // Initialize immediately console.log('🚀 Starting initialization...'); if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', loadGooglePlacesAPI); console.log('⏳ Waiting for DOM to load...'); } else { console.log('✅ DOM already loaded, initializing now'); loadGooglePlacesAPI(); } // Also initialize when popup opens document.addEventListener('elementor/popup/show', () => { console.log('🎯 Elementor popup opened, re-initializing...'); setTimeout(loadGooglePlacesAPI, 500); }); })()