{"id":5918,"date":"2025-04-08T08:11:58","date_gmt":"2025-04-08T08:11:58","guid":{"rendered":"https:\/\/www.hashmicro.com\/my\/blog\/?p=5918"},"modified":"2026-02-18T07:36:36","modified_gmt":"2026-02-18T07:36:36","slug":"general-contractor","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/","title":{"rendered":"What is a General Contractor? A Definitive Guide for Businesses"},"content":{"rendered":"<p>When a construction project lacks clear oversight, small issues pile up quickly, including late materials, overlapping subcontractor tasks, and shifting schedules. The result is predictable: rework, cost overruns, and a hit to credibility.<\/p>\n<p>In Malaysia, that risk matters even more as construction activity continues to rise. <a href=\"https:\/\/themalaysianreserve.com\/2024\/11\/11\/dosm-malaysias-construction-sector-continues-positive-growth-up-22-9-to-rm41-1b-in-3q\/\" target=\"_blank\" rel=\"noopener\">The Department of Statistics Malaysia<\/a> reported a value added of RM41.1 billion in Q3 2024, a 22.9% increase from the previous quarter.<\/p>\n<p>This guide explains what a general contractor actually owns day to day, the responsibilities that typically sit under their scope, and the practical value of<a href=\"https:\/\/www.hashmicro.com\/blog\/construction-management-software\/\"> construction management software<\/a> for keeping plans, people, and documentation aligned.<\/p>\n<table style=\"border-collapse: collapse; background-color: #fffacd; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); border-radius: 25px 25px 25px 25px;\" width=\"100%\">\n<tbody>\n<tr>\n<td style=\"padding: 15px; border: none;\">\n<h3 style=\"margin-bottom: 10px;\"><span style=\"background-color: #990000; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\"><a href=\"#pengertian\">A general contractor is<\/a> responsible for managing and overseeing construction projects, including planning, budgeting, and subcontractor coordination.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\"><a href=\"#kunci\">Key duties of a general contractor<\/a> include project scheduling, construction estimating, safety compliance, and stakeholder communication.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\"><a href=\"https:\/\/www.hashmicro.com\/hash-construction-software\">Construction management guidelines<\/a> and software tools are essential for improving accuracy, ensuring compliance, and streamlining workflows across multiple projects.<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400;\"><span data-sheets-root=\"1\"><a href=\"https:\/\/www.hashmicro.com\/my\/free-product-demo\/?medium=free-product-demo\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/free-demo-desktop-my.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/free-demo-desktop-my.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/07\/free-demo-mobile-my.jpg\" alt=\"FreeDemo\" class=\"responsive-image-banner\"><\/a>\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script><\/span><\/span><\/p>\n<p><span style=\"font-weight: 400;\"><span data-sheets-root=\"1\"><!-- <div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tTable of Content\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div>\r\n\r\n<div class=\"dropdown-fixed-top\" id=\"dropdown-fixed-top\">\r\n\t<div class=\"row\">\r\n\t\t<p id=\"pilihDaftarIsi\">Content Lists<\/p>\r\n\t\t<p><i class=\"td-icon-menu-down\"><\/i><\/p>\r\n\t<\/div>\r\n\t\r\n\t<div>\r\n\t\t<ul id=\"list_toc_top\" class='list_toc'><\/ul>\r\n\t<\/div>\r\n<\/div> -->\r\n\r\n<!-- TOC mobile -->\r\n<div id=\"placeholder-toc\"><\/div>\r\n<div id=\"toc\">\r\n    <div class=\"header\">\r\n\t<span class=\"toc-title\" id=\"toc-title\">Table of Content<\/span>\t\r\n\t <i class=\"toc-icon\">\r\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"header-icon\">\r\n          <path d=\"m6 9 6 6 6-6\" \/>\r\n        <\/svg>\r\n      <\/i>\r\n\t<\/div>\r\n    <div class=\"list\">\r\n      <ul id=\"toc-list\"><\/ul>\r\n    <\/div>\r\n <\/div>\r\n<!-- TOC mobile -->\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_top li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor: #000;\r\n\t\tmargin-bottom: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t}\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\t\t\t\t\r\n\t}\r\n\r\n<\/style>\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_top li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor: #000;\r\n\t\tmargin-bottom: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t\t}\r\n\t\t\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\r\n<\/style>\r\n\r\n<!-- START ToC styling  -->\r\n<style>\r\n\t\/* Simple styling for the TOC *\/\r\n\t\r\n\t#toc ul li:last-child {\r\n    padding-bottom: 16px; \/* Adjust the value as needed *\/\r\n}\r\n\r\n.td-fix-index {\r\n\t transform: unset !important;\r\n     -webkit-transform: unset !important; \r\n}\r\n.footer-contact .td-fix-index {\r\n\t transform: translateZ(0) !important;\r\n     -webkit-transform: translateZ(0) !important; \r\n}\r\n\t.tdb_single_content .tdb-block-inner.td-fix-index{\r\n\t\tposition: static;\r\n\t}\r\n\t\r\n\r\n\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 0px 24px !important;\r\n  margin-bottom: 20px;\r\n\/*   border: 1px solid #9C171E; *\/\r\n  border-radius: 6px;\r\n\tdisplay: none;\r\n  max-width: 100%;\r\n  transition: .4s ease height;\r\n\tmargin-left: 0;\r\n\toverflow: hidden;\r\n}\r\n\r\n#toc .header{\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\tbackground-color: transparent;\r\n}\r\n\t\r\n\t#toc.sticky .header{\r\n\t\tpadding: 4px 0;\r\n\t}\r\n\t\r\n.header p{\r\n  font-size: 18px !important;\r\n  font-weight: 600 !important;\r\n  color: #393939;\r\n   margin-bottom: 0;\r\n  \/* margin-top: 20px; *\/\r\n}\r\n\r\n.toc-icon{\r\n  float: right;\r\n\/*   visibility: hidden; *\/\r\n}\r\n\r\n\t.toc-title{\r\n\t\tmargin-right: auto;\r\n\/* \t\tpadding-left: 20px; *\/\r\n\t\tfont-weight: 600;\r\n\t\talign-self: center;\t}\t\r\n\r\n#toc ul {\r\n  list-style-type: none;\r\n  padding-left: 0;\r\n}\r\n\t\r\n#toc.sticky ul{\r\n\toverflow-y: auto;\r\n\tmax-height: 250px;\r\n\tmargin-top: 0px;\r\n\tpadding-top: 20px;\r\n\/* \tborder-top: 1px solid #d3d3d3; *\/\r\n}\r\n\t\r\n#toc ul li {\r\n\/*   margin-bottom: 10px; *\/\r\n  margin-bottom: 10px;\r\n\tmargin-left: 0;\r\n\ttransition: .2s ease;\r\n\tcursor: pointer;\r\n}\r\n\t\r\n\t#toc.sticky ul li {\r\n\t  margin-right: 10px;\r\n\t}\r\n\t\r\n.td-post-content #toc-list li a:hover, .td-post-content #toc-list a.active{\r\n\tbackground-color: #FFF;\r\n\/* \tpadding: 8px 16px 8px 16px; *\/\r\n\tpadding: 4px 16px 4px 16px;\r\n\tborder-radius: 6px;\r\n\tcolor: #9c171e !important;\r\n\tfont-weight: 600 !important;\r\n}\r\n\t\r\n\t.td-post-content #toc-list li:hover a, .td-post-content #toc-list a.active{\r\n\t\tcolor: #9C171E !important;\r\n\t\tfont-weight: 600 !important;\r\n\t}\r\n\t\r\n.td-post-content #toc-list a.active{\r\n\tfont-weight: bold !important;\r\n\tcolor: #9C171E !important;\r\n}\r\n\t\r\n#toc a, .td-post-content #toc-list a {\r\n  text-decoration: none;\r\n  color: #ea1717 !important;\r\n  transition: .2s ease;\r\n\tfont-weight: 400 !important;\r\n\tdisplay: block;\r\n\t\r\n\tpadding: 4px 16px 4px 0;\r\n}\r\n\r\n#toc.sticky {\r\n  position: fixed;\r\n\/*   top: 73px; *\/\r\n\tbottom: 0;\r\n  z-index: 100; \r\n  box-shadow: 0 2px 5px rgba(0,0,0,0.1); \r\n\twidth: 100%; \r\n\tbackground-color: #FFF;\r\n\/* \tbackground-color: #FFF1F1; *\/\r\n\tborder-bottom: 1px solid #ea1717;\r\n\/*   border: 1px solid #393939; *\/\r\n  box-shadow: 0px 0px 14px 0px #00000040;\r\n  cursor: pointer;\r\n\tanimation: fadein .3s ease;\r\n\tpadding: 12px 16px !important;\r\n}\r\n\t\r\n\t.fadein{\r\n\t\tanimation: fadein .3s ease;\r\n\t}\r\n\t\r\n\t.fadeout{\r\n\t\tanimation: fadeout .3s ease;\r\n\t}\r\n\t\r\n\t\r\n\t@keyframes fadein{\r\n\t\t0% {\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@keyframes fadeout{\r\n\t\t0% {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n#toc.sticky .header p{\r\n\tmargin-bottom: 10px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n#toc.sticky .toc-icon{\r\n  visibility: visible;\r\n\/* \ttransition: 0.4s ease; *\/\r\n}\r\n\t\r\n\t.toc-icon{\r\n\t\talign-items: center;\r\n    \tdisplay: flex;\r\n\t}\r\n\t\r\n\tsvg.header-icon{\r\n\/* \t\tbackground-color: #9c171e; *\/\r\n\t\tbackground-color: #FFF;\r\n\t\tborder-radius: 30px;\r\n\t\tpadding: 5px;\r\n\t}\r\n\r\n#toc.sticky .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\t\r\n\t#toc .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\r\n#toc .header.active .toc-icon{\r\n\ttransform: rotate(0deg); \r\n\topacity: 1;\r\n}\r\n\r\n\t#toc .header.active + .list {\r\n\t  max-height: 200px; \/* Adjust this value as needed *\/\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t#placeholder-toc{\r\n\/* \t\tdisplay: none; *\/\r\n\t}\r\n\t\r\n\t@media (min-width: 768px) and (max-width: 991px){\r\n\t\t#toc.sticky{\r\n\/* \t\t\ttop: 104px; *\/\r\n\t\t\tbottom: 0px;\r\n\t\t}\r\n\t\t\r\n\t\t#toc{\r\n\t\t\twidth: unset !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width: 767px){\r\n\t\t#toc{\r\n\t\t\twidth: 100% !important;\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t\t\r\n\t\t#toc.sticky{\r\n\t\t\twidth: 90% !important;\r\n\/* \t\t\ttop: 81px; *\/\r\n\t\t\tbottom: 60px;\r\n\t\t\tmargin-left: auto;\r\n\t\t\tmargin-right: auto;\r\n\t\t\tpadding: 0 16px;\r\n\t\t\tright: 5%;\r\n\t\t}\r\n\t}\r\n\t\r\n\t<\/style>\r\n<!-- END ToC styling  -->\r\n\r\n<!-- ToC List for mobile -->\r\n<script>\r\n \/\/ Generate TOC based on headings\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  \/\/ Get the element that will contain the TOC\r\n  const tocList = document.getElementById('toc-list');\r\n\r\n  \/\/ Get the element with the ID 'article-left'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within 'myarticle'\r\n  const headers = article.getElementsByTagName('h2');\r\n\r\n  \/\/ Loop through the h2 elements and create a list item for each one\r\n  for (let i = 0; i < headers.length; i++) {\r\n    const header = headers[i];\r\n    const headerText = header.textContent;\r\n\/\/     const headerId = 'header-' + i;\r\n    const headerId = headerText\r\n    .toLowerCase()\r\n    .trim()\r\n    .replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n    .replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n    \/\/ Set an ID for the header if it doesn't have one\r\n    header.setAttribute('id', headerId);\r\n\r\n    \/\/ Create a list item for the TOC\r\n    const listItem = document.createElement('li');\r\n\r\n    \/\/ Create a link for the list item\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', '#' + headerId);\r\n    link.textContent = headerText;\r\n\r\n    \/\/ Append the link to the list item\r\n    listItem.appendChild(link);\r\n\r\n    \/\/ Append the list item to the TOC list\r\n    tocList.appendChild(listItem);\r\n  }\r\n});\r\n\r\n\/\/ Keep height and placement of content using placeholder in place of TOC\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const placeholderToc = document.querySelector('#placeholder-toc');\r\n\r\n  function setPlaceholderHeight() {\r\n    placeholderToc.style.height = `${toc.offsetHeight}px`;\r\n  }\r\n\r\n  \/\/ Set the initial height of the placeholder\r\n  setPlaceholderHeight();\r\n\r\n  \/\/ Update the height on window resize\r\n  window.addEventListener('resize', setPlaceholderHeight);\r\n});\r\n  const tocTitle = document.querySelector('#toc-title'); \/\/ Assuming header-faq is the element for TOC title\r\n\r\n\/\/ Sticky TOC and update heading\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const footer = document.querySelector('.td-footer-template-wrap');\r\n  const tocParent = toc.parentElement;\r\n  const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n  const tocHeight = toc.offsetHeight;\r\n  const triggerPoint = divTop + tocHeight + 700;\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight - footerHeight - footerHeight;\r\n  const phtoc = document.querySelector('#placeholder-toc');\r\n  const headers = document.querySelectorAll('.td-post-content h2');\r\n  const navLinks = document.querySelectorAll('#toc-list a');\r\n\t\r\n\tconst panel2 = document.querySelector(\"#toc .list\");\r\n\tvar icon = document.querySelector(\".toc-icon\");\r\n\r\n  let activeLink = null; \/\/ Declare activeLink outside the loop\r\n\t\r\n  \/\/ Function to handle scroll and add\/remove .sticky class\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Highlight user progress as the heading comes\r\n    headers.forEach(header => {\r\n\t\tconst headerTop = header.offsetTop;\r\n\t\tconst headerHeight = header.clientHeight;\r\n\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\tconsole.log(\"current header text:\", currentHeaderText);\r\n\t\t\ttocTitle.textContent = currentHeaderText;\r\n\t\t\tcurrentHeader = currentHeaderId;\r\n\t\t\t\r\n\t\t\tif(window.innerWidth < 767){\r\n\t\t\t\ttocTitle.textContent = 'Table of Content';\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader != '') {\r\n\t\t  if (link.getAttribute('href').includes(currentHeader)) {\r\n\t\t\t  link.classList.add('active');\r\n\t\t  }\r\n\t  }\r\n    });\r\n\/\/     if (windowTop < triggerFooterPoint) {\r\n\/\/         toc.style.display = 'block';\r\n\/\/ \t}else{\r\n\/\/         toc.style.display = 'none';\r\n\/\/ \t}\r\n    \/\/ Update TOC title if sticky\r\n    if (windowTop > triggerPoint) {\r\n      if (!toc.classList.contains('sticky')) {\r\n        phtoc.style.display = \"block\";\r\n        toc.classList.add('sticky');\r\n        toc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n        toc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n        toc.style.backgroundColor = \"#FFF\";\r\n\t\tpanel2.style.height = '0px';\r\n\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\t\t  if(window.innerWidth < 767){\r\n\/\/ \t\t\t  const tocs = document.querySelector('#toc.sticky');\r\n\t\t\t  tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n       \t\t  toc.style.width = '150px'; \/\/ Set width to match the parent element\r\n\t\t  }\r\n      }\r\n      if (currentHeader) {\r\n\/\/         console.log(\"activeLink:\", activeLink);\r\n        if (activeLink) {\r\n\/\/           tocTitle.textContent = activeLink.textContent; \/\/ Update TOC title\r\n          tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\r\n        }\r\n      }\r\n    } else {\r\n      toc.classList.remove('sticky');\r\n      phtoc.style.display = \"none\";\r\n      toc.style.width = 'unset'; \/\/ Reset to original width\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n\t\tpanel2.style.height = panel2.scrollHeight + \"px\";\r\n\t\ticon.style.transform = \"rotate(180deg)\";\r\n    }\r\n  }\r\n\r\n    \/\/ Attach the scroll event listener to the window\r\n    window.addEventListener('scroll', handleScroll);\r\n\r\n    \/\/ Initial call to handleScroll to set the correct state on load\r\n    handleScroll();\r\n});\r\n\t\r\n\t\/\/ Open toggle TOC\r\n\t  document.addEventListener(\"DOMContentLoaded\", function() {\r\n\t\tvar tocHeader = document.querySelector(\"#toc .header\");\r\n\t\tvar toc = document.querySelector(\"#toc\");\r\n\t\tvar icon = document.querySelector(\".toc-icon\");\r\n\t\tconst tocTitle = document.querySelector('#toc-title');\r\n\t\tconst tocs = document.querySelector('#toc.sticky');\r\n \t\tconst tocParent = toc.parentElement;\t\t  \r\n\r\n\t\t  tocHeader.addEventListener(\"click\", function() {\r\n\t\t\tvar panel = this.nextElementSibling;\r\n\t\t\tif (panel.style.height !== '0px') { \/\/ Check if height is not 0px\r\n\t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t\t\ttoc.style.paddingBottom = '6px'; \r\n\t\t\t\tif(window.innerWidth > 768){\r\n\t\t\t\t\tif(!toc.classList.contains('sticky')){\r\n\t\t\t\t\t\ttoc.style.width = \"unset\";\r\n\/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (toc.classList.contains('sticky')){\r\n\t\t\t\t\t\ttoc.style.width = '${tocParent.offsetWidth}px';\r\n\t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(window.innerWidth < 767){\r\n\t\t\t\t\ttoc.style.width = \"unset\"; \/\/ Reset width\r\n\t\t\t\t}\r\n\t\t\t\ttoc.style.backgroundColor = \"#FFF1F1\";\r\n\t\t\t} else {\r\n\t\t\t  panel.style.height = panel.scrollHeight + \"px\";\r\n\t\t\t  icon.style.transform = \"rotate(0deg)\";\r\n\t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\t\t\t  tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n\t\t\t\ttoc.style.paddingBottom = '24px';\r\n\t\t\t \tif(window.innerWidth < 767){\r\n\t\t\t\t\ttoc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t  });\r\n\r\n\t\t  \/\/ Close TOC when a link inside it is clicked\r\n\t\t  var tocLinks = document.querySelectorAll(\"#toc .list a\");\r\n\t\t  tocLinks.forEach(function(link) {\r\n\t\t\tlink.addEventListener(\"click\", function() {\r\n\t\t\t  var panel = document.querySelector(\"#toc .list\");\r\n\t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\t\t\t});\r\n\t\t  });\r\n\t\t});\r\n<\/script>\r\n\r\n<!-- <script>\r\n\tvar pilihDaftarIsi = document.getElementById('pilihDaftarIsi');\r\n\t\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\tvar dropdownFixedTop = document.querySelector('.dropdown-fixed-top');\r\n\r\n\t\tdropdownFixedTop.addEventListener('click', function() {\r\n\t\t\tvar dropdownContent = this.querySelector('.list_toc');\r\n\t\t\tdropdownContent.classList.toggle('show');\r\n\t\t});\r\n\r\n\t\twindow.addEventListener('click', function(event) {\r\n\t\t\tvar listTocTop = document.getElementById('list_toc_top');\r\n\r\n\t\t\tif (!dropdownFixedTop.contains(event.target)) {\r\n\t\t\t\tlistTocTop.classList.remove('show');\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\t\r\n\tvar daftarIsiContainer = document.getElementById('toc_group_article');\r\n\tvar dropdownFixedTop = document.getElementById('dropdown-fixed-top');\r\n    var triggered = false; \/\/ Flag to keep track of whether the function has been triggered\r\n\r\n    window.addEventListener('scroll', function() {\r\n        if (!triggered && isCompletelyScrolledPast(daftarIsiContainer)) {\r\n            showSectionDropdownFixedTop(false);\r\n            triggered = true;\r\n        } else if (triggered && !isCompletelyScrolledPast(daftarIsiContainer)) {\r\n            showSectionDropdownFixedTop(true);\r\n            triggered = false;\r\n        }\r\n    });\r\n\r\n    function isCompletelyScrolledPast(element) {\r\n        var elementTop = element.getBoundingClientRect().top;\r\n        var elementBottom = element.getBoundingClientRect().bottom;\r\n        return elementTop < 0 && elementBottom < 0;\r\n    }\r\n\r\n    function showSectionDropdownFixedTop(show) {\r\n\t\tif (show) {\r\n\t\t\tdropdownFixedTop.classList.remove(\"show\");\r\n\t\t} else {\r\n\t\t\tdropdownFixedTop.classList.add(\"show\");\r\n\t\t}\r\n    }\r\n\r\n\/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n\t\t  pilihDaftarIsi.innerHTML = a.textContent;\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float', 'list_toc_top']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script> -->\r\n<!-- END script lama -->\r\n\t\r\n<script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float', 'list_toc_top']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script>\r\n\t\r\n\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!-- <script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n        \/\/ Fungsi untuk mengubah teks menjadi format id\r\n        function formatId(text) {\r\n            return text.trim().replace(\/[^\\w\\d]+\/g, '_');\r\n        }\r\n\r\n        \/\/ Fungsi untuk membuat nested list\r\n        function createNestedList(parentNode, children) {\r\n            if (children.length === 0) return;\r\n\r\n            const nestedUl = document.createElement('ul');\r\n            children.forEach(child => {\r\n                const nestedLi = document.createElement('li');\r\n                const nestedA = document.createElement('a');\r\n                nestedA.textContent = child.title;\r\n                nestedA.href = `#${child.id}`;\r\n                nestedLi.appendChild(nestedA);\r\n                nestedUl.appendChild(nestedLi);\r\n\r\n                if (child.children.length > 0) {\r\n                    createNestedList(nestedLi, child.children);\r\n                }\r\n            });\r\n\r\n            parentNode.appendChild(nestedUl);\r\n        }\r\n\r\n        \/\/ Membuat objek untuk menyimpan daftar h2 dan h3 beserta judulnya\r\n        const headings = [];\r\n\r\n           \/\/ Mengambil semua elemen h2 dan h3\r\n        const elements = document.querySelectorAll('.td-post-content h2');\r\n\t\t\t\/\/, .td-post-content h3\r\n\r\n        elements.forEach(element => {\r\n            if (element.tagName === 'H2') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n\t\t\t\tif(element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Biar ga nampilin Key Takeaways di ToC\r\n                headings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n            } else if (element.tagName === 'H3') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n                if (headings.length > 0) {\r\n                    headings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n                }\r\n            }\r\n        });\r\n\r\n        \/\/ Membuat list HTML dari objek headings\r\n        const ul = document.getElementById('list_toc');\r\n        let currentUl = ul;\r\n        headings.forEach(heading => {\r\n            const li = document.createElement('li');\r\n            const a = document.createElement('a');\r\n            a.textContent = heading.title;\r\n            a.href = `#${heading.id}`;\r\n            li.appendChild(a);\r\n\r\n            if (heading.level === 'h2') {\r\n                \/\/ Menyimpan ul saat ini untuk menambahkan nested ul\r\n                currentUl = li;\r\n                ul.appendChild(li);\r\n            } else if (heading.level === 'h3') {\r\n                if (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n                    \/\/ Jika belum ada nested ul, buat satu\r\n                    const nestedUl = document.createElement('ul');\r\n                    currentUl.appendChild(nestedUl);\r\n                    currentUl = nestedUl;\r\n                }\r\n                currentUl.appendChild(li);\r\n            }\r\n\r\n            createNestedList(li, heading.children);\r\n        });\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\nconst ulFloat = document.getElementById('list_toc');\r\nconst ulJourney = document.getElementById('list_journey');\r\n\r\n\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc_float'\r\n\tif (ulFloat !== null) {\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\t\tconst ulTocTop = document.getElementById('list_toc_top');\r\n\t\tif ((ulToc !== null || ulToc !== undefined) && window.innerWidth > 1018){\r\n\t\t\tulToc.append(...clonedChildren);\r\n\t\t} else {\r\n\t\t\tulTocTop.append(...clonedChildren);\r\n\t\t}\r\n\t} \r\n\r\n\tif (ulJourney !== null) {\r\n\t\tconst clonedChildrenJourney = ulJourney.cloneNode(true).children;\r\n\t\tconst ulTocJourney = document.getElementById('list_toc_journey');\r\n\t\tulTocJourney.append(...clonedChildrenJourney);\r\n\t} \r\n\r\n\r\n\r\n\r\n\t\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n        function getNavbarHeight() {\r\n            const navbar = document.getElementById('tdi_34');\r\n            return navbar ? navbar.offsetHeight : 0;\r\n        }\r\n\r\n        \/\/ Fungsi untuk menambahkan offset posisi scroll\r\n        function scrollToElementWithOffset(elementId) {\r\n            const element = document.getElementById(elementId);\r\n            if (element) {\r\n                const offset = getNavbarHeight();\r\n                const elementPosition = element.getBoundingClientRect().top;\r\n                const offsetPosition = elementPosition - offset-40;\r\n\r\n                window.scrollBy({\r\n                    top: offsetPosition,\r\n                    behavior: 'smooth'\r\n                });\r\n            }\r\n        }\r\n\r\n        \/\/ Fungsi untuk menangani klik pada tautan judul\r\n        function handleTitleClick(event) {\r\n            event.preventDefault();\r\n            const href = event.target.getAttribute('href').substr(1);\r\n            scrollToElementWithOffset(href);\r\n        }\r\n\r\n        \/\/ Tambahkan event listener untuk semua tautan judul\r\n        const titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n        titleLinks.forEach(link => {\r\n            link.addEventListener('click', handleTitleClick);\r\n        });\r\n\t});\r\n    <\/script> -->\r\n<!-- \t<style>#toc_group_float{display:block !important}<\/style> -->\r\n<\/span><\/span><\/p>\n<h2><b><span id=\"pengertian\">What is a General Contractor?<\/span><\/b><\/h2>\n<p><span style=\"font-weight: 400;\">A general contractor is a licensed professional or firm responsible for managing construction projects from start to finish. They act as the central authority\u2014coordinating timelines, labor, budgeting, and subcontractors to ensure efficient project delivery.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">General contractors provide peace of mind for business owners by overseeing every step of the construction journey. Unlike renovation contractors, who may handle only small-scale upgrades or remodeling, general contractors manage full-scale builds.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">This includes everything from obtaining permits to post-construction cleanup. Whether it\u2019s a commercial facility, a residential tower, or a retail center, general contractors must ensure the project meets safety, regulatory, and quality standards.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In Malaysia, general contractors must meet strict requirements under the BCA registration framework. These standards are in place to maintain quality and safety, especially in public infrastructure projects. Many adopt advanced <\/span><a href=\"https:\/\/www.hashmicro.com\/blog\/construction-management-guidelines-part-1\/\"><span style=\"font-weight: 400;\">construction management guidelines<\/span><\/a><span style=\"font-weight: 400;\"> to ensure smooth project execution and stakeholder alignment.<\/span><\/p>\n<h2><b><span id=\"kunci\">Key Responsibilities of a General Contractor<\/span><\/b><\/h2>\n<p><span style=\"font-weight: 400;\">A general contractor wears many hats, ensuring that every component of a construction project runs according to plan. Below are the core duties typically handled by building contractors:<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">1. Project planning and scheduling<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">General contractors create detailed schedules that outline project phases, deadlines, and resource needs. They coordinate labor, materials, and equipment to ensure that tasks are completed without delays. This planning minimizes disruptions and keeps the project on track from start to finish.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">2. Budgeting and construction estimating<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">They prepare accurate <\/span><a href=\"https:\/\/www.hashmicro.com\/blog\/construction-estimating\/\"><span style=\"font-weight: 400;\">construction estimating<\/span><\/a><span style=\"font-weight: 400;\"> reports covering labor, materials, and unforeseen costs. This helps clients manage expenses efficiently and avoid overruns. Well-estimated budgets provide financial clarity and reduce risks throughout the project lifecycle.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">3. Subcontractor coordination<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">General contractors oversee subcontractors such as renovation contractors, electricians, and plumbers to ensure smooth collaboration. They assign responsibilities, monitor daily progress, and address on-site challenges. Effective coordination results in higher productivity and consistent quality.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">4. Regulatory compliance and safety<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">They ensure the project complies with safety laws and building regulations while minimizing legal risks. This includes proper documentation, worker training, and regular site inspections. A strong focus on compliance promotes a safe working environment and prevents costly delays.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Still unsure whether a construction management system is the right fit for your projects? No worries! Try a pricing scheme today and consult with our experts to explore how this solution can transform the way you manage construction operations. Click the banner below to get started!<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><span data-sheets-root=\"1\"><a href=\"https:\/\/www.hashmicro.com\/my\/offer\/download-erp-pricing-list?medium=banner-article\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/skema-harga-desktop-my.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/skema-harga-desktop-my.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/skema-harga-mobile-my.webp\" alt=\"SkemaHarga\" class=\"responsive-image-banner\"><\/a>\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script><\/span><\/span><\/p>\n<h2><b>General Contractor vs Renovation Contractor<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">While both general and renovation contractors operate in the construction industry, their roles differ significantly in terms of scope and responsibility. Understanding this distinction helps businesses hire the right professional for the job.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">General contractors oversee the entire building process, from structural work to finishing touches. They manage large teams and ensure the project aligns with architectural plans, <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/best-software-for-civil-engineering\/\">engineering<\/a> standards, and budget goals.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In contrast, renovation contractors typically handle smaller, specialized tasks such as upgrading office interiors, repainting, or installing new plumbing. They\u2019re ideal for projects that don\u2019t require full construction oversight.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">For businesses undertaking ground-up development or major structural expansion, hiring a general contractor is essential for complete project control and long-term value.<\/span><\/p>\n<p><strong>Read more:<\/strong> <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/site-inventory\/\">Site Inventory Control Guide for Construction Sites<\/a><\/p>\n<h2><b>Benefits of Using Construction Management Software<\/b><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-70501 size-full\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/04\/General-Contractor.webp\" alt=\"General Contractor\" width=\"1200\" height=\"675\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Incorporating construction management software into project execution has become a game-changer for contractors. These digital platforms streamline real-time communication, documentation, and progress tracking. By automating and centralizing key functions, they enhance accuracy, efficiency, and decision-making across all construction phases.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">1. Centralized project oversight<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">All project data, including schedules, documents, and updates, is stored in one unified platform. This makes it easier for stakeholders to monitor progress and identify issues early. A centralized system reduces confusion and improves overall coordination among teams.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">2. Accurate construction estimating<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The software provides built-in construction estimating tools that calculate real-time costs based on updated project data. This enhances budgeting precision and helps avoid cost overruns. With clear cost visibility, contractors can make more confident financial decisions.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">3. Improved communication and collaboration<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Project teams, subcontractors, and clients can communicate through integrated messaging and task management features. This eliminates delays caused by miscommunication or missed updates. Better collaboration leads to faster approvals and smoother project execution.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">4. Real-time reporting and analytics<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Users can generate instant reports on budgets, schedules, resource use, and performance metrics. These insights support faster, data-driven decisions and highlight potential bottlenecks. Real-time analytics ensure that adjustments are made before issues escalate.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">5. Enhanced document management<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Construction management software organizes contracts, blueprints, RFIs, and compliance documents in a structured system. This reduces the risk of losing important files and ensures quick retrieval when needed. Efficient documentation helps maintain legal and regulatory compliance.<\/span><\/p>\n<p><strong>Read more:<\/strong> <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/punch-list\/\">A Comprehensive Guide to Punch List in Construction<\/a><\/p>\n<h2><b>The Importance of Construction Management Guidelines<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Adhering to proven construction management guidelines ensures that every project phase meets industry standards and client expectations. These frameworks establish best practices for planning, communication, quality control, and safety. They serve as a roadmap to minimize errors and deliver predictable outcomes.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Standard guidelines cover essential areas like pre-construction risk assessments, resource allocation, quality assurance protocols, and post-construction evaluations. Consistently following these principles leads to better efficiency, accountability, and stakeholder satisfaction. Moreover, it aligns the entire team with clearly defined roles and responsibilities.<\/span><\/p>\n<p><span class=\"_fadeIn_m1hgl_8\">Companies <\/span><span class=\"_fadeIn_m1hgl_8\">that <\/span><span class=\"_fadeIn_m1hgl_8\">enforce <\/span><span class=\"_fadeIn_m1hgl_8\">strict <\/span><span class=\"_fadeIn_m1hgl_8\">adherence <\/span><span class=\"_fadeIn_m1hgl_8\">to <\/span><span class=\"_fadeIn_m1hgl_8\">management <\/span><span class=\"_fadeIn_m1hgl_8\">guidelines <\/span><span class=\"_fadeIn_m1hgl_8\">benefit <\/span><span class=\"_fadeIn_m1hgl_8\">from <\/span><span class=\"_fadeIn_m1hgl_8\">fewer <\/span><span class=\"_fadeIn_m1hgl_8\">project <\/span><span class=\"_fadeIn_m1hgl_8\">delays, <\/span><span class=\"_fadeIn_m1hgl_8\">reduced <\/span><span class=\"_fadeIn_m1hgl_8\">costs, <\/span><span class=\"_fadeIn_m1hgl_8\">and <\/span><span class=\"_fadeIn_m1hgl_8\">improved <\/span><span class=\"_fadeIn_m1hgl_8\">team <\/span><span class=\"_fadeIn_m1hgl_8\">coordination. <\/span><span class=\"_fadeIn_m1hgl_8\">These <\/span><span class=\"_fadeIn_m1hgl_8\">guidelines <\/span><span class=\"_fadeIn_m1hgl_8\">are <\/span><span class=\"_fadeIn_m1hgl_8\">a <\/span><span class=\"_fadeIn_m1hgl_8\">cornerstone <\/span><span class=\"_fadeIn_m1hgl_8\">of <\/span><span class=\"_fadeIn_m1hgl_8\">successful <\/span><span class=\"_fadeIn_m1hgl_8\">project <\/span><span class=\"_fadeIn_m1hgl_8\">delivery, <\/span><span class=\"_fadeIn_m1hgl_8\">whether <\/span><span class=\"_fadeIn_m1hgl_8\">through <\/span><span class=\"_fadeIn_m1hgl_8\">manual <\/span><span class=\"_fadeIn_m1hgl_8\">processes <\/span><span class=\"_fadeIn_m1hgl_8\">or <\/span><span class=\"_fadeIn_m1hgl_8\">advanced <\/span><span class=\"_fadeIn_m1hgl_8\">construction <\/span><span class=\"_fadeIn_m1hgl_8\">management <\/span><span class=\"_fadeIn_m1hgl_8\">software, <\/span><span class=\"_fadeIn_m1hgl_8\">including <\/span><a href=\"https:\/\/www.hashmicro.com\/my\/blog\/best-construction-inventory-software\/\"><span class=\"_fadeIn_m1hgl_8\">construction <\/span><span class=\"_fadeIn_m1hgl_8\">inventory <\/span><span class=\"_fadeIn_m1hgl_8\">software <\/span><\/a><span class=\"_fadeIn_m1hgl_8\">that streamlines material tracking and resource allocation<\/span><span class=\"_fadeIn_m1hgl_8\">.<\/span><\/p>\n<h2><strong>Improve Construction Efficiency and Accuracy with Construction Management Software<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"alignnone size-full wp-image-15358\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/Screenshot-2026-02-03-120427.webp\" alt=\"\" width=\"1354\" height=\"551\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/Screenshot-2026-02-03-120427.webp 1354w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/Screenshot-2026-02-03-120427-300x122.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/Screenshot-2026-02-03-120427-1024x417.webp 1024w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/Screenshot-2026-02-03-120427-768x313.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/Screenshot-2026-02-03-120427-1032x420.webp 1032w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/Screenshot-2026-02-03-120427-150x61.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/Screenshot-2026-02-03-120427-696x283.webp 696w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/Screenshot-2026-02-03-120427-1068x435.webp 1068w\" sizes=\"(max-width: 1354px) 100vw, 1354px\" \/><\/p>\n<p>Coordinating budgets, schedules, and teams across multiple sites can get complicated fast, especially when updates are scattered across spreadsheets and chat threads. That setup often creates delays, mismatched handovers, and cost leakage that only shows up when it\u2019s already expensive to fix.<\/p>\n<p><a href=\"https:\/\/www.hashmicro.com\/hash-construction-software\">Construction management software<\/a> helps contractors centralise project data, automate approvals, and track progress with clearer accountability. Instead of chasing status updates, teams can work from the same timeline, budget baseline, and documentation, so decisions happen faster, and fewer tasks fall through the cracks.<\/p>\n<p>Here are key capabilities to look for in a construction project management platform:<\/p>\n<h3><strong>1. Tender and contract management<\/strong><\/h3>\n<p>Track tender status, deadlines, and required documents in one place, so submissions don\u2019t rely on manual reminders. A structured contract workflow also shortens review cycles and reduces version confusion.<\/p>\n<h3><strong>2. Purchasing and vendor control<\/strong><\/h3>\n<p>Use an approval matrix to keep purchases aligned with project needs and authorised budgets. Vendor portals and bid comparisons help standardise procurement and improve price visibility while keeping records audit-ready.<\/p>\n<h3><strong>3. Real-time project monitoring<\/strong><\/h3>\n<p>Monitor progress against budget and timeline, with clear assignment tracking across projects. Visual tools like S-curves and claim reporting make it easier to spot deviations early and document cost impacts properly.<\/p>\n<h3><strong>4. Material and inventory management<\/strong><\/h3>\n<p>Maintain accurate stock visibility per site and track deliveries and consumption across locations. Forecasting and reorder suggestions help prevent last-minute shortages without overbuying materials that sit idle.<\/p>\n<h3><strong>5. Financial and budgeting controls<\/strong><\/h3>\n<p>Build more accurate cost estimates, then track actual spending in real time against the budget baseline. Integrated accounting and multi-branch reporting support cleaner reconciliation and more consistent compliance documentation.<\/p>\n<style>\r\n    #custom-quote {\r\n        background-color: #f0f0f0;\r\n        padding: 20px;\r\n        border-radius: 12px;\r\n        margin: 20px;\r\n        display: flex;\r\n        flex-direction: column;\r\n    }\r\n\r\n    #custom-quote .quote-body {\r\n        display: flex;\r\n        flex-direction: row;\r\n        align-items: flex-start;\r\n        gap: 15px;\r\n        font-size: 16px;\r\n        line-height: 1.5;\r\n        font-style: italic;\r\n    }\r\n\r\n    #custom-quote .quote-icon {\r\n        width: 40px;\r\n        height: 40px;\r\n        flex-shrink: 0;\r\n    }\r\n\r\n    #custom-quote .quote-author-wrapper {\r\n        margin-top: 15px;\r\n        align-self: flex-start;\r\n        margin-left: 55px; \r\n\t\tmargin-bottom: 0px;\r\n    }\r\n\r\n    #custom-quote em {\r\n        font-family: 'Roboto Serif', serif !important;\r\n        font-size: 12px;\r\n        font-weight: bold;\r\n        font-style: normal;\r\n    }\r\n\r\n    @media screen and (max-width: 768px) {\r\n        #custom-quote {\r\n            margin: 15px 0;\r\n            padding: 15px;\r\n        }\r\n        \r\n        #custom-quote .quote-body {\r\n            gap: 12px;\r\n        }\r\n\r\n        #custom-quote .quote-author-wrapper {\r\n            margin-left: 52px;\r\n        }\r\n    }\r\n\r\n    @media screen and (max-width: 480px) {\r\n        #custom-quote {\r\n            margin: 10px 0;\r\n            padding: 12px;\r\n        }\r\n\r\n        #custom-quote .quote-body {\r\n            font-size: 14px;\r\n            gap: 10px;\r\n        }\r\n\r\n        #custom-quote .quote-icon {\r\n            width: 32px;\r\n            height: 32px;\r\n        }\r\n\r\n        #custom-quote .quote-author-wrapper {\r\n            margin-top: 10px;\r\n            margin-left: 42px;\r\n        }\r\n    }\r\n<\/style>\r\n\r\n<div id=\"custom-quote\">\r\n    <div class=\"quote-body\">\r\n        <img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/12\/quote.webp\" alt=\"Quote Icon\" class=\"quote-icon\">\r\n        <div>\r\n            Some teams adopt an integrated construction management platform to centralise procurement, site progress, materials, and budgeting in one system, so updates stay consistent across teams and decisions happen faster        <\/div>\r\n    <\/div>\r\n    <p class=\"quote-author-wrapper\">\r\n        <em>Angela Tan, Regional Manager<\/em>\r\n    <\/p>\r\n<\/div>\n<p>Also Read: <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/best-construction-accounting-software\/\">Construction accounting software<\/a> for general contractors.<\/p>\n<h2><b>Conclusion<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">General contractors play a vital role in the success of construction projects by managing timelines, coordinating subcontractors, and ensuring compliance with construction management guidelines. Their ability to oversee all aspects of a project, from budgeting to execution, is essential in delivering results on time and within budget.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">With<\/span><a href=\"https:\/\/www.hashmicro.com\/hash-construction-software\"><span style=\"font-weight: 400;\">\u00a0Construction Management Software<\/span><\/a><span style=\"font-weight: 400;\">, contractors, renovation contractors, and building contractors can automate workflows, improve construction estimating accuracy, and centralize project data. The system provides real-time insights, streamlined communication, and efficient resource management across every job site.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">HashMicro is an innovative solution for construction management, from precise planning to successful project delivery. With advanced features tailored for the industry, it boosts accuracy, speeds up operations, and reduces costly errors. Try a <\/span><a href=\"https:\/\/www.hashmicro.com\/free-product-tour\/?medium=web-form-header\"><span style=\"font-weight: 400;\">free consultation<\/span><\/a><span style=\"font-weight: 400;\"> today and transform the way you manage construction projects!<\/span><\/p>\n<h2><strong>Question About General Contractor<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>How much do most general contractors make?<\/strong><\/summary>\n<p>In Malaysia, general contractors typically earn between <strong data-start=\"56\" data-end=\"91\">RM60,000 and RM120,000 annually<\/strong>, depending on their level of experience, the complexity of the projects they manage, and the size of the construction firm. Those handling large-scale developments or working with established companies may also receive <strong data-start=\"311\" data-end=\"340\">performance-based bonuses<\/strong> and <strong data-start=\"345\" data-end=\"378\">additional project allowances<\/strong>, increasing their overall compensation.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>What is the difference between a general contractor and a project manager?<\/strong><\/summary>\n<p>A general contractor oversees the construction work, manages subcontractors, and ensures legal and safety compliance. A project manager focuses more on planning, budgeting, and communication with stakeholders to ensure the project stays on track.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>What type of contractor makes the most money?<\/strong><\/summary>\n<p>Specialized contractors such as electrical, HVAC, and structural contractors typically earn more due to the technical expertise required. Design-build contractors and those handling large commercial projects also tend to have higher profit margins.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>What does a contractor do?<\/strong><\/summary>\n<p>A contractor manages construction work by organizing labor, materials, and equipment. Their responsibilities include hiring subcontractors, interpreting blueprints, ensuring timely project delivery, and adhering to building codes.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [{\n    \"@type\": \"Question\",\n    \"name\": \"How much do most general contractors make?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"In Malaysia, general contractors typically earn between RM60,000 and RM120,000 annually, depending on their level of experience, the complexity of the projects they manage, and the size of the construction firm. Those handling large-scale developments or working with established companies may also receive performance-based bonuses and additional project allowances, increasing their overall compensation.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"What is the difference between a general contractor and a project manager?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"A general contractor oversees the construction work, manages subcontractors, and ensures legal and safety compliance. A project manager focuses more on planning, budgeting, and communication with stakeholders to ensure the project stays on track.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"What type of contractor makes the most money?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Specialized contractors such as electrical, HVAC, and structural contractors typically earn more due to the technical expertise required. Design-build contractors and those handling large commercial projects also tend to have higher profit margins.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"What does a contractor do?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"A contractor manages construction work by organizing labor, materials, and equipment. Their responsibilities include hiring subcontractors, interpreting blueprints, ensuring timely project delivery, and adhering to building codes.\"\n    }\n  }]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>When a construction project lacks clear oversight, small issues pile up quickly, including late materials, overlapping subcontractor tasks, and shifting schedules. The result is predictable: rework, cost overruns, and a hit to credibility. In Malaysia, that risk matters even more as construction activity continues to rise. The Department of Statistics Malaysia reported a value added [&hellip;]<\/p>\n","protected":false},"author":38,"featured_media":5926,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[61],"tags":[],"class_list":{"0":"post-5918","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-construction"},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.6 (Yoast SEO v26.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>What Is a General Contractor? A Definitive Guide for Businesses<\/title>\n<meta name=\"description\" content=\"General contractors is professionals who manage construction projects to ensure on-time delivery, budget efficiency, and adherence to quality.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What is a General Contractor? A Definitive Guide for Businesses\" \/>\n<meta property=\"og:description\" content=\"General contractors is professionals who manage construction projects to ensure on-time delivery, budget efficiency, and adherence to quality.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Malaysia\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-08T08:11:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-18T07:36:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/General-Contractor-Hasmicro.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Zulkarnain bin Idris\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Zulkarnain bin Idris\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/\"},\"author\":{\"name\":\"Zulkarnain bin Idris\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/f6667e0b454a9938c0688e22064ff64c\"},\"headline\":\"What is a General Contractor? A Definitive Guide for Businesses\",\"datePublished\":\"2025-04-08T08:11:58+00:00\",\"dateModified\":\"2026-02-18T07:36:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/\"},\"wordCount\":1712,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/General-Contractor-Hasmicro.webp\",\"articleSection\":[\"Construction\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/\",\"name\":\"What Is a General Contractor? A Definitive Guide for Businesses\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/General-Contractor-Hasmicro.webp\",\"datePublished\":\"2025-04-08T08:11:58+00:00\",\"dateModified\":\"2026-02-18T07:36:36+00:00\",\"description\":\"General contractors is professionals who manage construction projects to ensure on-time delivery, budget efficiency, and adherence to quality.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/General-Contractor-Hasmicro.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/General-Contractor-Hasmicro.webp\",\"width\":1200,\"height\":675,\"caption\":\"General Contractor Hasmicro\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/my\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What is a General Contractor? A Definitive Guide for Businesses\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/\",\"name\":\"HashMicro Malaysia\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/my\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\",\"name\":\"HashMicro Malaysia\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp\",\"width\":422,\"height\":255,\"caption\":\"HashMicro Malaysia\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/f6667e0b454a9938c0688e22064ff64c\",\"name\":\"Zulkarnain bin Idris\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/cropped-Zulkarnain-bin-Idris-BG-Tangga-1080x1080-1-96x96.webp\",\"contentUrl\":\"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/cropped-Zulkarnain-bin-Idris-BG-Tangga-1080x1080-1-96x96.webp\",\"caption\":\"Zulkarnain bin Idris\"},\"description\":\"Zulkarnain bin Idris focuses on writing articles tailored to various industries, including manufacturing, distribution, and construction. He ensures each piece addresses industry-specific challenges and trends, helping readers understand how technology can transform their operations. By staying updated on market shifts, he develops fresh, relevant content that resonates with professionals in diverse sectors.\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/author\/zulkarnain-bin-idris\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"What Is a General Contractor? A Definitive Guide for Businesses","description":"General contractors is professionals who manage construction projects to ensure on-time delivery, budget efficiency, and adherence to quality.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/","og_locale":"en_US","og_type":"article","og_title":"What is a General Contractor? A Definitive Guide for Businesses","og_description":"General contractors is professionals who manage construction projects to ensure on-time delivery, budget efficiency, and adherence to quality.","og_url":"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/","og_site_name":"HashMicro Malaysia","article_published_time":"2025-04-08T08:11:58+00:00","article_modified_time":"2026-02-18T07:36:36+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/General-Contractor-Hasmicro.webp","type":"image\/webp"}],"author":"Zulkarnain bin Idris","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Zulkarnain bin Idris","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/"},"author":{"name":"Zulkarnain bin Idris","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/f6667e0b454a9938c0688e22064ff64c"},"headline":"What is a General Contractor? A Definitive Guide for Businesses","datePublished":"2025-04-08T08:11:58+00:00","dateModified":"2026-02-18T07:36:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/"},"wordCount":1712,"publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/General-Contractor-Hasmicro.webp","articleSection":["Construction"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/","name":"What Is a General Contractor? A Definitive Guide for Businesses","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/General-Contractor-Hasmicro.webp","datePublished":"2025-04-08T08:11:58+00:00","dateModified":"2026-02-18T07:36:36+00:00","description":"General contractors is professionals who manage construction projects to ensure on-time delivery, budget efficiency, and adherence to quality.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/#primaryimage","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/General-Contractor-Hasmicro.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/04\/General-Contractor-Hasmicro.webp","width":1200,"height":675,"caption":"General Contractor Hasmicro"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/my\/blog\/general-contractor\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/my\/blog\/"},{"@type":"ListItem","position":2,"name":"What is a General Contractor? A Definitive Guide for Businesses"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website","url":"https:\/\/www.hashmicro.com\/my\/blog\/","name":"HashMicro Malaysia","description":"","publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/my\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization","name":"HashMicro Malaysia","url":"https:\/\/www.hashmicro.com\/my\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp","width":422,"height":255,"caption":"HashMicro Malaysia"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/f6667e0b454a9938c0688e22064ff64c","name":"Zulkarnain bin Idris","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/image\/","url":"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/cropped-Zulkarnain-bin-Idris-BG-Tangga-1080x1080-1-96x96.webp","contentUrl":"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/cropped-Zulkarnain-bin-Idris-BG-Tangga-1080x1080-1-96x96.webp","caption":"Zulkarnain bin Idris"},"description":"Zulkarnain bin Idris focuses on writing articles tailored to various industries, including manufacturing, distribution, and construction. He ensures each piece addresses industry-specific challenges and trends, helping readers understand how technology can transform their operations. By staying updated on market shifts, he develops fresh, relevant content that resonates with professionals in diverse sectors.","url":"https:\/\/www.hashmicro.com\/my\/blog\/author\/zulkarnain-bin-idris\/"}]}},"order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/5918","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/users\/38"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/comments?post=5918"}],"version-history":[{"count":12,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/5918\/revisions"}],"predecessor-version":[{"id":16562,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/5918\/revisions\/16562"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media\/5926"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media?parent=5918"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/categories?post=5918"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/tags?post=5918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}