{"id":1495,"date":"2026-03-28T18:03:10","date_gmt":"2026-03-28T18:03:10","guid":{"rendered":"https:\/\/myaiagenthub.com\/?page_id=1495"},"modified":"2026-04-15T20:06:32","modified_gmt":"2026-04-15T20:06:32","slug":"bulk-deal-analyzer","status":"publish","type":"page","link":"https:\/\/myaiagenthub.com\/es\/bulk-deal-analyzer\/","title":{"rendered":"Bulk Deal Analyzer"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1495\" class=\"elementor elementor-1495\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0bb6146 e-flex e-con-boxed e-con e-parent\" data-id=\"0bb6146\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6cde4cb elementor-widget elementor-widget-html\" data-id=\"6cde4cb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t\r\n<!-- DealFlow Bulk Analyzer \u2014 Complete (Email Gate + Analyzer) \u2014 Paste into Elementor HTML Widget -->\r\n<style>\r\n#dfa-root *{box-sizing:border-box;margin:0;padding:0;font-family:Arial,sans-serif;}\r\n\r\n\/* \u2500\u2500 Email Gate Card \u2500\u2500 *\/\r\n#dfa-gate{background:#0a2540;border-radius:14px;padding:32px 24px 26px;max-width:480px;margin:0 auto;text-align:center;}\r\n#dfa-gate .icon{font-size:38px;margin-bottom:12px;display:block;}\r\n#dfa-gate h2{color:#fff;font-size:21px;font-weight:bold;margin-bottom:7px;}\r\n#dfa-gate p{color:#8bb8d4;font-size:13px;margin-bottom:20px;line-height:1.6;}\r\n#dfa-gate input{width:100%;border:2px solid #fff;border-radius:7px;padding:12px 14px;font-size:14px;color:#2a3a4a;background:#fff;outline:none;margin-bottom:10px;}\r\n#dfa-gate input:focus{box-shadow:0 0 0 3px rgba(26,140,255,0.25);}\r\n#dfa-gate .gate-btn{width:100%;background:#1a8cff;color:#fff;border:none;border-radius:7px;padding:12px;font-size:14px;font-weight:bold;cursor:pointer;}\r\n#dfa-gate .gate-btn:hover{background:#0070e0;}\r\n#dfa-gate .gate-error{display:none;color:#f4a261;font-size:12px;margin-bottom:8px;}\r\n\r\n\/* \u2500\u2500 Analyzer (hidden until gate passed) \u2500\u2500 *\/\r\n#dfa-analyzer{display:none;}\r\n#dfa-wrap{background:#0c3057;border-radius:10px;overflow:hidden;max-width:100%;}\r\n#dfa-wrap .hdr{background:#0c3057;padding:14px 18px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;}\r\n#dfa-wrap .hdr-icon{width:36px;height:36px;background:#1a5a9e;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;}\r\n#dfa-wrap .hdr-title{color:#fff;font-size:17px;font-weight:bold;}\r\n#dfa-wrap .hdr-sub{color:#8bb8d4;font-size:12px;margin-top:2px;}\r\n#dfa-wrap .badge{margin-left:auto;background:#d4a017;color:#fff;font-size:11px;font-weight:bold;padding:4px 10px;border-radius:5px;}\r\n#dfa-wrap .body{background:#f5f7fa;padding:14px;}\r\n#dfa-wrap .section{background:#fff;border:1px solid #c5d4e0;border-radius:8px;margin-bottom:12px;overflow:hidden;}\r\n#dfa-wrap .sec-hdr{background:#0c3057;color:#fff;padding:9px 14px;font-size:13px;font-weight:bold;}\r\n#dfa-wrap .sec-body{padding:12px 14px;}\r\n#dfa-wrap .paste-area{width:100%;min-height:90px;border:1px solid #c5d4e0;border-radius:6px;padding:10px;font-size:12px;font-family:monospace;color:#2a3a4a;resize:vertical;background:#f9fbfd;line-height:1.5;}\r\n#dfa-wrap .paste-area::placeholder{color:#9ab;}\r\n#dfa-wrap .hint{font-size:11px;color:#6a8a9a;margin-top:6px;line-height:1.5;}\r\n#dfa-wrap .btn-row{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;}\r\n#dfa-wrap .btn{padding:7px 16px;border:none;border-radius:6px;font-size:12px;font-weight:bold;cursor:pointer;}\r\n#dfa-wrap .btn-primary{background:#0c3057;color:#fff;}\r\n#dfa-wrap .btn-primary:hover{background:#1a5a9e;}\r\n#dfa-wrap .btn-ghost{background:#e8eef3;color:#2a3a4a;}\r\n#dfa-wrap .btn-ghost:hover{background:#d0dce6;}\r\n#dfa-wrap .btn-green{background:#1a7a3a;color:#fff;}\r\n#dfa-wrap .btn-green:hover{background:#155f2d;}\r\n#dfa-wrap .tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;}\r\n#dfa-wrap table{width:100%;border-collapse:collapse;font-size:12px;}\r\n#dfa-wrap th{background:#0c3057;color:#fff;padding:7px 9px;text-align:left;white-space:nowrap;font-weight:bold;font-size:11px;}\r\n#dfa-wrap th:first-child{width:32px;text-align:center;}\r\n#dfa-wrap td{padding:5px 7px;border-bottom:1px solid #e8eef3;vertical-align:middle;}\r\n#dfa-wrap tr:nth-child(even) td{background:#f5f8fb;}\r\n#dfa-wrap tr:hover td{background:#eaf2f8;}\r\n#dfa-wrap td input,#dfa-wrap td select{width:100%;border:1px solid #c5d4e0;border-radius:4px;padding:4px 6px;font-size:12px;background:#fff;color:#2a3a4a;outline:none;}\r\n#dfa-wrap td input:focus,#dfa-wrap td select:focus{border-color:#1a5a9e;}\r\n#dfa-wrap .del-btn{background:none;border:none;cursor:pointer;color:#c0c8d0;font-size:14px;padding:2px 5px;border-radius:3px;}\r\n#dfa-wrap .del-btn:hover{color:#c0392b;background:#fdf0ef;}\r\n#dfa-wrap .tbl-footer{padding:8px 14px;border-top:1px solid #e8eef3;display:flex;gap:10px;align-items:center;flex-wrap:wrap;}\r\n#dfa-wrap .add-btn{background:none;border:none;cursor:pointer;color:#1a5a9e;font-size:12px;font-weight:bold;padding:6px 0;}\r\n#dfa-wrap .add-btn:hover{color:#0c3057;}\r\n#dfa-wrap .results-wrap{display:none;}\r\n#dfa-wrap .res-hdr{background:#1a5a9e !important;}\r\n#dfa-wrap .summary-cards{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:12px;}\r\n#dfa-wrap .s-card{background:#fff;border:1px solid #c5d4e0;border-radius:7px;padding:10px 14px;text-align:center;flex:1;min-width:100px;}\r\n#dfa-wrap .s-card .val{font-size:20px;font-weight:bold;color:#0c3057;margin-bottom:3px;}\r\n#dfa-wrap .s-card .lbl{font-size:10px;color:#6a8a9a;text-transform:uppercase;letter-spacing:.5px;}\r\n#dfa-wrap .buy-val{color:#1a7a3a !important;}\r\n#dfa-wrap .pass-val{color:#c0392b !important;}\r\n#dfa-wrap .maybe-val{color:#d4a017 !important;}\r\n#dfa-wrap .status-buy{background:#d4edda;color:#155724;padding:3px 8px;border-radius:4px;font-weight:bold;font-size:11px;white-space:nowrap;}\r\n#dfa-wrap .status-maybe{background:#fff3cd;color:#856404;padding:3px 8px;border-radius:4px;font-weight:bold;font-size:11px;white-space:nowrap;}\r\n#dfa-wrap .status-pass{background:#f8d7da;color:#721c24;padding:3px 8px;border-radius:4px;font-weight:bold;font-size:11px;white-space:nowrap;}\r\n#dfa-wrap .email-field{display:flex;flex-direction:column;gap:4px;margin-bottom:10px;}\r\n#dfa-wrap .email-field label{font-size:11px;color:#4a6a7a;font-weight:bold;letter-spacing:.3px;}\r\n#dfa-wrap .email-field input{border:1px solid #c5d4e0;border-radius:6px;padding:7px 10px;font-size:13px;color:#2a3a4a;outline:none;width:100%;}\r\n#dfa-wrap .email-field input:focus{border-color:#1a5a9e;}\r\n#dfa-wrap .sent-msg{display:none;background:#d4edda;border:1px solid #b8dbc4;border-radius:6px;padding:10px 14px;font-size:12px;color:#155724;font-weight:bold;margin-top:10px;}\r\n<\/style>\r\n\r\n<div id=\"dfa-root\">\r\n\r\n  <!-- \u2500\u2500 STEP 1: Email Gate \u2500\u2500 -->\r\n  <div id=\"dfa-gate\">\r\n    <span class=\"icon\">&#128202;<\/span>\r\n    <h2>Bulk Deal Analyzer<\/h2>\r\n    <p>Analyze up to 50 properties at once.<br>Enter your email address to get started.<\/p>\r\n    <div class=\"gate-error\" id=\"dfa-gate-error\">Please enter a valid email address.<\/div>\r\n    <input type=\"email\" id=\"dfa-gate-email\" placeholder=\"your@email.com\" onkeydown=\"if(event.key==='Enter')dfaGateSubmit()\">\r\n    <button class=\"gate-btn\" onclick=\"dfaGateSubmit()\">Access Bulk Analyzer &#8594;<\/button>\r\n  <\/div>\r\n\r\n  <!-- \u2500\u2500 STEP 2: Full Analyzer (shown after email submitted) \u2500\u2500 -->\r\n  <div id=\"dfa-analyzer\">\r\n    <div id=\"dfa-wrap\">\r\n\r\n      <!-- Header -->\r\n      <div class=\"hdr\">\r\n        <div class=\"hdr-icon\">&#128202;<\/div>\r\n        <div>\r\n          <div class=\"hdr-title\">DealFlow Bulk Analyzer<\/div>\r\n          <div class=\"hdr-sub\">Paste your spreadsheet or enter properties manually<\/div>\r\n        <\/div>\r\n        <div class=\"badge\" id=\"dfa-badge\">&#11088; Unlimited Access<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"body\">\r\n\r\n        <!-- Paste from Spreadsheet -->\r\n        <div class=\"section\">\r\n          <div class=\"sec-hdr\">&#128203; Paste from Spreadsheet (Excel or Google Sheets)<\/div>\r\n          <div class=\"sec-body\">\r\n            <textarea class=\"paste-area\" id=\"dfa-pasteArea\" placeholder=\"Copy rows from your spreadsheet (Ctrl+C \/ Cmd+C) and paste here. Include the header row so columns are detected automatically.\r\n\r\nExample:\r\nProperty Address    City       State   Zip     Purchase Price   ARV      Repair Cost\r\n123 Oak St          Houston    TX      77001   150000           220000   15000\"><\/textarea>\r\n            <div class=\"hint\">Tip: Column order doesn't matter \u2014 we match by header name. Works with Excel, Google Sheets, and CSV.<\/div>\r\n            <div class=\"btn-row\">\r\n              <button class=\"btn btn-primary\" onclick=\"dfaDetectAndLoad()\">Detect Columns &amp; Load &#8594;<\/button>\r\n              <button class=\"btn btn-ghost\" onclick=\"dfaClearPaste()\">Clear<\/button>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <!-- Manual Entry Table -->\r\n        <div class=\"section\">\r\n          <div class=\"sec-hdr\">&#9998; Enter Properties Manually<\/div>\r\n          <div class=\"tbl-wrap\">\r\n            <table>\r\n              <thead>\r\n                <tr>\r\n                  <th>#<\/th>\r\n                  <th>Property Address<\/th>\r\n                  <th>City<\/th>\r\n                  <th>State<\/th>\r\n                  <th>Zip<\/th>\r\n                  <th>Purchase Price ($)<\/th>\r\n                  <th>Property Type<\/th>\r\n                  <th>Deal Type<\/th>\r\n                  <th>ARV ($)<\/th>\r\n                  <th>Repair Cost ($)<\/th>\r\n                  <th><\/th>\r\n                <\/tr>\r\n              <\/thead>\r\n              <tbody id=\"dfa-tableBody\"><\/tbody>\r\n            <\/table>\r\n          <\/div>\r\n          <div class=\"tbl-footer\">\r\n            <button class=\"add-btn\" onclick=\"dfaAddRow()\">+ Add Row<\/button>\r\n            <button class=\"btn btn-green\" onclick=\"dfaCalculateAll()\">Calculate All Deals &#8594;<\/button>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <!-- Results -->\r\n        <div class=\"results-wrap section\" id=\"dfa-resultsWrap\">\r\n          <div class=\"sec-hdr res-hdr\">&#128200; Analysis Results<\/div>\r\n          <div class=\"sec-body\">\r\n            <div class=\"summary-cards\" id=\"dfa-summaryCards\"><\/div>\r\n            <div class=\"tbl-wrap\">\r\n              <table>\r\n                <thead>\r\n                  <tr>\r\n                    <th>#<\/th>\r\n                    <th>Address<\/th>\r\n                    <th>City<\/th>\r\n                    <th>St<\/th>\r\n                    <th>Property Type<\/th>\r\n                    <th>Deal Type<\/th>\r\n                    <th>Purchase ($)<\/th>\r\n                    <th>ARV ($)<\/th>\r\n                    <th>Repair ($)<\/th>\r\n                    <th>Est. Profit ($)<\/th>\r\n                    <th>MAO ($)<\/th>\r\n                    <th>Status<\/th>\r\n                  <\/tr>\r\n                <\/thead>\r\n                <tbody id=\"dfa-resultsBody\"><\/tbody>\r\n              <\/table>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <!-- Email Results -->\r\n        <div class=\"section\">\r\n          <div class=\"sec-hdr\">&#9993; Email Results<\/div>\r\n          <div class=\"sec-body\">\r\n            <div class=\"email-field\">\r\n              <label>YOUR NAME<\/label>\r\n              <input type=\"text\" id=\"dfa-senderName\" placeholder=\"Your name\">\r\n            <\/div>\r\n            <div class=\"email-field\">\r\n              <label>EMAIL ADDRESS<\/label>\r\n              <input type=\"email\" id=\"dfa-emailAddr\" placeholder=\"your@email.com\">\r\n            <\/div>\r\n            <div class=\"btn-row\">\r\n              <button id=\"dfa-send-btn\" class=\"btn btn-primary\" onclick=\"dfaSendEmail()\">Send Results to My Email &#8594;<\/button>\r\n            <\/div>\r\n            <div class=\"sent-msg\" id=\"dfa-sentMsg\">&#10003; Your results have been sent! Check your inbox.<\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\n  var dfaRows = [];\r\n  var dfaNextId = 1;\r\n  var dfaUserEmail = '';\r\n  var propTypes = ['Residential','Commercial'];\r\n  var dealTypes = ['Flip','Rental','Wholesale','Commercial'];\r\n\r\n  \/* \u2500\u2500 Gate \u2500\u2500 *\/\r\n  window.dfaGateSubmit = function(){\r\n    var email = document.getElementById('dfa-gate-email').value.trim();\r\n    var valid = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(email);\r\n    if(!valid){\r\n      document.getElementById('dfa-gate-error').style.display='block';\r\n      return;\r\n    }\r\n    dfaUserEmail = email;\r\n    document.getElementById('dfa-gate-error').style.display='none';\r\n    document.getElementById('dfa-gate').style.display='none';\r\n    document.getElementById('dfa-analyzer').style.display='block';\r\n    \/\/ Pre-fill email in the results section\r\n    document.getElementById('dfa-emailAddr').value = email;\r\n    \/\/ Badge: unlimited if son's email\r\n    if(email.toLowerCase()==='jhunnicuttt@yahoo.com'){\r\n      document.getElementById('dfa-badge').innerHTML='&#11088; Unlimited Access';\r\n    } else {\r\n      document.getElementById('dfa-badge').innerHTML='&#11088; Pro Access';\r\n    }\r\n    dfaAddRow();\r\n    dfaAddRow();\r\n    dfaAddRow();\r\n  };\r\n\r\n  \/* \u2500\u2500 Table \u2500\u2500 *\/\r\n  window.dfaAddRow = function(data){\r\n    var id = dfaNextId++;\r\n    var r = {\r\n      id:id,\r\n      addr:(data&&data.addr)||'',\r\n      city:(data&&data.city)||'',\r\n      state:(data&&data.state)||'',\r\n      zip:(data&&data.zip)||'',\r\n      price:(data&&data.price)||'',\r\n      propType:(data&&data.propType)||'Residential',\r\n      dealType:(data&&data.dealType)||'Flip',\r\n      arv:(data&&data.arv)||'',\r\n      repair:(data&&data.repair)||''\r\n    };\r\n    dfaRows.push(r);\r\n    dfaRenderTable();\r\n    return r;\r\n  };\r\n\r\n  window.dfaDeleteRow = function(id){\r\n    dfaRows = dfaRows.filter(function(r){return r.id!==id;});\r\n    dfaRenderTable();\r\n  };\r\n\r\n  function dfaSyncRows(){\r\n    dfaRows.forEach(function(r){\r\n      ['addr','city','state','zip','price','propType','dealType','arv','repair'].forEach(function(f){\r\n        var el = document.getElementById('dfa-'+f+'_'+r.id);\r\n        if(el) r[f]=el.value;\r\n      });\r\n    });\r\n  }\r\n\r\n  function dfaEsc(s){\r\n    return String(s||'').replace(\/&\/g,'&amp;').replace(\/\"\/g,'&quot;').replace(\/<\/g,'&lt;').replace(\/>\/g,'&gt;');\r\n  }\r\n\r\n  function dfaRenderTable(){\r\n    var tb = document.getElementById('dfa-tableBody');\r\n    if(!tb) return;\r\n    tb.innerHTML = dfaRows.map(function(r,i){\r\n      return '<tr>'\r\n        +'<td style=\"text-align:center;color:#8a9aa8;\">'+(i+1)+'<\/td>'\r\n        +'<td><input id=\"dfa-addr_'+r.id+'\" value=\"'+dfaEsc(r.addr)+'\" placeholder=\"123 Main St\"><\/td>'\r\n        +'<td><input id=\"dfa-city_'+r.id+'\" value=\"'+dfaEsc(r.city)+'\" placeholder=\"Houston\" style=\"min-width:70px\"><\/td>'\r\n        +'<td><input id=\"dfa-state_'+r.id+'\" value=\"'+dfaEsc(r.state)+'\" placeholder=\"TX\" style=\"max-width:44px\"><\/td>'\r\n        +'<td><input id=\"dfa-zip_'+r.id+'\" value=\"'+dfaEsc(r.zip)+'\" placeholder=\"77001\" style=\"max-width:62px\"><\/td>'\r\n        +'<td><input id=\"dfa-price_'+r.id+'\" value=\"'+dfaEsc(r.price)+'\" placeholder=\"150000\" type=\"number\"><\/td>'\r\n        +'<td><select id=\"dfa-propType_'+r.id+'\">'+propTypes.map(function(t){return '<option'+(r.propType===t?' selected':'')+'>'+t+'<\/option>';}).join('')+'<\/select><\/td>'\r\n        +'<td><select id=\"dfa-dealType_'+r.id+'\">'+dealTypes.map(function(t){return '<option'+(r.dealType===t?' selected':'')+'>'+t+'<\/option>';}).join('')+'<\/select><\/td>'\r\n        +'<td><input id=\"dfa-arv_'+r.id+'\" value=\"'+dfaEsc(r.arv)+'\" placeholder=\"220000\" type=\"number\"><\/td>'\r\n        +'<td><input id=\"dfa-repair_'+r.id+'\" value=\"'+dfaEsc(r.repair)+'\" placeholder=\"15000\" type=\"number\"><\/td>'\r\n        +'<td><button class=\"del-btn\" onclick=\"dfaDeleteRow('+r.id+')\">&#10005;<\/button><\/td>'\r\n        +'<\/tr>';\r\n    }).join('');\r\n  }\r\n\r\n  function dfaFmt(n){\r\n    return Number(n).toLocaleString('en-US',{minimumFractionDigits:0,maximumFractionDigits:0});\r\n  }\r\n\r\n  \/* \u2500\u2500 Calculate \u2500\u2500 *\/\r\n  window.dfaCalculateAll = function(){\r\n    dfaSyncRows();\r\n    var results=[];\r\n    dfaRows.forEach(function(r,i){\r\n      var price=parseFloat(r.price)||0;\r\n      var arv=parseFloat(r.arv)||0;\r\n      var repair=parseFloat(r.repair)||0;\r\n      if(!arv&&!price) return;\r\n      var profit=arv-price-repair;\r\n      var mao=(arv*0.70)-repair;\r\n      var status;\r\n      if(price<=mao) status='BUY';\r\n      else if(price<=mao*1.10) status='MAYBE';\r\n      else status='PASS';\r\n      results.push({addr:r.addr,city:r.city,state:r.state,propType:r.propType,dealType:r.dealType,idx:i+1,price:price,arv:arv,repair:repair,profit:profit,mao:mao,status:status});\r\n    });\r\n    if(!results.length){alert('Please add at least one property with a Purchase Price and ARV.');return;}\r\n\r\n    var buy=results.filter(function(r){return r.status==='BUY';}).length;\r\n    var maybe=results.filter(function(r){return r.status==='MAYBE';}).length;\r\n    var pass=results.filter(function(r){return r.status==='PASS';}).length;\r\n    var totalProfit=results.reduce(function(s,r){return s+(r.status!=='PASS'?r.profit:0);},0);\r\n\r\n    document.getElementById('dfa-summaryCards').innerHTML=\r\n      '<div class=\"s-card\"><div class=\"val\">'+results.length+'<\/div><div class=\"lbl\">Total Deals<\/div><\/div>'\r\n      +'<div class=\"s-card\"><div class=\"val buy-val\">'+buy+'<\/div><div class=\"lbl\">Buy<\/div><\/div>'\r\n      +'<div class=\"s-card\"><div class=\"val maybe-val\">'+maybe+'<\/div><div class=\"lbl\">Maybe<\/div><\/div>'\r\n      +'<div class=\"s-card\"><div class=\"val pass-val\">'+pass+'<\/div><div class=\"lbl\">Pass<\/div><\/div>'\r\n      +'<div class=\"s-card\"><div class=\"val\" style=\"font-size:15px;color:'+(totalProfit>=0?'#1a7a3a':'#c0392b')+'\">'+(totalProfit>=0?'$'+dfaFmt(totalProfit):'-$'+dfaFmt(Math.abs(totalProfit)))+'<\/div><div class=\"lbl\">Est. Profit (Buy\/Maybe)<\/div><\/div>';\r\n\r\n    document.getElementById('dfa-resultsBody').innerHTML=results.map(function(r){\r\n      return '<tr>'\r\n        +'<td style=\"text-align:center;color:#8a9aa8;\">'+r.idx+'<\/td>'\r\n        +'<td>'+dfaEsc(r.addr||'\u2014')+'<\/td>'\r\n        +'<td>'+dfaEsc(r.city||'\u2014')+'<\/td>'\r\n        +'<td>'+dfaEsc(r.state||'\u2014')+'<\/td>'\r\n        +'<td>'+dfaEsc(r.propType)+'<\/td>'\r\n        +'<td>'+dfaEsc(r.dealType)+'<\/td>'\r\n        +'<td>$'+dfaFmt(r.price)+'<\/td>'\r\n        +'<td>$'+dfaFmt(r.arv)+'<\/td>'\r\n        +'<td>$'+dfaFmt(r.repair)+'<\/td>'\r\n        +'<td style=\"color:'+(r.profit>=0?'#1a7a3a':'#c0392b')+';font-weight:bold;\">'+(r.profit>=0?'$'+dfaFmt(r.profit):'-$'+dfaFmt(Math.abs(r.profit)))+'<\/td>'\r\n        +'<td>$'+dfaFmt(r.mao)+'<\/td>'\r\n        +'<td><span class=\"status-'+r.status.toLowerCase()+'\">'+r.status+'<\/span><\/td>'\r\n        +'<\/tr>';\r\n    }).join('');\r\n\r\n    var rw=document.getElementById('dfa-resultsWrap');\r\n    rw.style.display='block';\r\n    rw.scrollIntoView({behavior:'smooth',block:'start'});\r\n  };\r\n\r\n  \/* \u2500\u2500 Paste & Detect \u2500\u2500 *\/\r\n  window.dfaDetectAndLoad = function(){\r\n    var raw=document.getElementById('dfa-pasteArea').value.trim();\r\n    if(!raw){alert('Please paste your spreadsheet data first.');return;}\r\n    var lines=raw.split('\\n').map(function(l){return l.trim();}).filter(function(l){return l;});\r\n    if(!lines.length){alert('No data found. Please paste your spreadsheet rows.');return;}\r\n\r\n    function splitLine(line){\r\n      if(line.indexOf('\\t')!==-1) return line.split('\\t').map(function(s){return s.trim();});\r\n      return line.split(\/  +\/).map(function(s){return s.trim();}).filter(function(s){return s!=='';});\r\n    }\r\n\r\n    function cleanNum(s){\r\n      return String(s).replace(\/[$,\\s]\/g,'');\r\n    }\r\n\r\n    \/\/ Check if first line is a header row (no numbers\/dollar signs)\r\n    var firstCols = splitLine(lines[0]);\r\n    var isHeader = firstCols.some(function(c){\r\n      return \/address|city|state|zip|price|arv|repair|type|deal\/i.test(c);\r\n    });\r\n\r\n    var startRow = isHeader ? 1 : 0;\r\n    var colIdx = {};\r\n\r\n    if(isHeader){\r\n      var headers = firstCols.map(function(h){return h.toLowerCase().replace(\/[^a-z0-9]\/g,' ').trim();});\r\n      var fieldAliases={\r\n        addr:['property address','address','prop address','street'],\r\n        city:['city'],\r\n        state:['state'],\r\n        zip:['zip','zipcode','zip code','postal'],\r\n        price:['purchase price','price','buy price','offer price','cost'],\r\n        propType:['property type','prop type'],\r\n        dealType:['deal type','deal'],\r\n        arv:['arv','after repair value','after repair'],\r\n        repair:['repair cost','repair','rehab','rehab cost','repairs']\r\n      };\r\n      Object.keys(fieldAliases).forEach(function(field){\r\n        fieldAliases[field].forEach(function(alias){\r\n          headers.forEach(function(h,i){\r\n            if(h.indexOf(alias)!==-1&&colIdx[field]===undefined) colIdx[field]=i;\r\n          });\r\n        });\r\n      });\r\n    } else {\r\n      \/\/ No header row \u2014 map by position\r\n      \/\/ Expected order: Address, City, State, Zip, Purchase Price, Property Type, Deal Type, ARV, Repair Cost\r\n      colIdx = {addr:0,city:1,state:2,zip:3,price:4,propType:5,dealType:6,arv:7,repair:8};\r\n    }\r\n\r\n    dfaRows=[]; dfaNextId=1;\r\n    for(var i=startRow;i<lines.length;i++){\r\n      var cols=splitLine(lines[i]);\r\n      if(!cols.length) continue;\r\n      var g=function(f){return colIdx[f]!==undefined?(cols[colIdx[f]]||'').trim():'';};\r\n      var gNum=function(f){return cleanNum(g(f));};\r\n      dfaAddRow({\r\n        addr:g('addr'),city:g('city'),state:g('state'),zip:gNum('zip'),\r\n        price:gNum('price'),\r\n        propType:(g('propType')||'').trim()||'Residential',\r\n        dealType:(g('dealType')||'').trim()||'Flip',\r\n        arv:gNum('arv'),repair:gNum('repair')\r\n      });\r\n    }\r\n    document.getElementById('dfa-pasteArea').value='';\r\n    alert('Loaded '+dfaRows.length+' propert'+(dfaRows.length===1?'y':'ies')+' successfully. Review below, then click Calculate All Deals.');\r\n  };\r\n\r\n  window.dfaClearPaste=function(){document.getElementById('dfa-pasteArea').value='';};\r\n\r\n  \/* \u2500\u2500 Send Email \u2500\u2500 *\/\r\n  window.dfaSendEmail=function(){\r\n    var name=document.getElementById('dfa-senderName').value.trim();\r\n    var email=document.getElementById('dfa-emailAddr').value.trim();\r\n    if(!email){alert('Please enter your email address.');return;}\r\n\r\n    var resultsRows=document.querySelectorAll('#dfa-resultsBody tr');\r\n    if(!resultsRows.length){alert('Please click Calculate All Deals first before sending results.');return;}\r\n\r\n    var deals=[];\r\n    resultsRows.forEach(function(row){\r\n      var cells=row.querySelectorAll('td');\r\n      if(cells.length>=12){\r\n        deals.push({\r\n          address:cells[1].innerText,\r\n          city:cells[2].innerText,\r\n          state:cells[3].innerText,\r\n          propertyType:cells[4].innerText,\r\n          dealType:cells[5].innerText,\r\n          purchasePrice:cells[6].innerText,\r\n          arv:cells[7].innerText,\r\n          repairCost:cells[8].innerText,\r\n          estimatedProfit:cells[9].innerText,\r\n          mao:cells[10].innerText,\r\n          status:cells[11].innerText.trim()\r\n        });\r\n      }\r\n    });\r\n\r\n    var summaryEl=document.getElementById('dfa-summaryCards');\r\n    var cards=summaryEl?summaryEl.querySelectorAll('.s-card'):[];\r\n    var summary={};\r\n    cards.forEach(function(c){\r\n      var lbl=c.querySelector('.lbl');\r\n      var val=c.querySelector('.val');\r\n      if(lbl&&val) summary[lbl.innerText]=val.innerText;\r\n    });\r\n\r\n    var payload={\r\n      name:name,\r\n      email:email,\r\n      summary:summary,\r\n      deals:deals,\r\n      submittedAt:new Date().toISOString()\r\n    };\r\n\r\n    var btn=document.getElementById('dfa-send-btn');\r\n    if(btn){btn.innerText='Sending...';btn.disabled=true;}\r\n\r\n    fetch('https:\/\/hook.us2.make.com\/dfjqoa1f1e965lbu9fr7erj9tdw3a7mj',{\r\n      method:'POST',\r\n      headers:{'Content-Type':'application\/json'},\r\n      body:JSON.stringify(payload)\r\n    }).then(function(){\r\n      var msg=document.getElementById('dfa-sentMsg');\r\n      msg.style.display='block';\r\n      if(btn){btn.innerText='Send Results to My Email \u2192';btn.disabled=false;}\r\n      setTimeout(function(){msg.style.display='none';},5000);\r\n    }).catch(function(){\r\n      alert('There was a problem sending your results. Please try again.');\r\n      if(btn){btn.innerText='Send Results to My Email \u2192';btn.disabled=false;}\r\n    });\r\n  };\r\n\r\n})();\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>&#128202; Bulk Deal Analyzer Analyze up to 50 properties at once.Enter your email address to get started. Please enter a valid email address. Access Bulk Analyzer &#8594; &#128202; DealFlow Bulk Analyzer Paste your spreadsheet or enter properties manually &#11088; Unlimited Access &#128203; Paste from Spreadsheet (Excel or Google Sheets) Tip: Column order doesn&#8217;t matter \u2014 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1495","page","type-page","status-publish","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/myaiagenthub.com\/es\/wp-json\/wp\/v2\/pages\/1495","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/myaiagenthub.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/myaiagenthub.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/myaiagenthub.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/myaiagenthub.com\/es\/wp-json\/wp\/v2\/comments?post=1495"}],"version-history":[{"count":72,"href":"https:\/\/myaiagenthub.com\/es\/wp-json\/wp\/v2\/pages\/1495\/revisions"}],"predecessor-version":[{"id":2060,"href":"https:\/\/myaiagenthub.com\/es\/wp-json\/wp\/v2\/pages\/1495\/revisions\/2060"}],"wp:attachment":[{"href":"https:\/\/myaiagenthub.com\/es\/wp-json\/wp\/v2\/media?parent=1495"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}