{"id":7,"date":"2026-08-31T17:35:58","date_gmt":"2026-08-31T17:35:58","guid":{"rendered":"https:\/\/weldcalcpro.com\/?page_id=7"},"modified":"2026-09-27T00:35:59","modified_gmt":"2026-09-27T00:35:59","slug":"elementor-7","status":"publish","type":"page","link":"https:\/\/weldcalcpro.com\/","title":{"rendered":"WeldCalcPro \u2013 Welding Calculators &#038; Preliminary pWPS Generator"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"7\" class=\"elementor elementor-7\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b3c2e15 e-con e-atomic-element e-flexbox-base e-c99a477 \" data-id=\"b3c2e15\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"b3c2e15\">\n    \t\t\t<h1 data-interaction-id=\"47387b5\" class=\"e-47387b5-06e22b3 e-heading-base\">Create preliminary pWPS drafts.<br>Backed by traceable welding calculations.<\/h1>\n\t\t\t\t\t<a href=\"#wcp-app\" target=\"_self\" class=\"e-9cfa6d0-d8b331a e-button-base\" data-interaction-id=\"9cfa6d0\">\n\t\tBuild a preliminary pWPS\n\t<\/a>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-aab0deb e-con e-atomic-element e-flexbox-base e-f664553 \" data-id=\"aab0deb\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"aab0deb\">\n    \t\t\t<h2 data-interaction-id=\"8c194e7\" class=\"e-8c194e7-744b672 e-heading-base\">Preliminary pWPS Generator<br>ISO \u00b7 ASME \u00b7 AWS guided inputs<\/h2>\n\t\t\t\t<div class=\"elementor-element elementor-element-cd6e8a5 elementor-widget elementor-widget-html\" data-id=\"cd6e8a5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n#wcp-app,\n#wcp-app * {\n  box-sizing: border-box;\n}\n\n#wcp-app {\n  max-width: 1100px;\n  margin: 35px auto;\n  font-family: Arial, Helvetica, sans-serif;\n  color: #172033;\n}\n\n.wcp-card {\n  background: #fff;\n  border: 1px solid #e2e8f0;\n  border-radius: 18px;\n  overflow: hidden;\n  box-shadow: 0 12px 35px rgba(15,23,42,.08);\n}\n\n.wcp-header {\n  padding: 28px 32px;\n  background: linear-gradient(135deg,#0f172a,#1e3a8a);\n  color: #fff;\n}\n\n.wcp-header h2 {\n  margin: 0 !important;\n  color: #fff !important;\n  font-size: 30px !important;\n}\n\n.wcp-header p {\n  margin: 10px 0 0;\n  color: #dbeafe;\n}\n\n.wcp-form {\n  padding: 30px 32px;\n}\n\n.wcp-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 20px 24px;\n}\n\n.wcp-field {\n  display: flex;\n  flex-direction: column;\n  gap: 7px;\n}\n\n.wcp-field label {\n  font-size: 14px;\n  font-weight: 700;\n  color: #334155;\n}\n\n.wcp-field input,\n.wcp-field select {\n  width: 100%;\n  min-height: 52px;\n  padding: 12px 15px;\n  border: 1px solid #cbd5e1;\n  border-radius: 10px;\n  background: #f8fafc;\n  font-size: 15px;\n  color: #0f172a;\n}\n\n.wcp-field input:focus,\n.wcp-field select:focus {\n  outline: none;\n  border-color: #2563eb;\n  background: #fff;\n}\n\n.wcp-guidance {\n  margin-top: 20px;\n  padding: 14px 16px;\n  border: 1px solid #bfdbfe;\n  border-radius: 10px;\n  background: #eff6ff;\n  color: #1e3a8a;\n  font-size: 13px;\n  line-height: 1.55;\n}\n\n#wcp-generate {\n  margin-top: 20px;\n  min-height: 54px;\n  padding: 0 28px;\n  border: 0;\n  border-radius: 10px;\n  background: #2563eb;\n  color: #fff;\n  font-size: 16px;\n  font-weight: 800;\n  cursor: pointer;\n}\n\n#wcp-generate:disabled {\n  opacity: .65;\n  cursor: wait;\n}\n\n#wcp-status {\n  display: none;\n  margin-top: 18px;\n  padding: 14px 16px;\n  border-radius: 10px;\n  font-weight: 700;\n  line-height: 1.5;\n  word-break: break-word;\n}\n\n#wcp-status.loading {\n  display: block;\n  background: #eff6ff;\n  border: 1px solid #bfdbfe;\n  color: #1d4ed8;\n}\n\n#wcp-status.error {\n  display: block;\n  background: #fef2f2;\n  border: 1px solid #fecaca;\n  color: #b91c1c;\n}\n\n#wcp-result {\n  display: none;\n  margin-top: 28px;\n  background: #fff;\n  border: 1px solid #dbe3ec;\n  border-radius: 16px;\n  overflow: hidden;\n}\n\n.wcp-result-header {\n  padding: 22px 28px;\n  background: #0f172a;\n  color: #fff;\n  border-bottom: 5px solid #2563eb;\n}\n\n.wcp-result-header h3 {\n  margin: 0;\n  color: #fff;\n}\n\n.wcp-summary {\n  display: grid;\n  grid-template-columns: repeat(4,1fr);\n  border-bottom: 1px solid #e2e8f0;\n}\n\n.wcp-summary div {\n  padding: 15px;\n  border-right: 1px solid #e2e8f0;\n}\n\n.wcp-summary strong {\n  display: block;\n  font-size: 11px;\n  color: #64748b;\n  margin-bottom: 5px;\n  text-transform: uppercase;\n}\n\n#wcp-sections {\n  padding: 24px;\n  background: #f8fafc;\n}\n\n.wcp-section {\n  margin-bottom: 18px;\n  background: #fff;\n  border: 1px solid #e2e8f0;\n  border-radius: 10px;\n  overflow: hidden;\n}\n\n.wcp-section-title {\n  padding: 12px 16px;\n  background: #eef4ff;\n  color: #1e3a8a;\n  font-weight: 900;\n}\n\n.wcp-row {\n  display: grid;\n  grid-template-columns: 35% 65%;\n  border-top: 1px solid #edf2f7;\n}\n\n.wcp-label {\n  padding: 12px 15px;\n  background: #f8fafc;\n  font-weight: 700;\n}\n\n.wcp-value {\n  padding: 12px 15px;\n  word-break: break-word;\n}\n\n.wcp-warning {\n  margin: 0 24px 24px;\n  padding: 16px;\n  background: #fff7ed;\n  border: 1px solid #fdba74;\n  border-left: 5px solid #ea580c;\n  border-radius: 9px;\n  color: #9a3412;\n  font-weight: 800;\n}\n\n@media (max-width: 760px) {\n  .wcp-grid {\n    grid-template-columns: 1fr;\n  }\n\n  .wcp-summary {\n    grid-template-columns: 1fr 1fr;\n  }\n\n  .wcp-row {\n    grid-template-columns: 40% 60%;\n  }\n}\n<\/style>\n\n<div id=\"wcp-app\">\n\n  <div class=\"wcp-card\">\n\n    <div class=\"wcp-header\">\n      <h2>WeldCalcPro<\/h2>\n      <p>AI Draft pWPS Generator<\/p>\n    <\/div>\n\n    <div class=\"wcp-form\">\n\n      <div class=\"wcp-grid\">\n\n        <div class=\"wcp-field\">\n          <label>Project Name *<\/label>\n          <input id=\"wcp-project\" type=\"text\" placeholder=\"Example: Test S355\">\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Base Material 1 *<\/label>\n          <input id=\"wcp-mat1\" type=\"text\" placeholder=\"Example: S355J2\">\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Base Material 2<\/label>\n          <input id=\"wcp-mat2\" type=\"text\" placeholder=\"Leave empty if same\">\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Thickness (mm) *<\/label>\n          <input id=\"wcp-thickness\" type=\"number\" min=\"0.5\" step=\"0.1\" placeholder=\"10\">\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Applicable Code \/ WPS Standard *<\/label>\n          <select id=\"wcp-standard\">\n            <option value=\"\">Select Code or Standard<\/option>\n            <optgroup label=\"EN \/ ISO\">\n              <option value=\"EN ISO 15609-1\">EN ISO 15609-1 \u2014 WPS content<\/option>\n              <option value=\"EN ISO 15614-1\">EN ISO 15614-1 \u2014 Procedure qualification<\/option>\n              <option value=\"EN 1090-2\">EN 1090-2 \u2014 Steel structures execution<\/option>\n              <option value=\"ISO 3834\">ISO 3834 \u2014 Welding quality requirements<\/option>\n            <\/optgroup>\n            <optgroup label=\"ASME\">\n              <option value=\"ASME BPVC Section IX\">ASME BPVC Section IX \u2014 Procedure qualification<\/option>\n              <option value=\"ASME B31.3\">ASME B31.3 \u2014 Process piping<\/option>\n              <option value=\"ASME B31.1\">ASME B31.1 \u2014 Power piping<\/option>\n              <option value=\"ASME BPVC Section VIII\">ASME BPVC Section VIII \u2014 Pressure vessels<\/option>\n            <\/optgroup>\n            <optgroup label=\"AWS\">\n              <option value=\"AWS D1.1\/D1.1M\">AWS D1.1\/D1.1M \u2014 Structural steel<\/option>\n              <option value=\"AWS D1.2\/D1.2M\">AWS D1.2\/D1.2M \u2014 Aluminum<\/option>\n              <option value=\"AWS D1.5\/D1.5M\">AWS D1.5\/D1.5M \u2014 Bridges<\/option>\n              <option value=\"AWS D1.6\/D1.6M\">AWS D1.6\/D1.6M \u2014 Stainless steel<\/option>\n            <\/optgroup>\n            <optgroup label=\"API\">\n              <option value=\"API 1104\">API 1104 \u2014 Pipelines<\/option>\n            <\/optgroup>\n          <\/select>\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Edition \/ Year *<\/label>\n          <input id=\"wcp-edition\" type=\"text\" inputmode=\"numeric\" placeholder=\"Example: 2021\">\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Joint Type *<\/label>\n          <select id=\"wcp-joint\">\n            <option value=\"\">Select Joint Type<\/option>\n            <option value=\"Butt Joint\">Butt Joint<\/option>\n            <option value=\"Pipe Butt Joint\">Pipe Butt Joint<\/option>\n            <option value=\"Fillet Joint\">Fillet Joint<\/option>\n            <option value=\"T-Joint\">T-Joint<\/option>\n            <option value=\"Lap Joint\">Lap Joint<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Welding Process *<\/label>\n          <select id=\"wcp-process\">\n            <option value=\"\">Select Process<\/option>\n            <option value=\"111\">111 - SMAW \/ E-Hand<\/option>\n            <option value=\"131\">131 - MIG<\/option>\n            <option value=\"135\">135 - MAG<\/option>\n            <option value=\"136\">136 - FCAW<\/option>\n            <option value=\"138\">138 - MCAW<\/option>\n            <option value=\"141\">141 - TIG \/ WIG<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Welding Position *<\/label>\n          <select id=\"wcp-position\">\n            <option value=\"\">Select Position<\/option>\n            <option value=\"PA\">PA - Flat<\/option>\n            <option value=\"PB\">PB - Fillet<\/option>\n            <option value=\"PC\">PC - Horizontal<\/option>\n            <option value=\"PE\">PE - Overhead<\/option>\n            <option value=\"PF\">PF - Vertical Up<\/option>\n            <option value=\"PG\">PG - Vertical Down<\/option>\n            <option value=\"H-L045\">H-L045 - Pipe<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Qualified Heat Input Min (kJ\/mm)<\/label>\n          <input id=\"wcp-qualified-heat-min\" type=\"number\" min=\"0\" step=\"0.01\" placeholder=\"From WPQR \/ approved WPS\">\n        <\/div>\n\n        <div class=\"wcp-field\">\n          <label>Qualified Heat Input Max (kJ\/mm)<\/label>\n          <input id=\"wcp-qualified-heat-max\" type=\"number\" min=\"0\" step=\"0.01\" placeholder=\"From WPQR \/ approved WPS\">\n        <\/div>\n\n      <\/div>\n\n      <div class=\"wcp-guidance\">\n        Select the applicable project code and its exact edition. A listed code does not by itself prove compliance.\n        The generated document remains a preliminary pWPS and requires review against the governing code, WPQR,\n        approved WPS, client specification, and project requirements.\n      <\/div>\n\n      <button id=\"wcp-generate\" type=\"button\">\n        Generate AI Draft pWPS\n      <\/button>\n\n      <div id=\"wcp-status\"><\/div>\n\n    <\/div>\n\n  <\/div>\n\n\n  <div id=\"wcp-result\">\n\n    <div class=\"wcp-result-header\">\n      <h3>Preliminary pWPS<\/h3>\n    <\/div>\n\n    <div id=\"wcp-summary\" class=\"wcp-summary\"><\/div>\n\n    <div id=\"wcp-sections\"><\/div>\n\n    <div class=\"wcp-warning\">\n      PRELIMINARY pWPS \u2014 ENGINEERING REVIEW REQUIRED.\n      This document is not a qualified production WPS.\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n\n<script>\n(function () {\n\n  const $ = id => document.getElementById(id);\n\n  const button = $(\"wcp-generate\");\n  const statusBox = $(\"wcp-status\");\n  const resultBox = $(\"wcp-result\");\n  const summaryBox = $(\"wcp-summary\");\n  const sectionsBox = $(\"wcp-sections\");\n\n\n  function status(message, type) {\n\n    statusBox.className = \"\";\n\n    if (!message) {\n      statusBox.style.display = \"none\";\n      statusBox.textContent = \"\";\n      return;\n    }\n\n    statusBox.textContent = message;\n    statusBox.classList.add(type);\n    statusBox.style.display = \"block\";\n  }\n\n\n  function escapeHtml(value) {\n    return String(value)\n      .replaceAll(\"&\", \"&amp;\")\n      .replaceAll(\"<\", \"&lt;\")\n      .replaceAll(\">\", \"&gt;\")\n      .replaceAll('\"', \"&quot;\")\n      .replaceAll(\"'\", \"&#039;\");\n  }\n\n\n  function label(key) {\n\n    const names = {\n      groove_type: \"Groove Type\",\n      root_gap_mm: \"Root Gap\",\n      root_face_mm: \"Root Face\",\n      groove_angle_deg: \"Groove Angle\",\n      backing: \"Backing\",\n      root_process: \"Root Process\",\n      fill_cap_process: \"Fill \/ Cap Process\",\n      filler_material: \"Filler Material\",\n      wire_diameter_mm: \"Wire Diameter\",\n      shielding_gas: \"Shielding Gas\",\n      polarity: \"Polarity\",\n      current_min_a: \"Current Minimum\",\n      current_max_a: \"Current Maximum\",\n      voltage_min_v: \"Voltage Minimum\",\n      voltage_max_v: \"Voltage Maximum\",\n      wire_feed_min_m_min: \"Wire Feed Minimum\",\n      wire_feed_max_m_min: \"Wire Feed Maximum\",\n      travel_speed_min_mm_min: \"Travel Speed Minimum\",\n      travel_speed_max_mm_min: \"Travel Speed Maximum\",\n      preheat_c: \"Preheat\",\n      interpass_max_c: \"Maximum Interpass\",\n      pass_sequence: \"Pass Sequence\",\n      inspection_notes: \"Inspection Notes\",\n      engineering_notes: \"Engineering Notes\",\n      heat_input_min_kj_mm: \"Heat Input Minimum\",\n      heat_input_max_kj_mm: \"Heat Input Maximum\",\n      thermal_efficiency_factor: \"Thermal Efficiency Factor\",\n      heat_input_validation: \"Heat Input Validation\",\n      qualified_heat_input_min: \"Qualified Heat Input Minimum\",\n      qualified_heat_input_max: \"Qualified Heat Input Maximum\",\n      document_status: \"Document Status\",\n      engineering_safety_note: \"Engineering Safety Note\"\n    };\n\n    return names[key] || key.replaceAll(\"_\",\" \");\n  }\n\n\n  function unit(key, value) {\n\n    if (value === null || value === undefined || value === \"\") {\n      return \"\";\n    }\n\n    if (\n      key === \"heat_input_min_kj_mm\" ||\n      key === \"heat_input_max_kj_mm\"\n    ) return value + \" kJ\/mm\";\n\n    if (key.endsWith(\"_mm\")) return value + \" mm\";\n    if (key.endsWith(\"_deg\")) return value + \"\u00b0\";\n    if (key.endsWith(\"_a\")) return value + \" A\";\n    if (key.endsWith(\"_v\")) return value + \" V\";\n    if (key.endsWith(\"_c\")) return value + \" \u00b0C\";\n\n    if (key.includes(\"wire_feed\")) {\n      return value + \" m\/min\";\n    }\n\n    if (key.includes(\"travel_speed\")) {\n      return value + \" mm\/min\";\n    }\n\n    return String(value);\n  }\n\n\n  function groupFor(key) {\n\n    if (\n      [\n        \"heat_input_min_kj_mm\",\n        \"heat_input_max_kj_mm\",\n        \"thermal_efficiency_factor\",\n        \"heat_input_validation\"\n      ].includes(key)\n    ) return \"Heat Input\";\n\n\n    if (\n      [\n        \"groove_type\",\n        \"root_gap_mm\",\n        \"root_face_mm\",\n        \"groove_angle_deg\",\n        \"backing\"\n      ].includes(key)\n    ) return \"Joint Design\";\n\n\n    if (\n      [\n        \"root_process\",\n        \"fill_cap_process\",\n        \"filler_material\",\n        \"wire_diameter_mm\",\n        \"shielding_gas\",\n        \"polarity\"\n      ].includes(key)\n    ) return \"Process & Consumables\";\n\n\n    if (\n      [\n        \"current_min_a\",\n        \"current_max_a\",\n        \"voltage_min_v\",\n        \"voltage_max_v\",\n        \"wire_feed_min_m_min\",\n        \"wire_feed_max_m_min\",\n        \"travel_speed_min_mm_min\",\n        \"travel_speed_max_mm_min\"\n      ].includes(key)\n    ) return \"Welding Parameters\";\n\n\n    if (\n      [\n        \"preheat_c\",\n        \"interpass_max_c\",\n        \"pass_sequence\"\n      ].includes(key)\n    ) return \"Thermal & Welding Sequence\";\n\n\n    return \"Inspection & Engineering Notes\";\n  }\n\n\n  function showResult(wps) {\n\n    summaryBox.innerHTML = `\n      <div>\n        <strong>Project<\/strong>\n        ${escapeHtml($(\"wcp-project\").value)}\n      <\/div>\n\n      <div>\n        <strong>Standard<\/strong>\n        ${escapeHtml($(\"wcp-standard\").value + \" \u2014 Edition \" + $(\"wcp-edition\").value.trim())}\n      <\/div>\n\n      <div>\n        <strong>Material<\/strong>\n        ${escapeHtml($(\"wcp-mat1\").value)}\n      <\/div>\n\n      <div>\n        <strong>Thickness<\/strong>\n        ${escapeHtml($(\"wcp-thickness\").value)} mm\n      <\/div>\n    `;\n\n\n    const groups = {};\n\n    Object.keys(wps).forEach(key => {\n\n      const value = wps[key];\n\n      if (\n        value === null ||\n        value === undefined ||\n        value === \"\"\n      ) return;\n\n      const group = groupFor(key);\n\n      if (!groups[group]) {\n        groups[group] = [];\n      }\n\n      groups[group].push({\n        key,\n        value\n      });\n    });\n\n\n    sectionsBox.innerHTML = \"\";\n\n\n    const groupOrder = [\n      \"Joint Design\",\n      \"Process & Consumables\",\n      \"Welding Parameters\",\n      \"Heat Input\",\n      \"Thermal & Welding Sequence\",\n      \"Inspection & Engineering Notes\"\n    ];\n\n    groupOrder.filter(group => groups[group]).forEach(group => {\n\n      const section =\n        document.createElement(\"div\");\n\n      section.className =\n        \"wcp-section\";\n\n\n      const title =\n        document.createElement(\"div\");\n\n      title.className =\n        \"wcp-section-title\";\n\n      title.textContent =\n        group;\n\n\n      section.appendChild(title);\n\n\n      groups[group].forEach(item => {\n\n        const row =\n          document.createElement(\"div\");\n\n        row.className =\n          \"wcp-row\";\n\n\n        const left =\n          document.createElement(\"div\");\n\n        left.className =\n          \"wcp-label\";\n\n        left.textContent =\n          label(item.key);\n\n\n        const right =\n          document.createElement(\"div\");\n\n        right.className =\n          \"wcp-value\";\n\n        right.textContent =\n          unit(\n            item.key,\n            item.value\n          );\n\n\n        row.appendChild(left);\n        row.appendChild(right);\n\n        section.appendChild(row);\n      });\n\n\n      sectionsBox.appendChild(section);\n    });\n\n\n    resultBox.style.display =\n      \"block\";\n  }\n\n\n  async function generate() {\n\n    const payload = {\n\n      project:\n        $(\"wcp-project\").value.trim(),\n\n      standard:\n        $(\"wcp-standard\").value +\n        \" \u2014 Edition \" +\n        $(\"wcp-edition\").value.trim(),\n\n      material1:\n        $(\"wcp-mat1\").value.trim(),\n\n      material2:\n        $(\"wcp-mat2\").value.trim(),\n\n      thickness:\n        $(\"wcp-thickness\").value,\n\n      joint:\n        $(\"wcp-joint\").value,\n\n      process:\n        $(\"wcp-process\").value,\n\n      position:\n        $(\"wcp-position\").value,\n\n      qualified_heat_input_min:\n        $(\"wcp-qualified-heat-min\").value === \"\"\n          ? null\n          : parseFloat($(\"wcp-qualified-heat-min\").value),\n\n      qualified_heat_input_max:\n        $(\"wcp-qualified-heat-max\").value === \"\"\n          ? null\n          : parseFloat($(\"wcp-qualified-heat-max\").value)\n    };\n\n\n    if (\n      !payload.project ||\n      !$(\"wcp-standard\").value ||\n      !$(\"wcp-edition\").value.trim() ||\n      !payload.material1 ||\n      !payload.thickness ||\n      !payload.joint ||\n      !payload.process ||\n      !payload.position\n    ) {\n\n      status(\n        \"Please fill all required fields.\",\n        \"error\"\n      );\n\n      return;\n    }\n\n\n    const hasQualifiedMin =\n      payload.qualified_heat_input_min !== null;\n\n    const hasQualifiedMax =\n      payload.qualified_heat_input_max !== null;\n\n    if (hasQualifiedMin !== hasQualifiedMax) {\n      status(\n        \"Enter both qualified Heat Input limits, or leave both empty.\",\n        \"error\"\n      );\n      return;\n    }\n\n    if (\n      hasQualifiedMin &&\n      payload.qualified_heat_input_min >\n        payload.qualified_heat_input_max\n    ) {\n      status(\n        \"Qualified Heat Input minimum cannot be greater than maximum.\",\n        \"error\"\n      );\n      return;\n    }\n\n\n    button.disabled = true;\n\n    button.textContent =\n      \"AI is generating...\";\n\n    resultBox.style.display =\n      \"none\";\n\n    status(\n      \"Generating preliminary pWPS...\",\n      \"loading\"\n    );\n\n\n    try {\n\n      const endpoint =\n        window.location.origin +\n        \"\/?rest_route=\/weldcalcpro\/v1\/generate-wps\";\n\n\n      const response =\n        await fetch(endpoint, {\n\n          method: \"POST\",\n\n          headers: {\n            \"Content-Type\": \"application\/json\",\n            \"Accept\": \"application\/json\"\n          },\n\n          credentials: \"same-origin\",\n\n          body:\n            JSON.stringify(payload)\n        });\n\n\n      const raw =\n        await response.text();\n\n\n      let json = null;\n\n\n      try {\n\n        json =\n          JSON.parse(raw);\n\n      } catch (e) {\n\n        const start =\n          raw.indexOf(\"{\");\n\n        const end =\n          raw.lastIndexOf(\"}\");\n\n        if (\n          start !== -1 &&\n          end > start\n        ) {\n\n          try {\n\n            json =\n              JSON.parse(\n                raw.substring(\n                  start,\n                  end + 1\n                )\n              );\n\n          } catch (e2) {}\n        }\n      }\n\n\n      if (!json) {\n\n        throw new Error(\n          \"RAW SERVER RESPONSE: \" +\n          raw\n            .replace(\/\\s+\/g,\" \")\n            .substring(0,250)\n        );\n      }\n\n\n      if (!response.ok) {\n\n        throw new Error(\n          json.message ||\n          \"Server error HTTP \" +\n          response.status\n        );\n      }\n\n\n      if (json.success === false) {\n\n        throw new Error(\n          json.message ||\n          \"pWPS generation failed.\"\n        );\n      }\n\n\n      if (!json.wps) {\n\n        throw new Error(\n          \"Server returned no pWPS data.\"\n        );\n      }\n\n\n      status(\"\",\"\");\n\n      showResult(\n        json.wps\n      );\n\n\n    } catch (error) {\n\n      status(\n        \"Error: \" +\n        error.message,\n        \"error\"\n      );\n\n    } finally {\n\n      button.disabled =\n        false;\n\n      button.textContent =\n        \"Generate AI Draft pWPS\";\n    }\n  }\n\n\n  button.addEventListener(\n    \"click\",\n    generate\n  );\n\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-ce6a82b e-con e-atomic-element e-flexbox-base e-f7365a4 \" data-id=\"ce6a82b\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"ce6a82b\">\n    \t\t\t<h2 data-interaction-id=\"c6d3a4c\" class=\"e-c6d3a4c-cf1c0cb e-heading-base\">Welding Parameter Calculator<br>Estimate practical starting parameters<\/h2>\n\t\t\t\t\t<h2 data-interaction-id=\"f1efd8f\" class=\"e-f1efd8f-e749bc1 e-heading-base\">Supported Materials<br>Steel, Stainless Steel, Aluminum, and Copper<\/h2>\n\t\t\t\t\t<h2 data-interaction-id=\"d3e8b76\" class=\"e-heading-base\"><\/h2>\n\t\t\t\t\t<a href=\"#wc-material\" target=\"_self\" class=\"e-e8f4844-6cfc8ab e-button-base\" data-interaction-id=\"e8f4844\">\n\t\tOpen Welding Calculator\n\t<\/a>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-9886382 e-flex e-con-boxed e-con e-parent\" data-id=\"9886382\" 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-13cd823 elementor-widget elementor-widget-html\" data-id=\"13cd823\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"weldcalc-pro\">\r\n  <h2>Welding Calculator<\/h2>\r\n  <p>Enter the welding parameters to get estimated starting settings.<\/p>\r\n\r\n  <label>Material<\/label>\r\n  <select id=\"wc-material\">\r\n    <option value=\"steel\">Steel<\/option>\r\n    <option value=\"stainless\">Stainless Steel<\/option>\r\n    <option value=\"aluminum\">Aluminum<\/option>\r\n    <option value=\"copper\">Copper<\/option>\r\n  <\/select>\r\n\r\n  <label>Welding Process<\/label>\r\n  <select id=\"wc-process\">\r\n    <option value=\"mig\">MIG \/ MAG<\/option>\r\n    <option value=\"tig\">TIG<\/option>\r\n    <option value=\"mma\">MMA \/ Stick<\/option>\r\n  <\/select>\r\n\r\n  <label>Welding Position<\/label>\r\n  <select id=\"wc-position\">\r\n    <option value=\"PA\">PA - Flat<\/option>\r\n    <option value=\"PB\">PB - Horizontal \/ Vertical Fillet<\/option>\r\n    <option value=\"PC\">PC - Horizontal<\/option>\r\n    <option value=\"PF\">PF - Vertical Up<\/option>\r\n    <option value=\"PG\">PG - Vertical Down<\/option>\r\n  <\/select>\r\n\r\n  <label>Material Thickness (mm)<\/label>\r\n  <input\r\n    id=\"wc-thickness\"\r\n    type=\"number\"\r\n    min=\"0.5\"\r\n    max=\"30\"\r\n    step=\"0.1\"\r\n    placeholder=\"Example: 3\"\r\n  >\r\n\r\n  <label>Wire \/ Electrode Diameter (mm)<\/label>\r\n  <select id=\"wc-diameter\">\r\n    <option value=\"0.8\">0.8 mm<\/option>\r\n    <option value=\"1.0\">1.0 mm<\/option>\r\n    <option value=\"1.2\">1.2 mm<\/option>\r\n    <option value=\"1.6\">1.6 mm<\/option>\r\n    <option value=\"2.0\">2.0 mm<\/option>\r\n    <option value=\"2.5\">2.5 mm<\/option>\r\n    <option value=\"3.2\">3.2 mm<\/option>\r\n    <option value=\"4.0\">4.0 mm<\/option>\r\n  <\/select>\r\n\r\n  <label>Shielding Gas<\/label>\r\n  <select id=\"wc-gas\">\r\n    <option value=\"auto\">Auto - Recommended<\/option>\r\n    <option value=\"arco2\">Argon \/ CO\u2082 Mix<\/option>\r\n    <option value=\"argon\">100% Argon<\/option>\r\n    <option value=\"aro2\">Argon \/ O\u2082 Mix<\/option>\r\n    <option value=\"co2\">100% CO\u2082<\/option>\r\n    <option value=\"arhe\">Argon \/ Helium Mix<\/option>\r\n  <\/select>\r\n\r\n  <button type=\"button\" onclick=\"calculateWeldPro()\">\r\n    Calculate\r\n  <\/button>\r\n\r\n  <div id=\"wc-results\"><\/div>\r\n<\/div>\r\n\r\n<style>\r\n.weldcalc-pro {\r\n  max-width: 650px;\r\n  margin: 20px auto;\r\n  padding: 26px;\r\n  border: 1px solid #ddd;\r\n  border-radius: 14px;\r\n  font-family: Arial, sans-serif;\r\n}\r\n\r\n.weldcalc-pro h2 {\r\n  margin-top: 0;\r\n}\r\n\r\n.weldcalc-pro label {\r\n  display: block;\r\n  margin-top: 16px;\r\n  margin-bottom: 6px;\r\n  font-weight: bold;\r\n}\r\n\r\n.weldcalc-pro select,\r\n.weldcalc-pro input {\r\n  width: 100%;\r\n  padding: 12px;\r\n  box-sizing: border-box;\r\n  border: 1px solid #bbb;\r\n  border-radius: 8px;\r\n  font-size: 16px;\r\n}\r\n\r\n.weldcalc-pro button {\r\n  width: 100%;\r\n  padding: 14px;\r\n  margin-top: 22px;\r\n  border: 0;\r\n  border-radius: 8px;\r\n  font-size: 17px;\r\n  cursor: pointer;\r\n}\r\n\r\n#wc-results {\r\n  display: none;\r\n  margin-top: 22px;\r\n  padding: 18px;\r\n  border-radius: 9px;\r\n  background: #f4f4f4;\r\n  line-height: 1.8;\r\n}\r\n<\/style>\r\n\r\n<script>\r\nfunction calculateWeldPro() {\r\n\r\n  const material =\r\n    document.getElementById(\"wc-material\").value;\r\n\r\n  const process =\r\n    document.getElementById(\"wc-process\").value;\r\n\r\n  const position =\r\n    document.getElementById(\"wc-position\").value;\r\n\r\n  const thickness =\r\n    parseFloat(document.getElementById(\"wc-thickness\").value);\r\n\r\n  const diameter =\r\n    parseFloat(document.getElementById(\"wc-diameter\").value);\r\n\r\n  const gasChoice =\r\n    document.getElementById(\"wc-gas\").value;\r\n\r\n  const results =\r\n    document.getElementById(\"wc-results\");\r\n\r\n  if (!thickness || thickness <= 0) {\r\n    results.style.display = \"block\";\r\n    results.innerHTML =\r\n      \"Please enter a valid material thickness.\";\r\n    return;\r\n  }\r\n\r\n  const materialFactor = {\r\n    steel: 1.00,\r\n    stainless: 0.90,\r\n    aluminum: 1.20,\r\n    copper: 1.25\r\n  };\r\n\r\n  const positionFactor = {\r\n    PA: 1.00,\r\n    PB: 0.95,\r\n    PC: 0.90,\r\n    PF: 0.82,\r\n    PG: 0.78\r\n  };\r\n\r\n  let processFactor = 0;\r\n\r\n  if (process === \"mig\") processFactor = 38;\r\n  if (process === \"tig\") processFactor = 32;\r\n  if (process === \"mma\") processFactor = 40;\r\n\r\n  let current =\r\n    thickness *\r\n    processFactor *\r\n    materialFactor[material] *\r\n    positionFactor[position];\r\n\r\n  current = Math.max(25, Math.min(350, current));\r\n\r\n  const minCurrent =\r\n    Math.round(current * 0.85);\r\n\r\n  const maxCurrent =\r\n    Math.round(current * 1.15);\r\n\r\n  let voltage = 0;\r\n  let wireSpeed = \"N\/A\";\r\n\r\n  if (process === \"mig\") {\r\n    voltage =\r\n      Math.round((16 + current * 0.035) * 10) \/ 10;\r\n\r\n    wireSpeed =\r\n      (current \/ (diameter * 35)).toFixed(1) +\r\n      \" m\/min\";\r\n  }\r\n\r\n  if (process === \"tig\") {\r\n    voltage =\r\n      Math.round((10 + current * 0.025) * 10) \/ 10;\r\n  }\r\n\r\n  if (process === \"mma\") {\r\n    voltage =\r\n      Math.round((20 + current * 0.025) * 10) \/ 10;\r\n  }\r\n\r\n  let travelSpeed =\r\n    300 \/ Math.max(1, thickness);\r\n\r\n  travelSpeed =\r\n    travelSpeed * positionFactor[position];\r\n\r\n  travelSpeed =\r\n    Math.round(travelSpeed);\r\n\r\n  let recommendedGas = \"\";\r\n\r\n  if (process === \"mma\") {\r\n    recommendedGas =\r\n      \"No external shielding gas required\";\r\n  }\r\n\r\n  else if (process === \"tig\") {\r\n\r\n    if (material === \"copper\") {\r\n      recommendedGas =\r\n        \"Argon or Argon \/ Helium Mix\";\r\n    } else {\r\n      recommendedGas =\r\n        \"100% Argon\";\r\n    }\r\n  }\r\n\r\n  else if (process === \"mig\") {\r\n\r\n    if (material === \"steel\") {\r\n      recommendedGas =\r\n        \"Argon \/ CO\u2082 Mix\";\r\n    }\r\n\r\n    if (material === \"stainless\") {\r\n      recommendedGas =\r\n        \"Argon \/ CO\u2082 or Argon \/ O\u2082 Mix\";\r\n    }\r\n\r\n    if (material === \"aluminum\") {\r\n      recommendedGas =\r\n        \"100% Argon\";\r\n    }\r\n\r\n    if (material === \"copper\") {\r\n      recommendedGas =\r\n        \"Argon \/ Helium Mix\";\r\n    }\r\n  }\r\n\r\n  const manualGasNames = {\r\n    arco2: \"Argon \/ CO\u2082 Mix\",\r\n    argon: \"100% Argon\",\r\n    aro2: \"Argon \/ O\u2082 Mix\",\r\n    co2: \"100% CO\u2082\",\r\n    arhe: \"Argon \/ Helium Mix\"\r\n  };\r\n\r\n  let displayedGas;\r\n\r\n  if (process === \"mma\") {\r\n    displayedGas =\r\n      \"No external shielding gas required\";\r\n  }\r\n\r\n  else if (gasChoice === \"auto\") {\r\n    displayedGas =\r\n      recommendedGas + \" (Recommended)\";\r\n  }\r\n\r\n  else {\r\n    displayedGas =\r\n      manualGasNames[gasChoice];\r\n  }\r\n\r\n  results.style.display = \"block\";\r\n\r\n  results.innerHTML =\r\n    \"<strong>Estimated Starting Parameters<\/strong><br><br>\" +\r\n\r\n    \"Welding Position: <strong>\" +\r\n    position +\r\n    \"<\/strong><br>\" +\r\n\r\n    \"Current: <strong>\" +\r\n    minCurrent +\r\n    \" \u2013 \" +\r\n    maxCurrent +\r\n    \" A<\/strong><br>\" +\r\n\r\n    \"Voltage: <strong>\" +\r\n    voltage +\r\n    \" V<\/strong><br>\" +\r\n\r\n    \"Wire Feed Speed: <strong>\" +\r\n    wireSpeed +\r\n    \"<\/strong><br>\" +\r\n\r\n    \"Travel Speed: <strong>~\" +\r\n    travelSpeed +\r\n    \" mm\/min<\/strong><br>\" +\r\n\r\n    \"Shielding Gas: <strong>\" +\r\n    displayedGas +\r\n    \"<\/strong><br><br>\" +\r\n\r\n    \"<small>\" +\r\n    \"These values are approximate starting estimates only. \" +\r\n    \"Always verify settings against the consumable manufacturer data, \" +\r\n    \"material requirements and the applicable WPS.\" +\r\n    \"<\/small>\";\r\n}\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-2b753e1 e-con e-atomic-element e-flexbox-base e-bb1037d \" data-id=\"2b753e1\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"2b753e1\">\n    \t\t\t<h2 data-interaction-id=\"83bb3a4\" class=\"e-heading-base\"><\/h2>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-e7d1257 e-con e-atomic-element e-flexbox-base e-6b2b29b \" data-id=\"e7d1257\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"e7d1257\">\n    \t\t<div class=\"elementor-element elementor-element-83df621 elementor-widget elementor-widget-text-editor\" data-id=\"83df621\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Welding Calculator Coming Soon<\/p><p>This calculator will help you calculate welding parameters such as current, voltage, and wire feed speed.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-66bada9 e-con e-atomic-element e-flexbox-base e-f2c47c3 \" data-id=\"66bada9\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"66bada9\">\n    \t\t\t<h2 data-interaction-id=\"45046bf\" class=\"e-heading-base\">Welding Cost Calculator<br>Estimate material, labor, and consumable costs. Coming soon.<\/h2>\n\t\t\t\t\t<button class=\"e-2301934-ea49310 e-button-base\" data-interaction-id=\"2301934\">\n\t\tComing Soon\n\t<\/button>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-65e862c e-con e-atomic-element e-flexbox-base e-46962eb \" data-id=\"65e862c\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"65e862c\">\n    \t\t\t<h2 data-interaction-id=\"41330ab\" class=\"e-heading-base\">Welding Time Estimator<br>Estimate welding time from weld length, deposition rate, and joint details. Coming soon.<\/h2>\n\t\t\t\t\t<button class=\"e-bbab0c8-969ae59 e-button-base\" data-interaction-id=\"bbab0c8\">\n\t\tComing Soon\n\t<\/button>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-ef3c422 e-con e-atomic-element e-flexbox-base e-db96f64 \" data-id=\"ef3c422\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"ef3c422\">\n    \t\t\t<h2 data-interaction-id=\"674345e\" class=\"e-heading-base\">Filler Material Selector<br>Choose preliminary filler classifications by base material and process. Coming soon.<\/h2>\n\t\t\t\t\t<button class=\"e-ca4ece9-28a52ec e-button-base\" data-interaction-id=\"ca4ece9\">\n\t\tComing Soon\n\t<\/button>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-24a144b e-con e-atomic-element e-flexbox-base e-f3189c0 \" data-id=\"24a144b\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"24a144b\">\n    \t\t\t<h2 data-interaction-id=\"1ad4720\" class=\"e-heading-base\">Joint Type Helper<br>Review common butt, fillet, T-, lap, and pipe joint configurations. Coming soon.<\/h2>\n\t\t\t\t\t<button class=\"e-9618161-5370bda e-button-base\" data-interaction-id=\"9618161\">\n\t\tComing Soon\n\t<\/button>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-eed4903 e-con e-atomic-element e-flexbox-base e-0d25dc2 \" data-id=\"eed4903\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"eed4903\">\n    \t\t\t<h2 data-interaction-id=\"ed089cf\" class=\"e-heading-base\">Basic Electrode Size Chart<br>Compare common electrode and wire diameters with typical use ranges. Coming soon.<\/h2>\n\t\t\t\t\t<button class=\"e-c11f0d0-50f3fc3 e-button-base\" data-interaction-id=\"c11f0d0\">\n\t\tComing Soon\n\t<\/button>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-6e6e042 e-con e-atomic-element e-flexbox-base e-f721730 \" data-id=\"6e6e042\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"6e6e042\">\n    \t\t\t<h2 data-interaction-id=\"0b24f4f\" class=\"e-heading-base\">Preheat &amp; Interpass Guide<br>Review factors affecting preheat and interpass control; engineering verification required. Coming soon.<\/h2>\n\t\t\t\t\t<button class=\"e-e4e6a96-a7c3cbd e-button-base\" data-interaction-id=\"e4e6a96\">\n\t\tComing Soon\n\t<\/button>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-70adfc4 e-con e-atomic-element e-flexbox-base e-4b55567 \" data-id=\"70adfc4\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"70adfc4\">\n    \t\t\t<h2 data-interaction-id=\"cd3ded1\" class=\"e-heading-base\">Defect Troubleshooter<br>Explore common welding defects, likely causes, and corrective actions. Coming soon.<\/h2>\n\t\t\t\t\t<button class=\"e-6e5188b-73f23c5 e-button-base\" data-interaction-id=\"6e5188b\">\n\t\tComing Soon\n\t<\/button>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-752e42d e-con e-atomic-element e-flexbox-base e-e265d1b \" data-id=\"752e42d\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"752e42d\">\n    \t\t\t<h2 data-interaction-id=\"4757cff\" class=\"e-heading-base\">Welding Reference Gallery<br>Reference illustrations are being prepared. Coming soon.<\/h2>\n\t\t\t\t\t<button class=\"e-9d5a185-ff879a5 e-button-base\" data-interaction-id=\"9d5a185\">\n\t\tComing Soon\n\t<\/button>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-9da8551 e-con e-atomic-element e-flexbox-base e-3e66337 \" data-id=\"9da8551\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"9da8551\">\n    \t\t\t<h2 data-interaction-id=\"e626232\" class=\"e-heading-base\">Quick Settings Cheat Sheet<br>Quick reference for preliminary welding parameters. Coming soon.<\/h2>\n\t\t\t\t\t<button class=\"e-32f85b2-6114445 e-button-base\" data-interaction-id=\"32f85b2\">\n\t\tComing Soon\n\t<\/button>\t\t\n<\/div>\n<div class=\"elementor-element elementor-element-cab2b06 e-flex e-con-boxed e-con e-parent\" data-id=\"cab2b06\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<section class=\"elementor-element elementor-element-c142f83 e-con e-atomic-element e-flexbox-base e-c142f83-fa36e4a \" data-id=\"c142f83\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"c142f83\">\n    \t\t\t<p class=\"e-5b4326e-7aea531 e-paragraph-base\" data-interaction-id=\"5b4326e\">ENGINEERING CONTROL<\/p>\n\t\t\t\t\t<h2 data-interaction-id=\"c74bdef\" class=\"e-c74bdef-5caf757 e-heading-base\">Built for engineering review.<br>Never blind automation.<\/h2>\n\t\t\t\t\t<p class=\"e-e6132de-2cfc5fd e-paragraph-base\" data-interaction-id=\"e6132de\">WeldCalcPro produces preliminary planning outputs from the inputs you provide. Every pWPS draft must be checked against the governing code, qualified procedure record, project specification, material data and actual production conditions before use.<\/p>\n\t\t\t\t\t<p class=\"e-a663f73-8cf83f3 e-paragraph-base\" data-interaction-id=\"a663f73\">Traceable inputs  \u00b7  Transparent assumptions  \u00b7  Qualified professional approval<\/p>\n\t\t\n<\/section>\n<section class=\"elementor-element elementor-element-b5a1029 e-con e-atomic-element e-flexbox-base e-b5a1029-e532dab \" data-id=\"b5a1029\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"b5a1029\">\n    \t\t\t<p class=\"e-48739c3-7bf53bb e-paragraph-base\" data-interaction-id=\"48739c3\">EARLY ACCESS PLANS<\/p>\n\t\t\t\t\t<h2 data-interaction-id=\"cb93bc8\" class=\"e-cb93bc8-f569ed7 e-heading-base\">Start free. Upgrade when the work becomes real.<\/h2>\n\t\t\t\t\t<p class=\"e-8acd54d-9576308 e-paragraph-base\" data-interaction-id=\"8acd54d\">Use the core calculators at no cost. Paid features will begin only after the beta has proved useful to working professionals.<\/p>\n\t\t<div class=\"elementor-element elementor-element-83bffab e-con e-atomic-element e-flexbox-base e-83bffab-4c3e392 \" data-id=\"83bffab\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"83bffab\">\n    <article class=\"elementor-element elementor-element-8554d9b e-con e-atomic-element e-flexbox-base e-8554d9b-114acbd \" data-id=\"8554d9b\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"8554d9b\">\n    \t\t\t<p class=\"e-a52b2e5-ecc9130 e-paragraph-base\" data-interaction-id=\"a52b2e5\">AVAILABLE NOW<\/p>\n\t\t\t\t\t<h3 data-interaction-id=\"fc8170f\" class=\"e-fc8170f-e8f4198 e-heading-base\">Free<\/h3>\n\t\t\t\t\t<h4 data-interaction-id=\"2a193bb\" class=\"e-2a193bb-fa8fa66 e-heading-base\">\u20ac0<\/h4>\n\t\t\t\t\t<p class=\"e-aa25248-e54a283 e-paragraph-base\" data-interaction-id=\"aa25248\">Core calculators and preliminary pWPS drafts are available free during beta. No account or payment is required. Engineering review remains mandatory.<\/p>\n\t\t\t\t\t<a href=\"#wc-material\" target=\"_self\" class=\"e-1ccb5f3-6e47b28 e-button-base\" data-interaction-id=\"1ccb5f3\">\n\t\tUse free calculators\n\t<\/a>\t\t\n<\/article>\n<article class=\"elementor-element elementor-element-a8f3930 e-con e-atomic-element e-flexbox-base e-a8f3930-274b377 \" data-id=\"a8f3930\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"a8f3930\">\n    \t\t\t<p class=\"e-281dec8-211fe4e e-paragraph-base\" data-interaction-id=\"281dec8\">PLAN IN DEVELOPMENT<\/p>\n\t\t\t\t\t<h3 data-interaction-id=\"09467fb\" class=\"e-09467fb-1826ddf e-heading-base\">Pro Individual<\/h3>\n\t\t\t\t\t<h4 data-interaction-id=\"aa2b55e\" class=\"e-aa2b55e-a44b7cf e-heading-base\">\u20ac6.90 \/ month*<\/h4>\n\t\t\t\t\t<p class=\"e-7fec34a-6b560f5 e-paragraph-base\" data-interaction-id=\"7fec34a\">Or \u20ac59 \/ year*. Planned for individual users: saved projects, calculation history, favorites and PDF export. Preliminary pWPS remains subject to engineering review.<\/p>\n\t\t\t\t\t<a href=\"https:\/\/weldcalcpro.com\/?page_id=63\" target=\"_self\" class=\"e-e4c362c-bfc0976 e-button-base\" data-interaction-id=\"e4c362c\">\n\t\tJoin early access\n\t<\/a>\t\t\n<\/article>\n<article class=\"elementor-element elementor-element-78ec9e8 e-con e-atomic-element e-flexbox-base e-78ec9e8-9306e3b \" data-id=\"78ec9e8\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"78ec9e8\">\n    \t\t\t<p class=\"e-638ec33-d827014 e-paragraph-base\" data-interaction-id=\"638ec33\">PLAN IN DEVELOPMENT<\/p>\n\t\t\t\t\t<h3 data-interaction-id=\"2cbd5ba\" class=\"e-2cbd5ba-e3e37b3 e-heading-base\">Pro Workshop<\/h3>\n\t\t\t\t\t<h4 data-interaction-id=\"61b6611\" class=\"e-61b6611-7b5b8ad e-heading-base\">\u20ac19.90 \/ month*<\/h4>\n\t\t\t\t\t<p class=\"e-2472827-4eb6f48 e-paragraph-base\" data-interaction-id=\"2472827\">Or \u20ac179 \/ year*. Planned for workshops: individual plan features plus workshop name on reports, linked calculations and limited team sharing. No payment is collected during beta.<\/p>\n\t\t\t\t\t<a href=\"https:\/\/weldcalcpro.com\/?page_id=63\" target=\"_self\" class=\"e-52c8cb8-6875d55 e-button-base\" data-interaction-id=\"52c8cb8\">\n\t\tJoin early access\n\t<\/a>\t\t\n<\/article>\n<article class=\"elementor-element elementor-element-390bb39 e-con e-atomic-element e-flexbox-base e-390bb39-046b22c \" data-id=\"390bb39\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"390bb39\">\n    \t\t\t<p class=\"e-74d0ab0-fcbb70c e-paragraph-base\" data-interaction-id=\"74d0ab0\">PLANNED<\/p>\n\t\t\t\t\t<h3 data-interaction-id=\"863ef89\" class=\"e-863ef89-7afec60 e-heading-base\">Company<\/h3>\n\t\t\t\t\t<h4 data-interaction-id=\"94de4a3\" class=\"e-94de4a3-5ee91ec e-heading-base\">Custom<\/h4>\n\t\t\t\t\t<p class=\"e-d9c7356-60ececc e-paragraph-base\" data-interaction-id=\"d9c7356\">Team workspace<br>Review and approval workflow<br>Priority support<\/p>\n\t\t\t\t\t<a href=\"https:\/\/weldcalcpro.com\/?page_id=63\" target=\"_self\" class=\"e-5b684ed-42d388a e-button-base\" data-interaction-id=\"5b684ed\">\n\t\tExplore team beta\n\t<\/a>\t\t\n<\/article>\n\n<\/div>\n\t\t\t<p class=\"e-382aa2b-fd51393 e-paragraph-base\" data-interaction-id=\"382aa2b\">* Proposed future prices from the feasibility study; these are not active subscriptions. Final prices and features remain subject to beta validation and a commercial decision. No payment is collected during beta.<\/p>\n\t\t\n<\/section>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Create preliminary pWPS drafts.Backed by traceable welding calculations. Build a preliminary pWPS Preliminary pWPS GeneratorISO \u00b7 ASME \u00b7 AWS guided inputs WeldCalcPro AI Draft pWPS Generator Project Name * Base Material 1 * Base Material 2 Thickness (mm) * Applicable Code \/ WPS Standard * Select Code or StandardEN ISO 15609-1 \u2014 WPS contentEN ISO [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-7","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/weldcalcpro.com\/index.php?rest_route=\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/weldcalcpro.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/weldcalcpro.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/weldcalcpro.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/weldcalcpro.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7"}],"version-history":[{"count":5,"href":"https:\/\/weldcalcpro.com\/index.php?rest_route=\/wp\/v2\/pages\/7\/revisions"}],"predecessor-version":[{"id":76,"href":"https:\/\/weldcalcpro.com\/index.php?rest_route=\/wp\/v2\/pages\/7\/revisions\/76"}],"wp:attachment":[{"href":"https:\/\/weldcalcpro.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}