{"id":76271,"date":"2025-10-10T04:21:42","date_gmt":"2025-10-10T04:21:42","guid":{"rendered":"https:\/\/www.hashmicro.com\/blog\/?p=76271"},"modified":"2025-10-20T04:27:57","modified_gmt":"2025-10-20T04:27:57","slug":"bill-of-quantities","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/","title":{"rendered":"What is a Bill of Quantities? Definition, Benefits &#038; Example"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">A <\/span><b>Bill of Quantities (BoQ)<\/b><span style=\"font-weight: 400;\"> is a detailed document that lists all the work, materials, and labour needed for a construction project. Having an accurate BoQ is essential, as errors can lead to cost overruns, delays, or disputes between contractors and clients.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Studies show that construction projects in Southeast Asia often experience <\/span><a href=\"https:\/\/wseas.com\/journals\/articles.php?id=8435\"><b>10\u201325% cost<\/b><\/a> <span style=\"font-weight: 400;\">overruns due to inaccurate measurements or incomplete BoQs. This highlights the importance of proper documentation in achieving project success.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">To overcome these challenges, <\/span><a href=\"https:\/\/www.hashmicro.com\/hash-construction-software\"><b>HashMicro Construction<\/b><\/a><span style=\"font-weight: 400;\"> provides digital solutions for managing BoQs. The system offers real-time material calculations, automated cost tracking, and integration with procurement and inventory, ensuring your BoQs are precise, transparent, and easy to update.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">In this article, we\u2019ll explore what a BoQ is, its main benefits, common mistakes to avoid, and examples of how a well-prepared BoQ can streamline your construction project from start to finish.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><a href=\"https:\/\/www.hashmicro.com\/free-product-tour\/?medium=free-product-tour\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"712\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/11\/Free-Product-Tour-resized.webp\" alt=\"Free Demo\"><\/a> <!-- <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\">Table of Content<\/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<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\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<!-- 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\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\r\n\r\n\r\n\t\r\n\/\/ \tmake the heading at the center of the viewport\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/     \/\/ Add click event listener to all links in the TOC list\r\n\/\/     document.querySelectorAll('#toc-list a').forEach(anchor => {\r\n\/\/         anchor.addEventListener('click', function (e) {\r\n\/\/             e.preventDefault(); \/\/ Prevent the default behavior of jumping to the anchor\r\n\/\/ \/\/ \t\t\tconsole.log(\"prevent default\");\r\n\/\/             const targetId = this.getAttribute('href').substring(1); \/\/ Get the ID of the target element\r\n\/\/             const targetElement = document.getElementById(targetId); \/\/ Get the target element\r\n\r\n\/\/             if (targetElement) {\r\n\/\/                 const headerHeight = document.querySelector('#toc .header').offsetHeight; \/\/ Get the height of the fixed header\r\n\/\/                 const windowHeight = window.innerHeight; \/\/ Get the height of the viewport\r\n\/\/                 const targetOffset = targetElement.offsetTop; \/\/ Get the top offset of the target element\r\n\/\/                 const scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight); \/\/ Calculate the scroll position to center the target element\r\n\r\n\/\/                 \/\/ Scroll to the calculated position smoothly\r\n\/\/                 window.scrollTo({\r\n\/\/                     top: scrollTo,\r\n\/\/                     behavior: 'smooth'\r\n\/\/                 });\r\n\/\/             }\r\n\/\/         });\r\n\/\/     });\r\n\/\/ });\r\n<\/script>\r\n\r\n<!-- START script lama -->\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<\/script> -->\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\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']; \/\/ 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\nToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\"\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;} \/\/ Kalau Key Takeaways, jangan dimasukin\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\tDapatkan elemen ul dengan id 'list_toc_float'\r\nconst ulFloat = document.getElementById('list_toc');\r\nconst ulJourney = document.getElementById('list_journey');\r\n\r\nDapatkan 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\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<\/span><\/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 data-start=\"49\" data-end=\"196\"><a href=\"#what\">Bill of Quantities (BoQ)<\/a> is a detailed document outlining materials, labor, and costs in a construction project to ensure accurate budgeting.<\/li>\n<li data-start=\"199\" data-end=\"313\"><a href=\"#benefit\">The key benefit<\/a> is improving cost estimation, transparency, and efficiency throughout the project lifecycle.<\/li>\n<li data-start=\"316\" data-end=\"448\"><a href=\"https:\/\/www.hashmicro.com\/hash-construction-software\">HashMicro Construction System<\/a> automates BoQ management with real-time tracking and budgeting tools for better project control.<\/li>\n<\/ul>\n<p><span data-sheets-root=\"1\"><style>\r\n.button-cta-custom {\r\n    background-color: #8a0e19;\r\n    color: #fff !important;\r\n    -webkit-transition: all .3s ease;\r\n    transition: all .3s ease;\r\n    padding: 8px 24px;\r\n    display: inline-block;\r\n    border-radius: 8px;\r\n    font-size: 16px;\r\n    font-weight: bold;\r\n}\r\n.button-cta-custom:hover{\r\n\tbackground-color:#991b26\t\t\r\n}\r\n<\/style>\r\n<a class=\"button-cta-custom\" href=\"https:\/\/www.hashmicro.com\/free-product-tour\/?medium=cta-button\" target=\"_blank\">Book a Demo Now!<\/a><\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><strong>What Is a Bill of Quantities (BoQ) in Construction?<\/strong><\/h2>\n<p><span id=\"what\"><span style=\"font-weight: 400;\">A Bill of Quantities (BoQ) is a document that lists all materials, labor, and work needed for a construction project. It shows what is required and how much of each item is needed to plan costs and resources accurately.<\/span><\/span><\/p>\n<p><span style=\"font-weight: 400;\">BoQs serve as a detailed guide for contractors and clients, helping them estimate project costs, manage resources, and reduce misunderstandings. They typically include item descriptions, units of measurement, quantities, and unit rates.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">By standardizing this information, BoQs make tendering more transparent and support better decision-making throughout the project lifecycle.<\/span><\/p>\n<h2><strong>What are the Types of Bill of Quantities (BoQ)?<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">It\u2019s essential to know that there are different types of BoQs used in construction projects, each designed to serve specific purposes and project stages. Choosing the right type ensures better cost planning, resource management, and tendering accuracy.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">1. Preliminary BoQ<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Prepared during the early design phase, this BoQ provides rough estimates of materials, labor, and work scope. While less detailed, it is essential for feasibility studies, budgeting, and initial project planning, as it helps stakeholders decide whether to proceed with the project.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">2. Detailed BoQ<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">This is the most comprehensive type, listing every item of work, material, labor, and unit rate. It is primarily used for tendering, accurate cost estimation, and contract preparation, ensuring transparency and minimizing disputes between contractors and clients.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">3. Elemental BoQ<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Organizes the work according to building elements or systems, such as foundations, walls, roofing, or electrical installations. This format helps project managers analyze costs per element, identify resource allocation, and manage construction phases efficiently.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">4. Unit Rate BoQ<\/span><\/h3>\n<p><span id=\"benefit\"><span style=\"font-weight: 400;\">Focuses on unit costs for each item of work, making it easier to handle variations, changes, or adjustments during the construction process. It allows contractors to quickly calculate totals if quantities change, ensuring flexibility in project budgeting.<\/span><\/span><\/p>\n<h2><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-76273\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/boq.webp\" alt=\"What are the Benefits of the Bill of Quantities(BoQ)?\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/boq.webp 1200w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/boq-300x169.webp 300w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/boq-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/boq-768x432.webp 768w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/boq-747x420.webp 747w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/boq-150x84.webp 150w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/boq-696x392.webp 696w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/boq-1068x601.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/h2>\n<p><span style=\"font-weight: 400;\">A well-prepared BoQ offers multiple advantages for both clients and contractors in construction projects. Here are the main benefits:<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">1. Accurate cost estimation<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">BoQs provide detailed lists of materials, labor, and work items, which allow project stakeholders to estimate costs accurately. This minimizes the risk of budget overruns and unexpected expenses during the construction process.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">2. Improved project planning<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">With a clear BoQ, contractors can plan resources, <\/span><a href=\"https:\/\/www.hashmicro.com\/blog\/schedule-of-rates\/\"><span style=\"font-weight: 400;\">schedule rates<\/span><\/a><span style=\"font-weight: 400;\">, and manage workforce more efficiently. It ensures that materials and labor are allocated at the right time, reducing delays and bottlenecks.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">3. Transparent tendering process<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">A standardized BoQ ensures that all contractors bid based on the same information, promoting fairness and transparency. This helps clients select the most competitive and suitable contractor.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">4. Enhanced risk management<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">BoQs allow for better identification of potential cost and material risks. By analyzing quantities and rates beforehand, stakeholders can prepare for contingencies and avoid disputes later.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">5. Efficient contract administration<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">BoQs provide a clear framework for tracking progress, managing payments, and handling variations. This simplifies contract management and ensures both parties agree on what is included in the project scope.<\/span><\/p>\n<h2><strong>Bill of Quantities vs. Bill of Materials<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">A <\/span><b>Bill of Quantities (BoQ)<\/b><span style=\"font-weight: 400;\"> is a detailed list of all work, materials, and labor needed for a construction project. It focuses on quantities, descriptions, and unit rates, helping contractors and clients estimate costs, plan resources, and manage contracts effectively. BoQs are mainly used in construction, infrastructure, and renovation projects.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">On the other hand, a <\/span><b>Bill of Materials (BoM)<\/b><span style=\"font-weight: 400;\"> lists raw materials, components, and assemblies required to manufacture a product. It is commonly used in manufacturing and production to track inventory, plan production, and calculate costs.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Unlike BoQs, BoMs focus on materials rather than labor or project-level budgeting, making them more suitable for product assembly and factory operations.<\/span><\/p>\n<h2><strong>What Should Be Included in a Bill of Quantities?<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">To prepare an effective Bill of Quantities (BoQ), it\u2019s essential to understand the key components that make it accurate and useful. Including the correct elements ensures proper cost estimation, clear communication, and smooth project execution.<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Item Description: <\/b><span style=\"font-weight: 400;\">Lists all work tasks and materials required for the project. Clear descriptions ensure contractors understand what needs to be done and what materials to use.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Unit of Measurement: <\/b><span style=\"font-weight: 400;\">Specifies the standard unit for each item, such as square meters, cubic meters, or pieces. This ensures consistency in calculations and avoids confusion.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Quantity: <\/b><span style=\"font-weight: 400;\">Indicates the amount of each item required. Accurate quantities help prevent cost overruns and material shortages during the project.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Unit Rates \/ Prices: <\/b><span style=\"font-weight: 400;\">Includes the cost per unit of each item, allowing for precise calculation of the total cost for each work element.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Notes or Specifications: <\/b><span style=\"font-weight: 400;\">Provides additional information such as quality standards, methods of execution, or special requirements. This ensures clarity and reduces the risk of disputes.<\/span><\/li>\n<\/ul>\n<h2><strong>Step-by-Step Guide for Creating Bills of Quantities<\/strong><\/h2>\n<p><span style=\"font-weight: 400;\">Creating an accurate Bill of Quantities (BoQ) is essential for proper project planning and cost management. The following steps provide a clear process to prepare a comprehensive BoQ for construction projects:<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">1. Analyze project documents<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Review architectural drawings, design plans, and specifications to fully understand the scope of work. This step ensures that all tasks and materials are identified before listing them in the BoQ.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">2. List work items and materials<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Identify all work tasks and materials required for the project. Each item should be clearly described so contractors and stakeholders know precisely what is included.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">3. Assign units of measurement<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Determine the unit for each item, such as square meters for walls or cubic meters for concrete. Consistent units help avoid calculation errors and make the BoQ easier to interpret.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">4. Calculate quantities<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Measure the quantity needed for each item based on project drawings and specifications. Accurate quantities prevent material shortages and reduce the risk of cost overruns.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">5. Determine unit rates \/ prices<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Set the cost per unit for each item, based on market rates, supplier quotes, or historical data. Multiply the quantity by the unit rate to get the total cost for each work item.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">6. Compile and review the BoQ<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Organize the BoQ into sections (e.g., foundation, walls, roofing, electrical, finishing) and include any notes or specifications for quality standards or special requirements. Review thoroughly to ensure accuracy before using it for tendering or budgeting.<\/span><\/p>\n<h2><strong>How HashMicro Construction Management System Simplifies BoQ Preparation<\/strong><\/h2>\n<p><a href=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/08\/hashmicro-construction-procurement-software.webp\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-60681 size-full\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/08\/hashmicro-construction-procurement-software.webp\" alt=\"HashMicro Construction schedule\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/08\/hashmicro-construction-procurement-software.webp 1200w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/08\/hashmicro-construction-procurement-software-300x169.webp 300w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/08\/hashmicro-construction-procurement-software-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/08\/hashmicro-construction-procurement-software-768x432.webp 768w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/08\/hashmicro-construction-procurement-software-747x420.webp 747w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/08\/hashmicro-construction-procurement-software-150x84.webp 150w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/08\/hashmicro-construction-procurement-software-696x392.webp 696w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/08\/hashmicro-construction-procurement-software-1068x601.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Managing a construction project becomes much easier with the right digital tools. <\/span><a href=\"https:\/\/www.hashmicro.com\/hash-construction-software\"><span style=\"font-weight: 400;\">HashMicro Construction Management System<\/span><\/a><span style=\"font-weight: 400;\"> helps streamline every step of BoQ creation from material estimation to cost tracking, ensuring accuracy and efficiency throughout your project.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">With automated features such as real-time material calculation, cost forecasting, and integration with procurement and inventory, HashMicro enables project managers to generate detailed BoQs in less time and with fewer errors.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Key Features of HashMicro Construction Management Software:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Budget S-curve Management: <\/b><span style=\"font-weight: 400;\">Allows users to create S-curve charts for budgets, comparing planned versus actual spending to monitor financial performance early.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Planned vs. Actual Project Cost (S-curve): <\/b><span style=\"font-weight: 400;\">Utilizes S-curve visualization to track discrepancies between projected and actual project costs, facilitating the identification of overruns or savings.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Planned vs. Actual Project Progress (S-curve): <\/b><span style=\"font-weight: 400;\">Displays planned versus actual progress using S-curves, supporting performance monitoring, and ensuring projects stay on schedule.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Project Cost Tracking: <\/b><span style=\"font-weight: 400;\">Optimizes resources and manages costs by comparing actual expenses against the project budget with S-curve insights.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Detailed Budgeting for Construction: <\/b><span style=\"font-weight: 400;\">Enables comprehensive financial planning for materials, assets, petty cash, overheads, and subcontractors to ensure precise budgeting.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Budget Carry-over: <\/b><span style=\"font-weight: 400;\">Transfers unused budget to the next period, allowing efficient fund allocation and preventing waste.<\/span><\/li>\n<\/ul>\n<h3><strong>Conclusion<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">A <\/span><b>Bill of Quantities (BoQ)<\/b><span style=\"font-weight: 400;\"> is a detailed document that lists all work, materials, and labour required for a construction project. It defines what needs to be done and how much of each item is needed, serving as a crucial tool for planning, budgeting, and tendering.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The importance of a BoQ lies in its ability to ensure accurate cost estimation, improve project planning, and reduce disputes between clients and contractors. By clearly outlining quantities, unit rates, and specifications, it supports transparency and efficient resource management throughout the project lifecycle.<\/span><\/p>\n<p><a href=\"https:\/\/www.hashmicro.com\/hash-construction-software\"><span style=\"font-weight: 400;\">HashMicro Construction Management System<\/span><\/a><span style=\"font-weight: 400;\"> streamlines BoQ management with real-time material calculations, S-curve budgeting, and cost tracking, enabling projects to stay on schedule and within budget.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Take control of your construction projects today. Book a <\/span><a href=\"https:\/\/www.hashmicro.com\/free-product-tour\/\"><span style=\"font-weight: 400;\">free demo<\/span><\/a><span style=\"font-weight: 400;\"> with HashMicro and see how automated BoQ management can enhance efficiency and accuracy for your team.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><a href=\"https:\/\/www.hashmicro.com\/hash-construction-software?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"712\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/06\/Construction.webp\" alt=\"Hash Construction Suite\"><\/a><\/span><\/p>\n<h3><strong>FAQ About Bill of Quantities (BoQ)<\/strong><\/h3>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>What is the difference between BoQ and BOM?<\/strong><\/summary>\n<p>A BoM is primarily utilized for inventory management, procurement, and production processes, whereas a BoQ supports project bidding, budgeting, and cost oversight. In terms of timing, a BoM is typically developed later during the detailed design phase, while a BoQ is usually prepared in the pre-construction stage.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>What is the purpose of a BoQ?<\/strong><\/summary>\n<p>A Bill of Quantities (BoQ or BQ) is a document created by a quantity surveyor or cost consultant that outlines the types and amounts of work the main contractor must complete to finish a construction project.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>How to calculate bill of quantity?<\/strong><\/summary>\n<p>Unit rates can differ based on the project\u2019s scale, location, and complexity. After assigning the rates, determine the total cost for each item by multiplying the quantity by its unit rate.<\/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\": \"What is the difference between BoQ and BOM?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"A BoM is primarily utilized for inventory management, procurement, and production processes, whereas a BoQ supports project bidding, budgeting, and cost oversight. In terms of timing, a BoM is typically developed later during the detailed design phase, while a BoQ is usually prepared in the pre-construction stage.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"What is the purpose of a BoQ?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"A Bill of Quantities (BoQ or BQ) is a document created by a quantity surveyor or cost consultant that outlines the types and amounts of work the main contractor must complete to finish a construction project.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"How to calculate bill of quantity?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Unit rates can differ based on the project\u2019s scale, location, and complexity. After assigning the rates, determine the total cost for each item by multiplying the quantity by its unit rate.\"\n    }\n  }]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A Bill of Quantities (BoQ) is a detailed document that lists all the work, materials, and labour needed for a construction project. Having an accurate BoQ is essential, as errors can lead to cost overruns, delays, or disputes between contractors and clients. Studies show that construction projects in Southeast Asia often experience 10\u201325% cost overruns [&hellip;]<\/p>\n","protected":false},"author":218,"featured_media":76272,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[3],"tags":[],"class_list":{"0":"post-76271","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 Bill of Quantities? Definition, Benefits &amp; Example<\/title>\n<meta name=\"description\" content=\"A complete guide to the Bill of Quantities (BoQ): definition, benefits, examples, and how it improves project efficiency.\" \/>\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\/blog\/bill-of-quantities\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What is a Bill of Quantities? Definition, Benefits &amp; Example\" \/>\n<meta property=\"og:description\" content=\"A complete guide to the Bill of Quantities (BoQ): definition, benefits, examples, and how it improves project efficiency.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/\" \/>\n<meta property=\"og:site_name\" content=\"BusinessTech\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/web.facebook.com\/hashmicro\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-10T04:21:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-20T04:27:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/Bill-of-Quantities.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"576\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Aulia kholqiana\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:site\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Aulia kholqiana\" \/>\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\/blog\/bill-of-quantities\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/\"},\"author\":{\"name\":\"Aulia kholqiana\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/8ba48ccbeb0c9f5c51940619f406e5e7\"},\"headline\":\"What is a Bill of Quantities? Definition, Benefits &#038; Example\",\"datePublished\":\"2025-10-10T04:21:42+00:00\",\"dateModified\":\"2025-10-20T04:27:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/\"},\"wordCount\":1716,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/Bill-of-Quantities.webp\",\"articleSection\":[\"Construction\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/\",\"name\":\"What is a Bill of Quantities? Definition, Benefits & Example\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/Bill-of-Quantities.webp\",\"datePublished\":\"2025-10-10T04:21:42+00:00\",\"dateModified\":\"2025-10-20T04:27:57+00:00\",\"description\":\"A complete guide to the Bill of Quantities (BoQ): definition, benefits, examples, and how it improves project efficiency.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/Bill-of-Quantities.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/Bill-of-Quantities.webp\",\"width\":1024,\"height\":576,\"caption\":\"Bill of Quantities\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What is a Bill of Quantities? Definition, Benefits &#038; Example\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/\",\"name\":\"BusinessTech\",\"description\":\"Business Management Blog\",\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/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\/blog\/#organization\",\"name\":\"HashMicro\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png\",\"width\":334,\"height\":51,\"caption\":\"HashMicro\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/web.facebook.com\/hashmicro\/\",\"https:\/\/x.com\/hashmicro\",\"https:\/\/www.linkedin.com\/company\/hashmicro\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/8ba48ccbeb0c9f5c51940619f406e5e7\",\"name\":\"Aulia kholqiana\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9843219f141142ee7baeaf92522635a6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9843219f141142ee7baeaf92522635a6?s=96&d=mm&r=g\",\"caption\":\"Aulia kholqiana\"},\"description\":\"As a content writer who turns technical complexity into compelling narratives, my words guide businesses through the labyrinth of technology, transforming challenges into opportunities for growth.\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/author\/auliakholqiana\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"What is a Bill of Quantities? Definition, Benefits & Example","description":"A complete guide to the Bill of Quantities (BoQ): definition, benefits, examples, and how it improves project efficiency.","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\/blog\/bill-of-quantities\/","og_locale":"en_US","og_type":"article","og_title":"What is a Bill of Quantities? Definition, Benefits & Example","og_description":"A complete guide to the Bill of Quantities (BoQ): definition, benefits, examples, and how it improves project efficiency.","og_url":"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/","og_site_name":"BusinessTech","article_publisher":"https:\/\/web.facebook.com\/hashmicro\/","article_published_time":"2025-10-10T04:21:42+00:00","article_modified_time":"2025-10-20T04:27:57+00:00","og_image":[{"width":1024,"height":576,"url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/Bill-of-Quantities.webp","type":"image\/webp"}],"author":"Aulia kholqiana","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Written by":"Aulia kholqiana","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/"},"author":{"name":"Aulia kholqiana","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/8ba48ccbeb0c9f5c51940619f406e5e7"},"headline":"What is a Bill of Quantities? Definition, Benefits &#038; Example","datePublished":"2025-10-10T04:21:42+00:00","dateModified":"2025-10-20T04:27:57+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/"},"wordCount":1716,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/Bill-of-Quantities.webp","articleSection":["Construction"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/","url":"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/","name":"What is a Bill of Quantities? Definition, Benefits & Example","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/Bill-of-Quantities.webp","datePublished":"2025-10-10T04:21:42+00:00","dateModified":"2025-10-20T04:27:57+00:00","description":"A complete guide to the Bill of Quantities (BoQ): definition, benefits, examples, and how it improves project efficiency.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/#primaryimage","url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/Bill-of-Quantities.webp","contentUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/10\/Bill-of-Quantities.webp","width":1024,"height":576,"caption":"Bill of Quantities"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/blog\/bill-of-quantities\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/blog\/"},{"@type":"ListItem","position":2,"name":"What is a Bill of Quantities? Definition, Benefits &#038; Example"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/blog\/#website","url":"https:\/\/www.hashmicro.com\/blog\/","name":"BusinessTech","description":"Business Management Blog","publisher":{"@id":"https:\/\/www.hashmicro.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/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\/blog\/#organization","name":"HashMicro","url":"https:\/\/www.hashmicro.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png","contentUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png","width":334,"height":51,"caption":"HashMicro"},"image":{"@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/web.facebook.com\/hashmicro\/","https:\/\/x.com\/hashmicro","https:\/\/www.linkedin.com\/company\/hashmicro"]},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/8ba48ccbeb0c9f5c51940619f406e5e7","name":"Aulia kholqiana","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9843219f141142ee7baeaf92522635a6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9843219f141142ee7baeaf92522635a6?s=96&d=mm&r=g","caption":"Aulia kholqiana"},"description":"As a content writer who turns technical complexity into compelling narratives, my words guide businesses through the labyrinth of technology, transforming challenges into opportunities for growth.","url":"https:\/\/www.hashmicro.com\/blog\/author\/auliakholqiana\/"}]}},"order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts\/76271","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/users\/218"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/comments?post=76271"}],"version-history":[{"count":1,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts\/76271\/revisions"}],"predecessor-version":[{"id":76274,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts\/76271\/revisions\/76274"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/media\/76272"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/media?parent=76271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/categories?post=76271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/tags?post=76271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}