So Icy Air Logo

Is Your A/C System Down? We Can Help.

Stay cool in the summer and warm in the winter with So Icy Air. We are experts at HVAC installs, fast repairs, and honest, affordable service.

Financing Available – Ask us about our flexible payment plans

Need Help with your Air Conditioner? We're on our Way.


Nevil, Owner of So Icy Air

About So Icy Air

At So Icy Air, we’re proud to be more than an HVAC company: we’re a team built on experience, dedication, and a passion for keeping our customers comfortable year-round. Our story began with humble roots in Suriname, where our founder discovered his passion for air conditioning at just 12 years old, working alongside his father on weekends while studying economics during the week.

By 18, he had already launched his own AC business, gaining hands-on experience in installation, maintenance, and customer care. After moving to the United States in 2019, that same drive for excellence led to a leadership role as a Field Supervisor for one of the nation’s largest HVAC companies — training technicians and ensuring quality across every job.

That experience inspired the creation of So Icy Air, a company dedicated to bringing that same level of expertise, professionalism, and reliability to every customer we serve.

With over 12 years of experience in the HVAC industry, So Icy Air specializes in mini-splits, central air systems, and corrosion-protected installations designed for Florida’s demanding climate. We offer flexible scheduling, expert workmanship, and a 100% satisfaction guarantee on every project — from simple tune-ups to full system replacements. At So Icy Air, we believe in doing the job right the first time, treating every home as if it were our own, and keeping our customers cool, comfortable, and confident year-round.

Now Partnering with Rheem

Looking for an energy-efficient upgrade? So Icy Air is now an official Rheem partner, offering trusted 16 SEER and 18 SEER systems (the 18 can reach up to 19 SEER with the right matched components).— with new 21 SEER high-efficiency models launching soon. These units are built for Florida's climate: being reliable, efficient, and perfectly designed to handle the local heat.

We install Rheem side-discharge condensers paired with a central air handler—a compact, quiet, space-saving alternative to bulky top-discharge units.

Ask us about the best options for your space and we'll help you save on monthly cooling costs, all without sacrificing on quality or reliability.

Read more about our new SEER systems and how you can enjoy affordable cooling through the year!

Rheem HVAC Systems

Our HVAC Services

Duct Repairs

Duct Repairs

Seal leaks and restore efficiency to your existing ductwork.

Duct Replacement

Duct Replacement

Full system ductwork replacement for better airflow and performance.

System Repairs

System Repairs

Fast diagnostics and repairs for broken or malfunctioning HVAC systems.

System Replacement

System Replacement

Upgrade to a new high-efficiency HVAC unit tailored to your home.

Corrosion Prevention

Corrosion Prevention

Protect your system from salty beachside air with anti-corrosion solutions.

Air Quality Improvement

Air Quality Improvement

Filters, purifiers, and UV systems to help you breathe cleaner air.

Preventive Maintenance

Mini-Split Repairs

Expert repairs for ductless mini-split systems. Fast fixes for leaks, sensor issues, and low cooling power.

(321) 479-5843 Free Quote

Why Choose So Icy Air?

Certified Technicians

All of our HVAC pros are licensed, insured, and trained to handle any system.

Same-Day Appointments

We offer fast scheduling and flexible hours to meet your needs.

24/7 Emergency Support

Air not working? We're available around the clock to get your system back on track.

Energy-Efficient Options

We install smart thermostats and high-SEER units to help you save on energy bills.

Our Reviews

★★★★★ 5.0 rating for 30+ reviews

Serving the Following Areas

<script> (function() { // ============================================================================ // LEO Page Builder - Iframe Communication Script // ============================================================================ // This script handles postMessage communication for the LEO page builder system. // // IMPORTANT: Origin-Based Message Routing // ======================================== // There are TWO iframe communication systems in LlamaPress that both use // { source: 'leonardo' } messages: // // 1. LEONARDO (Full App Builder) - localhost:8000 -> localhost:3000 // - Parent: LlamaBot/FastAPI at localhost:8000 // - Child: Rails app at localhost:3000 // - message_handler.js handles these (cross-origin) // // 2. LEO (Page Builder) - localhost:3000 -> localhost:3000 // - Parent: /pages/:id/chat at localhost:3000 // - Child: /pages/:id/preview at localhost:3000 (THIS PAGE) // - THIS SCRIPT handles these messages (same-origin) // // We distinguish between them by checking event.origin: // - Same-origin (localhost:3000) = Leo -> respond HERE // - Cross-origin (localhost:8000) = Leonardo -> ignore here, let message_handler.js handle it // ============================================================================ // DEBUG: Log when this script runs console.log("[page.html.erb] Script starting, will set view_path to: app/views/pages/home.html.erb"); // Wrap in IIFE to avoid global scope pollution and redeclaration errors if (window.leonardoScriptLoaded) { console.log("[page.html.erb] Already loaded, skipping"); return; } window.leonardoScriptLoaded = true; // Set page metadata from server-side variables (injected above) // These come from Rails @view_path which contains the actual view file path window.page_loaded_at = 1789937890.982142; window.request_path = "/"; window.view_path = "app/views/pages/home.html.erb"; console.log("[page.html.erb] Set window.view_path =", window.view_path); // Initialize full_html on DOMContentLoaded window.addEventListener('DOMContentLoaded', () => { window.full_html = document.documentElement.outerHTML; console.log("[page.html.erb] Page metadata initialized:", { request_path: window.request_path, view_path: window.view_path, page_loaded_at: window.page_loaded_at }); }); // Also set full_html immediately if DOM is already loaded if (document.readyState === 'loading') { // DOMContentLoaded hasn't fired yet, wait for it } else { // DOM is already loaded window.full_html = document.documentElement.outerHTML; console.log("[page.html.erb] Page metadata initialized (DOM already loaded):", { request_path: window.request_path, view_path: window.view_path, page_loaded_at: window.page_loaded_at }); } window.addEventListener("message", (event) => { // Only process messages with source 'leonardo' if (event.data.source !== 'leonardo') { return; } // CRITICAL: Only respond to SAME-ORIGIN messages (from Leo chat at localhost:3000) // Cross-origin messages (from Leonardo at localhost:8000) are handled by // message_handler.js (loaded via importmap in application.js), not here. // This prevents duplicate responses and ensures correct view_path values. if (event.origin !== window.location.origin) { console.log("[page.html.erb] Ignoring cross-origin message (handled by message_handler.js):", event.origin); return; } console.log("[page.html.erb] Processing same-origin message from Leo:", event.data); // Handle element selector commands if (event.data.type === 'enable-element-selector') { window.enableElementSelector(); return; } if (event.data.type === 'disable-element-selector') { window.disableElementSelector(); return; } // Handle debug info request (this is the main message type Leonardo sends) if (event.data.type === 'get_debug_info') { // Ensure we have the most up-to-date HTML content window.full_html = document.documentElement.outerHTML; console.log("Sending debug info back to Leonardo:", { request_path: window.request_path, view_path: window.view_path, page_loaded_at: window.page_loaded_at }); // Validate that we have current data if (!window.request_path || !window.view_path) { console.warn("Missing request_path or view_path - page may not be fully loaded"); } event.source.postMessage({ source: 'llamapress', full_html: window.full_html, request_path: window.request_path, view_path: window.view_path, page_loaded_at: window.page_loaded_at }, event.origin); return; } console.log("Unhandled message type:", event.data.type); }); // Element Selector functionality let elementSelectorEnabled = false; let elementSelectorStyles = null; let currentHighlightedElement = null; window.enableElementSelector = function() { if (elementSelectorEnabled) return; elementSelectorEnabled = true; console.log('Element selector enabled'); // Inject styles for hover highlighting elementSelectorStyles = document.createElement('style'); elementSelectorStyles.id = 'element-selector-styles'; elementSelectorStyles.textContent = ` .element-selector-highlight { outline: 2px solid #4CAF50 !important; outline-offset: 2px !important; background-color: rgba(76, 175, 80, 0.1) !important; cursor: crosshair !important; } .element-selector-active * { cursor: crosshair !important; } `; document.head.appendChild(elementSelectorStyles); // Mark body as active document.body.classList.add('element-selector-active'); // Add event listeners document.addEventListener('mousemove', handleElementSelectorMouseMove, true); document.addEventListener('click', handleElementSelectorClick, true); }; window.disableElementSelector = function() { if (!elementSelectorEnabled) return; elementSelectorEnabled = false; console.log('Element selector disabled'); // Remove styles if (elementSelectorStyles) { elementSelectorStyles.remove(); elementSelectorStyles = null; } // Remove body class document.body.classList.remove('element-selector-active'); // Remove highlight from current element if (currentHighlightedElement) { currentHighlightedElement.classList.remove('element-selector-highlight'); currentHighlightedElement = null; } // Remove event listeners document.removeEventListener('mousemove', handleElementSelectorMouseMove, true); document.removeEventListener('click', handleElementSelectorClick, true); }; function handleElementSelectorMouseMove(event) { const target = event.target; if (!target || target.tagName === 'HTML' || target.tagName === 'BODY') { return; } // Remove highlight from previous element if (currentHighlightedElement && currentHighlightedElement !== target) { currentHighlightedElement.classList.remove('element-selector-highlight'); } // Add highlight to current target target.classList.add('element-selector-highlight'); currentHighlightedElement = target; } function handleElementSelectorClick(event) { event.preventDefault(); event.stopPropagation(); const target = event.target; if (!target || target.tagName === 'HTML' || target.tagName === 'BODY') { return; } // Extract text content for display let textContent = extractElementText(target); // Get the outerHTML for the LLM let outerHTML = target.outerHTML; // Send selected element data to parent window.parent.postMessage({ source: 'element-selector', type: 'element-selected', text: textContent, html: outerHTML }, '*'); // Visual feedback showSelectionFeedback(target); } function extractElementText(element) { // Get text content and clean it up let text = element.textContent || element.innerText || ''; text = text.trim(); // If text is too long, truncate it if (text.length > 200) { text = text.substring(0, 200) + '...'; } // If element has no text, try to describe it if (!text) { const tagName = element.tagName.toLowerCase(); const className = element.className ? `.${element.className.split(' ')[0]}` : ''; const id = element.id ? `#${element.id}` : ''; text = `${tagName}${id}${className} element`; } return text; } function showSelectionFeedback(element) { const originalOutline = element.style.outline; const originalBackground = element.style.backgroundColor; element.style.outline = '3px solid #4CAF50'; element.style.backgroundColor = 'rgba(76, 175, 80, 0.3)'; setTimeout(() => { element.style.outline = originalOutline; element.style.backgroundColor = originalBackground; }, 300); } console.log("[page.html.erb] Leo iframe communication script loaded!"); })(); </script> </body>