{"id":7331,"date":"2026-10-23T05:27:28","date_gmt":"2026-10-23T05:27:28","guid":{"rendered":"https:\/\/extreemtek.com\/?p=7331"},"modified":"2026-10-23T13:41:43","modified_gmt":"2026-10-23T13:41:43","slug":"iot-development-partner-checklist","status":"publish","type":"post","link":"https:\/\/extreemtek.com\/nl\/iot-development-partner-checklist\/","title":{"rendered":"Zo kies je een IoT-ontwikkelpartner: een checklist met 12 punten"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"7331\" class=\"elementor elementor-7331\">\n\t\t\t\t<div class=\"elementor-element elementor-element-de53e3c e-con-full e-flex e-con e-parent\" data-id=\"de53e3c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e71a309 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"e71a309\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Inter+Tight:wght@400;500;600;700;800&display=swap');\n\n#sk-nav{\n  --sk-navy:#0a1a4d;\n  --sk-amber-lite:#F5B01A;\n  --sk-amber-deep:#D86605;\n  --sk-line:#e6e9f0;\n\n  position:relative;\n  z-index:900;\n  background:#fff;\n  border-bottom:1px solid var(--sk-line);\n  font-family:\"Inter Tight\",system-ui,-apple-system,\"Segoe UI\",sans-serif;\n  -webkit-font-smoothing:antialiased;\n}\n#sk-nav *,#sk-nav *::before,#sk-nav *::after{box-sizing:border-box}\n\n#sk-nav .sk-n-bar{\n  display:flex;\n  align-items:center;\n  gap:1rem;\n  max-width:1300px;\n  margin:0 auto;\n  padding:.85rem 1.25rem;\n}\n\n\/* logo *\/\n#sk-nav .sk-n-logo{flex:none;display:inline-flex;align-items:center;line-height:0}\n#sk-nav .sk-n-logo img{\n  display:block;\n  width:auto;\n  height:46px;\n  max-width:none;\n}\n\n\/* desktop links *\/\n#sk-nav .sk-n-links{\n  display:flex;\n  align-items:center;\n  gap:clamp(1.2rem,3vw,2.4rem);\n  margin:0 auto;\n  padding:0;\n  list-style:none;\n}\n#sk-nav .sk-n-links li{margin:0;padding:0;list-style:none}\n#sk-nav .sk-n-links li::marker,#sk-nav .sk-n-links li::before{content:none}\n#sk-nav .sk-n-links a{\n  font-size:1.02rem;\n  font-weight:600;\n  letter-spacing:-.01em;\n  color:var(--sk-navy);\n  text-decoration:none;\n  transition:color .16s ease;\n}\n#sk-nav .sk-n-links a:hover{color:#1a56e8}\n\n\/* cta *\/\n#sk-nav .sk-n-cta{\n  flex:none;\n  display:inline-flex;\n  align-items:center;\n  justify-content:center;\n  padding:.78rem 1.4rem;\n  border:0;\n  border-radius:8px;\n  background:linear-gradient(180deg,var(--sk-amber-lite) 0%,var(--sk-amber-deep) 100%);\n  color:#fff;\n  font-family:inherit;\n  font-size:.95rem;\n  font-weight:700;\n  letter-spacing:-.01em;\n  text-decoration:none;\n  white-space:nowrap;\n  box-shadow:0 6px 18px rgba(216,102,5,.3);\n  transition:transform .18s ease,box-shadow .18s ease;\n}\n#sk-nav .sk-n-cta:hover{\n  transform:translateY(-1px);color:#fff;text-decoration:none;\n  box-shadow:0 10px 24px rgba(216,102,5,.4);\n}\n#sk-nav .sk-n-cta:focus-visible{outline:3px solid var(--sk-navy);outline-offset:3px}\n\n\/* hamburger \u2014 hidden on desktop *\/\n#sk-nav .sk-n-toggle{\n  display:none;\n  flex:none;\n  width:44px;height:44px;\n  padding:0;\n  border:1px solid var(--sk-line);\n  border-radius:10px;\n  background:#fff;\n  color:var(--sk-navy);\n  cursor:pointer;\n  align-items:center;\n  justify-content:center;\n  line-height:0;\n}\n#sk-nav .sk-n-toggle:focus-visible{outline:3px solid var(--sk-navy);outline-offset:2px}\n#sk-nav .sk-n-toggle svg{display:block;flex:none}\n#sk-nav .sk-n-toggle .sk-n-close{display:none}\n#sk-nav .sk-n-toggle[aria-expanded=\"true\"] .sk-n-open{display:none}\n#sk-nav .sk-n-toggle[aria-expanded=\"true\"] .sk-n-close{display:block}\n\n\/* ---------- MOBILE ---------- *\/\n@media (max-width:1024px){\n  #sk-nav .sk-n-bar{gap:.7rem;padding:.7rem 1rem}\n  #sk-nav .sk-n-logo img{height:38px}\n  #sk-nav .sk-n-toggle{display:inline-flex}\n\n  #sk-nav .sk-n-cta{\n    margin-left:auto;\n    padding:.66rem 1rem;\n    font-size:.86rem;\n  }\n\n  \/* links become the drop panel *\/\n  #sk-nav .sk-n-links{\n    position:absolute;\n    left:0;right:0;\n    top:100%;\n    display:grid;\n    gap:0;\n    margin:0;\n    padding:0 1rem .6rem;\n    background:#fff;\n    border-bottom:1px solid var(--sk-line);\n    box-shadow:0 14px 30px rgba(10,26,77,.10);\n    opacity:0;\n    visibility:hidden;\n    transform:translateY(-10px);\n    transition:opacity .22s ease,transform .22s ease,visibility .22s ease;\n  }\n  #sk-nav .sk-n-links.is-open{\n    opacity:1;\n    visibility:visible;\n    transform:translateY(0);\n  }\n  #sk-nav .sk-n-links a{\n    display:block;\n    padding:.95rem .25rem;\n    font-size:1.05rem;\n    border-bottom:1px solid #f2f4f8;\n  }\n  #sk-nav .sk-n-links li:last-child a{border-bottom:0}\n}\n\n@media (max-width:420px){\n  #sk-nav .sk-n-logo img{height:32px}\n  #sk-nav .sk-n-cta{padding:.6rem .8rem;font-size:.8rem}\n  #sk-nav .sk-n-toggle{width:40px;height:40px}\n}\n\n@media (prefers-reduced-motion:reduce){\n  #sk-nav *{transition:none !important}\n}\n<\/style>\n\n<header id=\"sk-nav\">\n  <nav class=\"sk-n-bar\" aria-label=\"Main\">\n\n    <a class=\"sk-n-logo\" href=\"https:\/\/extreemtek.com\/\">\n      <img decoding=\"async\" src=\"https:\/\/extreemtek.com\/wp-content\/uploads\/2026\/09\/Frame.png\" alt=\"ExtreemTek \u2014 Engineering Ideas into Intelligent Reality\">\n    <\/a>\n\n    <ul class=\"sk-n-links\" id=\"skNavLinks\">\n      <li><a href=\"https:\/\/extreemtek.com\/\">Home<\/a><\/li>\n      <li><a href=\"https:\/\/extreemtek.com\/#services\">What We Do<\/a><\/li>\n      <li><a href=\"https:\/\/extreemtek.com\/#case-studies\">Case Studies<\/a><\/li>\n      <li><a href=\"https:\/\/extreemtek.com\/#how-we-work\">How We Work<\/a><\/li><li><a href=\"https:\/\/extreemtek.com\/contact-us\/\">Contact Us<\/a><\/li>\n    <\/ul>\n\n    <a class=\"sk-n-cta\" href=\"#iot-cta\">Discuss Your Product<\/a>\n\n    <button class=\"sk-n-toggle\" id=\"skNavToggle\" type=\"button\" aria-expanded=\"false\" aria-controls=\"skNavLinks\" aria-label=\"Open menu\">\n      <svg class=\"sk-n-open\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M4 7h16M4 12h16M4 17h16\"><\/path><\/svg>\n      <svg class=\"sk-n-close\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M6 6l12 12M18 6L6 18\"><\/path><\/svg>\n    <\/button>\n\n  <\/nav>\n<\/header>\n\n<script>\n(function(){\n  var btn   = document.getElementById('skNavToggle');\n  var links = document.getElementById('skNavLinks');\n  if(!btn || !links) return;\n\n  function setOpen(open){\n    links.classList.toggle('is-open', open);\n    btn.setAttribute('aria-expanded', open);\n    btn.setAttribute('aria-label', open ? 'Close menu' : 'Open menu');\n  }\n\n  btn.addEventListener('click', function(){\n    setOpen(btn.getAttribute('aria-expanded') !== 'true');\n  });\n\n  \/* close after tapping a link *\/\n  links.addEventListener('click', function(e){\n    if(e.target.closest('a')) setOpen(false);\n  });\n\n  \/* close on Escape, and on outside tap *\/\n  document.addEventListener('keydown', function(e){\n    if(e.key === 'Escape') setOpen(false);\n  });\n  document.addEventListener('click', function(e){\n    if(!e.target.closest('#sk-nav')) setOpen(false);\n  });\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-adad60c e-con-full e-flex e-con e-parent\" data-id=\"adad60c\" data-element_type=\"container\" data-e-type=\"container\" id=\"main-content\">\n\t\t\t\t<div class=\"elementor-element elementor-element-1b7c2db elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"1b7c2db\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ExtreemTek blog post - same theme and style as the FileShift guides (fs-blog). -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Bricolage+Grotesque:opsz,wght@12..96,600;12..96,800&family=Figtree:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\n<style>\r\n.fs-blog{\r\n  \/* Brand colours - change here to match ExtreemTek *\/\r\n  --fs-ink:#15213A;\r\n  --fs-ink-soft:#4A5672;\r\n  --fs-paper:#F3F6FB;\r\n  --fs-blue:#2D5BE3;\r\n  --fs-blue-deep:#1B3C9E;\r\n  --fs-mint:#12A585;\r\n  --fs-line:#DCE3EF;\r\n  \/* Fonts - set both to \"inherit\" to use your theme's fonts instead *\/\r\n  --fs-display:\"Bricolage Grotesque\",\"Figtree\",system-ui,sans-serif;\r\n  --fs-body:\"Figtree\",system-ui,-apple-system,\"Segoe UI\",sans-serif;\r\n\r\n  \/* Type scale - one body size for every paragraph, clear steps for headings *\/\r\n  --fs-text:17px;      \/* all body paragraphs, lists, FAQ answers *\/\r\n  --fs-small:14px;     \/* dates, captions, table headings *\/\r\n  --fs-h1:clamp(38px,4vw,50px);\r\n  --fs-h2:30px;\r\n  --fs-h3:20px;\r\n  --fs-h4:18px;        \/* FAQ questions, download box title *\/\r\n\r\n  color:var(--fs-ink);\r\n  font-family:var(--fs-body);\r\n  font-size:var(--fs-text);\r\n  line-height:1.75;\r\n  -webkit-font-smoothing:antialiased;\r\n}\r\n.fs-blog *,.fs-blog *::before,.fs-blog *::after{box-sizing:border-box}\r\n.fs-blog [id]{scroll-margin-top:110px}\r\nhtml:has(.fs-blog){scroll-behavior:smooth}\r\n@media (prefers-reduced-motion:reduce){html:has(.fs-blog){scroll-behavior:auto}}\r\n.fs-blog a{color:var(--fs-blue)}\r\n.fs-blog a:focus-visible,.fs-blog summary:focus-visible{outline:3px solid var(--fs-blue);outline-offset:3px;border-radius:6px}\r\n.fs-blog p,.fs-blog li{font-size:var(--fs-text);line-height:1.75}\r\n.fs-blog p{margin:0 0 18px}\r\n.fs-blog img{max-width:100%;height:auto;display:block}\r\n\r\n\/* ---------- Headings ---------- *\/\r\n.fs-blog h1,.fs-blog h2,.fs-blog h3{font-family:var(--fs-display);color:var(--fs-ink);text-transform:none}\r\n.fs-blog h2{font-weight:800;font-size:var(--fs-h2);line-height:1.2;letter-spacing:-.02em;margin:56px 0 18px}\r\n.fs-blog h3{font-weight:700;font-size:var(--fs-h3);line-height:1.35;letter-spacing:-.01em;margin:32px 0 8px}\r\n\r\n\/* ---------- Back button ---------- *\/\r\n.fs-blog .fs-back{position:absolute;top:16px;left:var(--fs-hero-x,16px);z-index:1;display:grid;place-items:center;width:46px;height:46px;border-radius:50%;background:#fff;border:1.5px solid var(--fs-line);color:var(--fs-ink);text-decoration:none;margin:0;transition:background .15s,border-color .15s,color .15s}\r\n.fs-blog .fs-back:hover{background:var(--fs-ink);border-color:var(--fs-ink);color:#fff}\r\n.fs-blog .fs-back svg{width:22px;height:22px}\r\n\r\n\/* ---------- Title band ---------- *\/\r\n.fs-blog .fs-hero{\r\n  \/* full-width band: stretches past the page's side margins to the screen edges *\/\r\n  --fs-content:1140px;   \/* your page's content width in Elementor (default 1140px) *\/\r\n  --fs-hero-x:max(24px, calc((100vw - var(--fs-content)) \/ 2 + 10px));\r\n  position:relative;background:var(--fs-paper);border:0;border-bottom:1px solid var(--fs-line);border-radius:0;\r\n  width:100vw;margin:0 0 48px calc(50% - 50vw);\r\n  padding:40px var(--fs-hero-x);\r\n  display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:40px;align-items:center}\r\nbody:has(.fs-blog){overflow-x:clip}\r\n.fs-blog .fs-hero-text{padding-top:40px}\r\n.fs-blog .fs-hero .fs-cover{margin:0;background:#fff}\r\n.fs-blog .fs-hero .fs-cover:has(img[src^=\"PASTE\"]){aspect-ratio:16\/10}\r\n.fs-blog .fs-tag{display:inline-block;background:#fff;border:1px solid var(--fs-line);color:var(--fs-blue-deep);font-weight:700;font-size:var(--fs-small);line-height:1.4;padding:4px 12px;border-radius:999px;margin-bottom:18px}\r\n.fs-blog .fs-hero h1{font-weight:800;font-size:var(--fs-h1);line-height:1.08;letter-spacing:-.03em;margin:0 0 18px}\r\n.fs-blog .fs-meta{display:flex;flex-wrap:wrap;gap:6px 22px;font-size:15px;color:var(--fs-ink-soft);margin:0}\r\n.fs-blog .fs-meta strong{color:var(--fs-ink);font-weight:600}\r\n\r\n\/* ---------- Image slots (show a dashed box until an image URL is added) ---------- *\/\r\n.fs-blog .fs-img{margin:0 0 24px;border-radius:14px;overflow:hidden;background:var(--fs-paper);position:relative}\r\n.fs-blog .fs-img img{width:100%}\r\n.fs-blog .fs-img:has(img[src^=\"PASTE\"]){aspect-ratio:16\/9;border:2px dashed #B9C5DB;display:grid;place-items:center;text-align:center;padding:20px}\r\n.fs-blog .fs-img:has(img[src^=\"PASTE\"])::before{content:\"Image slot: \" attr(data-label);font-size:var(--fs-small);color:var(--fs-ink-soft);max-width:36ch}\r\n.fs-blog .fs-img img[src^=\"PASTE\"]{display:none}\r\n\r\n\/* ---------- Three-column layout: contents | article | related ---------- *\/\r\n.fs-blog .fs-layout{display:grid;grid-template-columns:220px minmax(0,1fr) 250px;grid-template-areas:\"toc article related\";gap:40px;align-items:start}\r\n.fs-blog .fs-toc{grid-area:toc}\r\n\/* Side columns stay on screen while you scroll (sticky). --fs-sticky-top = gap below your site header *\/\r\n.fs-blog .fs-toc,.fs-blog .fs-related{--fs-sticky-top:110px;position:sticky;top:var(--fs-sticky-top);align-self:start;max-height:calc(100vh - var(--fs-sticky-top) - 20px);overflow-y:auto;scrollbar-width:thin}\r\n.fs-blog .fs-article{grid-area:article;min-width:0}\r\n.fs-blog .fs-related{grid-area:related}\r\n.fs-blog .fs-article > h2:first-of-type{margin-top:40px}\r\n\r\n\/* Side panels (shared look for contents + related) *\/\r\n.fs-blog .fs-panel{background:var(--fs-paper);border:1px solid var(--fs-line);border-radius:14px;padding:18px 16px 14px}\r\n.fs-blog .fs-panel-title{font-family:var(--fs-display);font-weight:700;font-size:16px;line-height:1.3;letter-spacing:-.01em;color:var(--fs-ink);margin:0 0 12px;padding:0 4px 12px;border-bottom:1px solid var(--fs-line)}\r\n\r\n\/* Contents list *\/\r\n.fs-blog .fs-toc ol{list-style:none;margin:0;padding:0;counter-reset:fs-toc}\r\n.fs-blog .fs-toc li{margin:0;padding:0;font-size:14px;line-height:1.4;counter-increment:fs-toc}\r\n.fs-blog .fs-toc a{display:flex;gap:10px;padding:8px;border-radius:8px;color:var(--fs-ink-soft);text-decoration:none;font-size:14px;line-height:1.4}\r\n.fs-blog .fs-toc a::before{content:counter(fs-toc);flex:none;width:20px;height:20px;border-radius:50%;background:#fff;border:1px solid var(--fs-line);display:grid;place-items:center;font-size:11px;font-weight:700;color:var(--fs-ink-soft);margin-top:0}\r\n.fs-blog .fs-toc a:hover{background:#fff;color:var(--fs-ink)}\r\n.fs-blog .fs-toc a.is-active{background:#fff;color:var(--fs-blue-deep);font-weight:600}\r\n.fs-blog .fs-toc a.is-active::before{background:var(--fs-blue);border-color:var(--fs-blue);color:#fff}\r\n\r\n\/* Related list *\/\r\n.fs-blog .fs-related-list{display:grid;gap:4px}\r\n.fs-blog .fs-post{display:grid;grid-template-columns:64px minmax(0,1fr);gap:12px;align-items:center;padding:8px;border-radius:10px;text-decoration:none;color:var(--fs-ink)}\r\n.fs-blog .fs-post:hover{background:#fff}\r\n.fs-blog .fs-post-img{width:64px;height:64px;border-radius:8px;overflow:hidden;background:#E3E9F3}\r\n.fs-blog .fs-post-img img{width:100%;height:100%;object-fit:cover}\r\n.fs-blog .fs-post-title{font-family:var(--fs-body);font-weight:600;font-size:14px;line-height:1.35;color:var(--fs-ink);margin:0 0 4px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}\r\n.fs-blog .fs-post:hover .fs-post-title{color:var(--fs-blue)}\r\n.fs-blog .fs-post-date{font-size:12.5px;line-height:1.3;color:var(--fs-ink-soft);margin:0}\r\n.fs-blog .fs-related-empty[hidden]{display:none}\r\n.fs-blog .fs-related-empty{font-size:14px;line-height:1.5;color:var(--fs-ink-soft);margin:0;padding:4px 4px 6px}\r\n\r\n\/* ---------- Article details ---------- *\/\r\n.fs-blog .fs-article ul{margin:0 0 18px;padding-left:22px}\r\n.fs-blog .fs-article li{margin:4px 0}\r\n.fs-blog .fs-article li::marker{color:var(--fs-blue)}\r\n.fs-blog strong{font-weight:700;color:var(--fs-ink)}\r\n.fs-blog .fs-article p a,.fs-blog .fs-article li a{color:var(--fs-blue);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}\r\n.fs-blog .fs-article p a:hover{color:var(--fs-blue-deep);text-decoration-thickness:2px}\r\n.fs-blog .fs-cta p a{color:#fff;text-decoration:underline;text-underline-offset:3px}\r\n.fs-blog .fs-note{border-left:4px solid var(--fs-mint);background:#EEF9F6;padding:14px 18px;border-radius:0 10px 10px 0;margin:20px 0}\r\n.fs-blog .fs-note p{margin:0}\r\n\r\n\/* Comparison table *\/\r\n.fs-blog .fs-table-wrap{overflow-x:auto;margin:20px 0 8px;border:1px solid var(--fs-line);border-radius:12px;-webkit-overflow-scrolling:touch}\r\n.fs-blog .fs-table{width:100%;min-width:600px;border-collapse:collapse;border:0;margin:0;font-size:15px;line-height:1.45}\r\n.fs-blog .fs-table th,.fs-blog .fs-table td{text-align:left;padding:12px 14px;border:0;border-bottom:1px solid var(--fs-line);background:#fff;vertical-align:top;color:var(--fs-ink);font-size:15px}\r\n.fs-blog .fs-table thead th{font-size:var(--fs-small);color:var(--fs-ink-soft);font-weight:700;background:var(--fs-paper)}\r\n.fs-blog .fs-table tbody th{font-weight:700;min-width:120px}\r\n.fs-blog .fs-table tbody tr:last-child th,.fs-blog .fs-table tbody tr:last-child td{border-bottom:0}\r\n.fs-blog .fs-table tr.fs-us th,.fs-blog .fs-table tr.fs-us td{background:#EAF0FF}\r\n.fs-blog .fs-table tr.fs-us th{color:var(--fs-blue-deep)}\r\n.fs-blog .fs-table tr.fs-us td{font-weight:700}\r\n.fs-blog .fs-table .fs-good{color:var(--fs-mint);font-weight:700}\r\n.fs-blog .fs-swipe{display:none;font-size:var(--fs-small)}\r\n\r\n\/* Features *\/\r\n.fs-blog .fs-features{border-top:1px solid var(--fs-line)}\r\n.fs-blog .fs-feature{display:grid;grid-template-columns:44px minmax(0,1fr);gap:0 16px;padding:22px 0;border-bottom:1px solid var(--fs-line)}\r\n.fs-blog .fs-ico{width:44px;height:44px;border-radius:12px;background:var(--fs-paper);display:grid;place-items:center;color:var(--fs-blue)}\r\n.fs-blog .fs-ico svg{width:22px;height:22px}\r\n.fs-blog .fs-feature h3{margin:8px 0 6px}\r\n.fs-blog .fs-feature p{margin:0}\r\n.fs-blog .fs-article .fs-connect{list-style:none;padding:0;margin:14px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:10px}\r\n.fs-blog .fs-article .fs-connect li{display:flex;align-items:center;gap:12px;margin:0;padding:12px 14px;border:1.5px solid var(--fs-line);border-radius:12px;font-weight:600;line-height:1.35}\r\n.fs-blog .fs-connect svg{flex:none;width:24px;height:24px;color:var(--fs-blue)}\r\n\r\n\/* Download box *\/\r\n.fs-blog .fs-cta{margin:32px 0 0;padding:28px;border-radius:16px;background:var(--fs-ink);color:#fff}\r\n.fs-blog .fs-cta .fs-cta-title{font-family:var(--fs-display);font-weight:800;font-size:22px;line-height:1.25;letter-spacing:-.01em;margin:0 0 6px;color:#fff}\r\n.fs-blog .fs-cta p{color:#C9D3EA}\r\n.fs-blog .fs-stores{display:flex;flex-wrap:wrap;gap:12px;margin-top:4px}\r\n.fs-blog .fs-store{display:inline-flex;align-items:center;gap:10px;background:#fff;color:var(--fs-ink);text-decoration:none;padding:9px 16px 9px 12px;border-radius:12px;line-height:1.15}\r\n.fs-blog .fs-store:hover{background:#E8EEFF;color:var(--fs-ink)}\r\n.fs-blog .fs-store svg{width:24px;height:24px}\r\n.fs-blog .fs-store small{display:block;font-size:11.5px;color:var(--fs-ink-soft)}\r\n.fs-blog .fs-store b{font-size:16px}\r\n\r\n\/* FAQs *\/\r\n.fs-blog .fs-faq{border-top:1px solid var(--fs-line)}\r\n.fs-blog .fs-faq details{border-bottom:1px solid var(--fs-line);margin:0}\r\n.fs-blog .fs-faq summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 0;font-family:var(--fs-display);font-weight:700;font-size:var(--fs-h4);line-height:1.35;color:var(--fs-ink)}\r\n.fs-blog .fs-faq summary::-webkit-details-marker{display:none}\r\n.fs-blog .fs-faq summary::after{content:\"\";flex:none;width:10px;height:10px;border-right:2.5px solid var(--fs-blue);border-bottom:2.5px solid var(--fs-blue);transform:rotate(45deg) translate(-3px,-3px);transition:transform .2s}\r\n.fs-blog .fs-faq details[open] summary::after{transform:rotate(225deg) translate(-3px,-3px)}\r\n.fs-blog .fs-faq details p{margin:0 0 20px;color:var(--fs-ink-soft)}\r\n\r\n\/* ---------- Laptop: related panel moves under the article ---------- *\/\r\n@media (max-width:1180px){\r\n  .fs-blog .fs-layout{grid-template-columns:220px minmax(0,1fr);grid-template-areas:\"toc article\" \"toc related\";row-gap:48px}\r\n  .fs-blog .fs-related{position:static;max-height:none;overflow:visible}\r\n  .fs-blog .fs-related-list{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}\r\n}\r\n\/* ---------- Tablet & phone: one column ---------- *\/\r\n@media (max-width:1024px){\r\n  .fs-blog .fs-layout{grid-template-columns:minmax(0,1fr);grid-template-areas:\"toc\" \"article\" \"related\";gap:0}\r\n  .fs-blog .fs-toc,.fs-blog .fs-related{position:static;max-height:none;overflow:visible}\r\n  .fs-blog .fs-toc{margin-bottom:32px}\r\n  .fs-blog .fs-related{margin-top:48px}\r\n}\r\n@media (max-width:900px){\r\n  .fs-blog .fs-hero{grid-template-columns:1fr;gap:28px}\r\n}\r\n@media (max-width:700px){\r\n  .fs-blog .fs-swipe{display:block}\r\n}\r\n@media (max-width:560px){\r\n  .fs-blog{--fs-text:16px;--fs-h1:32px;--fs-h2:25px;--fs-h3:19px;--fs-h4:17px}\r\n  .fs-blog .fs-hero{--fs-hero-x:20px;padding-top:28px;padding-bottom:28px}\r\n  .fs-blog .fs-hero-text{padding-top:46px}\r\n  .fs-blog .fs-back{top:12px}\r\n  .fs-blog h2{margin-top:44px}\r\n  .fs-blog .fs-article .fs-connect{grid-template-columns:1fr}\r\n  .fs-blog .fs-cta{padding:24px 20px}\r\n}\r\n@media (prefers-reduced-motion:reduce){\r\n  .fs-blog .fs-faq summary::after,.fs-blog .fs-back{transition:none}\r\n}\r\n\n\/* ---------- Extra blocks used by guide posts (same look as above) ---------- *\/\n.fs-blog .fs-hero h1 em{font-style:normal;color:var(--fs-blue)}\n.fs-blog .fs-article ol:not(.fs-steps){margin:0 0 18px;padding-left:22px}\n.fs-blog .fs-article ol:not(.fs-steps) li::marker{color:var(--fs-blue);font-weight:700}\n.fs-blog .fs-article > .fs-note:first-child{margin-top:0}\n.fs-blog .fs-steps{list-style:none;margin:20px 0 8px;padding:0;counter-reset:fs-step;border-top:1px solid var(--fs-line)}\n.fs-blog .fs-article .fs-steps li{counter-increment:fs-step;position:relative;margin:0;padding:22px 0 22px 60px;border-bottom:1px solid var(--fs-line)}\n.fs-blog .fs-steps li::before{content:counter(fs-step);position:absolute;left:0;top:22px;width:44px;height:44px;border-radius:12px;background:var(--fs-paper);color:var(--fs-blue);display:grid;place-items:center;font-family:var(--fs-display);font-weight:800;font-size:18px;line-height:1}\n.fs-blog .fs-steps h3{margin:8px 0 6px}\n.fs-blog .fs-cards{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:20px 0 8px}\n.fs-blog .fs-card{background:var(--fs-paper);border:1px solid var(--fs-line);border-radius:14px;padding:20px}\n.fs-blog .fs-card .fs-tag{margin-bottom:10px}\n.fs-blog .fs-card h3{margin:0 0 6px}\n.fs-blog .fs-card p{margin:0}\n.fs-blog .fs-btns{display:flex;flex-wrap:wrap;gap:12px;margin:26px 0 8px}\n.fs-blog .fs-article .fs-btn{display:inline-flex;align-items:center;gap:8px;background:var(--fs-blue);color:#fff;text-decoration:none;font-weight:700;font-size:16px;padding:13px 22px;border-radius:12px;line-height:1.3;transition:background .15s}\n.fs-blog .fs-article .fs-btn:hover{background:var(--fs-blue-deep);color:#fff}\n@media (max-width:560px){ .fs-blog .fs-cards{grid-template-columns:1fr} .fs-blog .fs-article .fs-steps li{padding-left:56px} }\n<\/style>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"What should I look for in an IoT development company?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Look for a company that can build hardware, firmware, mobile apps and cloud together, has shipped connected products to production, builds security in from the start, understands EU rules such as RED and the Cyber Resilience Act, tests on real devices and gives you full ownership of the code.\"}},{\"@type\":\"Question\",\"name\":\"Should I use one IoT partner or separate vendors for firmware and the app?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"One partner is usually faster and cheaper overall. Separate vendors add coordination time, duplicated testing and slow bug fixing at the boundary between device, app and cloud, which is where most IoT problems happen.\"}},{\"@type\":\"Question\",\"name\":\"Which security rules apply to IoT devices in the EU?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Since 1 August 2025, internet-connected radio equipment must meet the cybersecurity requirements of the Radio Equipment Directive. The Cyber Resilience Act adds reporting duties from 11 September 2026 and most other obligations from 11 December 2027. GDPR applies when personal data is processed.\"}},{\"@type\":\"Question\",\"name\":\"How long does it take to develop an IoT product?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"It depends on whether hardware already exists. Adding an app and cloud to an existing device can take a few months, while a new product with custom hardware, certification and production usually takes considerably longer. A discovery phase gives a realistic timeline.\"}},{\"@type\":\"Question\",\"name\":\"Who should own the code of my IoT product?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"You should. Make sure the contract gives you the source code for firmware, apps and cloud, plus signing keys, credentials and documentation, so you can change suppliers if you need to.\"}}]}<\/script>\n<div class=\"fs-blog\">\n  <header class=\"fs-hero\">\n    <div class=\"fs-hero-text\">\n      <!-- BACK BUTTON: goes to the home page -->\n      <a class=\"fs-back\" href=\"https:\/\/extreemtek.com\/\" aria-label=\"Back to home page\" title=\"Back to home page\">\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M19 12H5\"\/><path d=\"M12 19l-7-7 7-7\"\/><\/svg>\n      <\/a>\n      <span class=\"fs-tag\">Blog \u00b7 IoT Development<\/span>\n      <h1>How to Choose an IoT Development Partner: <em>A 12-Point Checklist<\/em><\/h1>\n      <p class=\"fs-meta\">\n        <span>By <strong>Aqeel Wahlah<\/strong>, Founder and CEO of ExtreemTek<\/span>\n        <span><time datetime=\"2026-10-23\">October 23, 2026<\/time><\/span>\n        <span>6 min read<\/span>\n      <\/p>\n    <\/div>\n    <figure class=\"fs-img fs-cover\" data-label=\"Cover image\">\n      <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/extreemtek.com\/wp-content\/uploads\/2026\/10\/iot-development-partner-checklist.jpg\" alt=\"Checklist for choosing an IoT development partner\" width=\"1600\" height=\"900\">\n    <\/figure>\n  <\/header>\n\n  <div class=\"fs-layout\">\n    <nav class=\"fs-toc\" aria-label=\"Table of Contents\">\n      <div class=\"fs-panel\">\n        <p class=\"fs-panel-title\">Table of Contents<\/p>\n        <ol>\n          <li><a href=\"#checklist\">The 12-point checklist<\/a><\/li>\n          <li><a href=\"#rules\">EU and UK security rules to ask about<\/a><\/li>\n          <li><a href=\"#questions\">Questions to ask in the first call<\/a><\/li>\n          <li><a href=\"#flags\">Red flags<\/a><\/li>\n          <li><a href=\"#faq\">FAQ<\/a><\/li>\n        <\/ol>\n      <\/div>\n    <\/nav>\n\n    <article class=\"fs-article\">\n        <div class=\"fs-note\"><p><strong>Short answer:<\/strong> choose an IoT development partner that can own the whole product (hardware, firmware, mobile app and cloud), has shipped connected devices before, builds security in from the start, knows EU rules such as the Radio Equipment Directive and the Cyber Resilience Act, tests on real devices and phones, and gives you full ownership of the code. Ask for references and a clear plan for updates after launch.<\/p><\/div>\n\n        <p>An IoT product only works when four layers work together: the device, its firmware, the app and the cloud. Most IoT projects that go over budget fail at the joins between those layers, not inside them. That is why the partner you choose matters more for IoT than for almost any other kind of software. Use this checklist to compare IoT development companies.<\/p>\n\n        <h2 id=\"checklist\">The 12-point IoT partner checklist<\/h2>\n\n        <div class=\"fs-table-wrap\" role=\"region\" aria-label=\"The 12-point IoT partner checklist\" tabindex=\"0\">\n          <table class=\"fs-table\">\n            <thead>\n              <tr><th scope=\"col\">#<\/th><th scope=\"col\">What to check<\/th><th scope=\"col\">Why it matters<\/th><\/tr>\n            <\/thead>\n            <tbody>\n              <tr><td>1<\/td><td><strong>End-to-end capability<\/strong>: hardware, firmware, app and cloud<\/td><td>One accountable team avoids finger-pointing when a device and app stop talking<\/td><\/tr>\n              <tr><td>2<\/td><td><strong>Shipped connected products<\/strong>, not only demos<\/td><td>Production devices reveal problems prototypes never show<\/td><\/tr>\n              <tr><td>3<\/td><td><strong>Connectivity experience<\/strong>: BLE, Wi-Fi, cellular or LoRa<\/td><td>Each protocol changes battery life, pairing, range and app logic<\/td><\/tr>\n              <tr><td>4<\/td><td><strong>Firmware and over-the-air (OTA) updates<\/strong><\/td><td>You must be able to fix bugs and security issues in devices already sold<\/td><\/tr>\n              <tr><td>5<\/td><td><strong>Security by design<\/strong><\/td><td>Secure boot, encrypted communication and no default passwords are now legal requirements in many markets<\/td><\/tr>\n              <tr><td>6<\/td><td><strong>Compliance knowledge<\/strong>: CE, RED, CRA, GDPR<\/td><td>Late compliance work causes redesigns and launch delays<\/td><\/tr>\n              <tr><td>7<\/td><td><strong>Testing on real devices and phones<\/strong><\/td><td>Bluetooth behaves differently across phone brands and OS versions<\/td><\/tr>\n              <tr><td>8<\/td><td><strong>Scalable cloud and data design<\/strong><\/td><td>Costs and reliability depend on how telemetry and device fleets are handled<\/td><\/tr>\n              <tr><td>9<\/td><td><strong>Clear ownership of code and IP<\/strong><\/td><td>You need the source code, keys and documentation to stay independent<\/td><\/tr>\n              <tr><td>10<\/td><td><strong>Transparent process<\/strong>: demos, shared code access, fixed priorities<\/td><td>You see progress every sprint instead of at the end<\/td><\/tr>\n              <tr><td>11<\/td><td><strong>Support after launch<\/strong><\/td><td>Phones, operating systems and threats keep changing after release<\/td><\/tr>\n              <tr><td>12<\/td><td><strong>References you can call<\/strong><\/td><td>Past clients tell you how the team handles problems<\/td><\/tr>\n            <\/tbody>\n          <\/table>\n        <\/div>\n        <p class=\"fs-swipe\">Swipe the table sideways to see every column.<\/p>\n\n        <h2 id=\"rules\">EU and UK security rules to ask about<\/h2>\n\n        <p>Security is no longer optional for connected devices. A good IoT partner should explain how these rules affect your product:<\/p>\n\n        <ul>\n<li><strong>Radio Equipment Directive (RED) cybersecurity requirements:<\/strong> since 1 August 2025, internet-connected radio equipment sold in the EU must meet cybersecurity, privacy and anti-fraud requirements before it can carry the CE mark.<\/li>\n<li><strong>EU Cyber Resilience Act (CRA):<\/strong> since 11 September 2026, manufacturers must report actively exploited vulnerabilities and severe incidents to ENISA and national authorities, with an early warning within 24 hours. Most other obligations, such as security by design and vulnerability handling for the product's support period, apply from 11 December 2027.<\/li>\n<li><strong>UK Product Security and Telecommunications Infrastructure (PSTI) regime:<\/strong> since 29 April 2024, consumer connectable products sold in the UK must not use universal default passwords and must publish a way to report vulnerabilities and a minimum security-update period.<\/li>\n<li><strong>GDPR:<\/strong> applies whenever a device or app processes personal data, which includes most wearables and smart-home products.<\/li>\n<\/ul>\n\n        <p>Read the official <a href=\"https:\/\/digital-strategy.ec.europa.eu\/en\/policies\/cyber-resilience-act\" target=\"_blank\" rel=\"noopener\">European Commission page on the Cyber Resilience Act<\/a> for the full text and timelines.<\/p>\n\n        <h2 id=\"questions\">Questions to ask in the first call<\/h2>\n\n        <ol>\n<li>Which connected products have you taken to production, and can we speak to that client?<\/li>\n<li>Who writes the firmware, the app and the cloud code? Is it one team or subcontractors?<\/li>\n<li>How do you handle over-the-air updates and rollback if an update fails?<\/li>\n<li>How do you test Bluetooth or Wi-Fi across different phones and OS versions?<\/li>\n<li>How will our product meet RED and CRA requirements?<\/li>\n<li>What do we own at the end of the project?<\/li>\n<li>What does support cost after launch?<\/li>\n<\/ol>\n\n        <h2 id=\"flags\">Red flags<\/h2>\n\n        <ul>\n<li>A fixed price before anyone has asked about your hardware, data or users.<\/li>\n<li>\"We only do the app\": you will then coordinate firmware and cloud vendors yourself.<\/li>\n<li>No plan for firmware updates after launch.<\/li>\n<li>Security and compliance pushed to \"a later phase\".<\/li>\n<li>No access to the code or the build until the end of the project.<\/li>\n<\/ul>\n\n        <h2 id=\"example\">Example: RyseUp<\/h2>\n\n        <p>For a European client, ExtreemTek built <a href=\"https:\/\/extreemtek.com\/case-studies\/#ryseup\">RyseUp<\/a>, a connected wellness ecosystem worth \u20ac2 million: iOS and Android apps, desktop apps, BLE and Wi-Fi connectivity, cloud services and an online store, delivered by one team. Read how we work on <a href=\"https:\/\/extreemtek.com\/iot-and-connected-products\/\">IoT and connected products<\/a> and <a href=\"https:\/\/extreemtek.com\/ble-connected-device-app-development\/\">BLE and connected device apps<\/a>, or see what drives the budget in our <a href=\"https:\/\/extreemtek.com\/iot-product-development-cost\/\">IoT product development cost guide<\/a>.<\/p>\n\n        <div class=\"fs-btns\"><a class=\"fs-btn\" href=\"https:\/\/calendly.com\/aqeel-extreemtek\/30min\" target=\"_blank\" rel=\"noopener\">Talk to our IoT engineers \u2192<\/a><\/div>\n\n        <h2 id=\"faq\">IoT development partner FAQ<\/h2>\n\n        <div class=\"fs-faq\">\n          <details open=\"\"><summary>What should I look for in an IoT development company?<\/summary><p>Look for a company that can build hardware, firmware, mobile apps and cloud together, has shipped connected products to production, builds security in from the start, understands EU rules such as RED and the Cyber Resilience Act, tests on real devices and gives you full ownership of the code.<\/p><\/details>\n          <details><summary>Should I use one IoT partner or separate vendors for firmware and the app?<\/summary><p>One partner is usually faster and cheaper overall. Separate vendors add coordination time, duplicated testing and slow bug fixing at the boundary between device, app and cloud, which is where most IoT problems happen.<\/p><\/details>\n          <details><summary>Which security rules apply to IoT devices in the EU?<\/summary><p>Since 1 August 2025, internet-connected radio equipment must meet the cybersecurity requirements of the Radio Equipment Directive. The Cyber Resilience Act adds reporting duties from 11 September 2026 and most other obligations from 11 December 2027. GDPR applies when personal data is processed.<\/p><\/details>\n          <details><summary>How long does it take to develop an IoT product?<\/summary><p>It depends on whether hardware already exists. Adding an app and cloud to an existing device can take a few months, while a new product with custom hardware, certification and production usually takes considerably longer. A discovery phase gives a realistic timeline.<\/p><\/details>\n          <details><summary>Who should own the code of my IoT product?<\/summary><p>You should. Make sure the contract gives you the source code for firmware, apps and cloud, plus signing keys, credentials and documentation, so you can change suppliers if you need to.<\/p><\/details>\n        <\/div>\n    <\/article>\n\n    <aside class=\"fs-related\" aria-labelledby=\"fs-related-title\">\n      <div class=\"fs-panel\">\n        <h2 class=\"fs-panel-title\" id=\"fs-related-title\">Related Articles<\/h2>\n        <div class=\"fs-related-list\" id=\"fs-related-list\"><\/div>\n        <p class=\"fs-related-empty\" id=\"fs-related-empty\" hidden>More articles coming soon.<\/p>\n      <\/div>\n    <\/aside>\n  <\/div>\n<\/div>\n<script>\r\n\/* Highlights the current section in the Table of Contents while scrolling *\/\r\n(function(){\r\n  var links = document.querySelectorAll('.fs-blog .fs-toc a');\r\n  if (!('IntersectionObserver' in window) || !links.length) return;\r\n  var byId = {};\r\n  links.forEach(function(a){ byId[a.getAttribute('href').slice(1)] = a; });\r\n  var obs = new IntersectionObserver(function(entries){\r\n    entries.forEach(function(e){\r\n      if (!e.isIntersecting) return;\r\n      links.forEach(function(l){ l.classList.remove('is-active'); });\r\n      if (byId[e.target.id]) byId[e.target.id].classList.add('is-active');\r\n    });\r\n  }, { rootMargin: '-20% 0px -70% 0px' });\r\n  Object.keys(byId).forEach(function(id){\r\n    var el = document.getElementById(id);\r\n    if (el) obs.observe(el);\r\n  });\r\n})();\r\n\r\n\/* Related Articles: lists the newest posts from your Blog category (skipping this one).\r\n   The heading always shows; if there are no other posts yet, \"More articles coming soon.\" shows instead. *\/\r\n(function(){\r\n  var HOW_MANY = 4;\r\n  var CATEGORY_SLUG = 'blog';   \/* the category's slug, from Posts > Categories *\/\r\n  var list = document.getElementById('fs-related-list');\r\n  var empty = document.getElementById('fs-related-empty');\r\n  if (!list || !window.fetch) return;\r\n\r\n  function toText(html){\r\n    return new DOMParser().parseFromString(html || '', 'text\/html').body.textContent.trim();\r\n  }\r\n  function samePage(link){\r\n    try { return new URL(link).pathname.replace(\/\\\/$\/, '') === location.pathname.replace(\/\\\/$\/, ''); }\r\n    catch(e){ return false; }\r\n  }\r\n  function getJSON(url){\r\n    return fetch(url).then(function(r){ if (!r.ok) throw new Error(r.status); return r.json(); });\r\n  }\r\n\r\n  getJSON('\/wp-json\/wp\/v2\/categories?slug=' + encodeURIComponent(CATEGORY_SLUG))\r\n    .then(function(cats){\r\n      if (!cats.length) return [];\r\n      return getJSON('\/wp-json\/wp\/v2\/posts?per_page=' + (HOW_MANY + 1) + '&categories=' + cats[0].id + '&_embed=wp:featuredmedia');\r\n    })\r\n    .then(function(posts){\r\n      posts = posts.filter(function(p){ return !samePage(p.link); }).slice(0, HOW_MANY);\r\n      if (!posts.length) return;\r\n\r\n      list.innerHTML = '';\n      posts.forEach(function(p){\r\n        var a = document.createElement('a');\r\n        a.className = 'fs-post';\r\n        a.href = p.link;\r\n\r\n        var imgBox = document.createElement('div');\r\n        imgBox.className = 'fs-post-img';\r\n        var media = p._embedded && p._embedded['wp:featuredmedia'] && p._embedded['wp:featuredmedia'][0];\r\n        if (media && media.source_url){\r\n          var img = document.createElement('img');\r\n          var sizes = media.media_details && media.media_details.sizes;\r\n          img.src = (sizes && (sizes.thumbnail || sizes.medium) || media).source_url;\r\n          img.alt = '';\r\n          img.loading = 'lazy';\r\n          imgBox.appendChild(img);\r\n        }\r\n\r\n        var text = document.createElement('div');\r\n        var title = document.createElement('h3');\r\n        title.className = 'fs-post-title';\r\n        title.textContent = toText(p.title && p.title.rendered);\r\n        var date = document.createElement('p');\r\n        date.className = 'fs-post-date';\r\n        date.textContent = new Date(p.date).toLocaleDateString('en-US', { year:'numeric', month:'long', day:'numeric' });\r\n        text.appendChild(title);\r\n        text.appendChild(date);\r\n\r\n        a.appendChild(imgBox);\r\n        a.appendChild(text);\r\n        list.appendChild(a);\r\n      });\r\n      if (empty) empty.hidden = true;\r\n    })\r\n    .catch(function(){ \/* keeps the heading and the \"coming soon\" line *\/ });\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c6170b4 e-con-full e-flex e-con e-parent\" data-id=\"c6170b4\" data-element_type=\"container\" data-e-type=\"container\" id=\"iot-cta\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7e7106e elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"7e7106e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ============================================================\r\n     \"START A CONVERSATION\" SECTION + PROJECT DETAILS MODAL\r\n     Paste the whole thing into one Elementor HTML widget.\r\n     Form submissions are emailed to you via Web3Forms.\r\n     ============================================================ -->\r\n\r\n<style>\r\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Inter+Tight:wght@400;500;600;700;800&display=swap');\r\n\r\n#sk-talk,#sk-modal{\r\n  --sk-navy:#0b1b3d;\r\n  --sk-blue:#1a8cff;\r\n  --sk-amber-lite:#F5B01A;\r\n  --sk-amber-deep:#D86605;\r\n  --sk-grey:#6b7280;\r\n  --sk-line:#e6e9f0;\r\n\r\n  --sk-avatar:url(\"https:\/\/extreemtek.com\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-Sep-9-2026-11_35_51-AM.png\");\r\n  --sk-modal-bg:url(\"https:\/\/extreemtek.com\/wp-content\/uploads\/2026\/09\/modal-bg.jpg\");\r\n}\r\n\r\n#sk-talk{\r\n  position:relative;\r\n  background:#fff;\r\n  padding:clamp(3.5rem,8vw,5.5rem) 1.25rem;\r\n  font-family:\"Inter Tight\",system-ui,-apple-system,\"Segoe UI\",sans-serif;\r\n  color:var(--sk-navy);\r\n  text-align:center;\r\n  -webkit-font-smoothing:antialiased;\r\n\r\n  \/* --- OPTIONAL full-bleed, uncomment if the theme still boxes it in ---\r\n  width:100vw;\r\n  margin-left:calc(50% - 50vw);\r\n  *\/\r\n}\r\n#sk-talk *,#sk-talk *::before,#sk-talk *::after{box-sizing:border-box}\r\n#sk-talk .sk-t-inner{max-width:1120px;margin:0 auto}\r\n\r\n\/* header *\/\r\n#sk-talk .sk-t-eyebrow{\r\n  display:inline-block;\r\n  margin:0;\r\n  padding:.36rem .85rem;\r\n  border-radius:6px;\r\n  background:#dceafd;\r\n  color:var(--sk-blue);\r\n  font-size:.72rem;\r\n  font-weight:700;\r\n  letter-spacing:.06em;\r\n  text-transform:uppercase;\r\n  line-height:1.25;\r\n}\r\n#sk-talk h2{\r\n  margin:1rem 0 0;\r\n  padding:0;\r\n  font-family:inherit;\r\n  font-size:clamp(1.7rem,4.2vw,2.65rem);\r\n  font-weight:800;\r\n  line-height:1.16;\r\n  letter-spacing:-.03em;\r\n  color:var(--sk-navy);\r\n}\r\n#sk-talk h2 .sk-t-accent{color:var(--sk-blue)}\r\n#sk-talk .sk-t-sub{\r\n  max-width:58ch;\r\n  margin:.9rem auto 0;\r\n  font-size:clamp(1.2rem,2vw,1.12rem);\r\n  font-weight: 500;\r\n  line-height:1.6;\r\n  color:var(--sk-grey);\r\n}\r\n\r\n\/* panel *\/\r\n#sk-talk .sk-t-panel{\r\n  display:grid;\r\n  grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);\r\n  align-items:center;\r\n  gap:clamp(1.5rem,4vw,3rem);\r\n  margin-top:clamp(2rem,4.5vw,3rem);\r\n  padding:clamp(1.6rem,4vw,2.6rem);\r\n  border:1px solid var(--sk-line);\r\n  border-radius:12px;\r\n  background:#f7f9fc;\r\n  text-align:left;\r\n}\r\n\r\n\/* founder *\/\r\n#sk-talk .sk-t-person{text-align:center}\r\n#sk-talk .sk-t-avatar{\r\n  width:min(200px,60%);\r\n  margin:0 auto;\r\n  aspect-ratio:1\/1;\r\n  border:2px solid var(--sk-blue);\r\n  border-radius:50%;\r\n  background:var(--sk-avatar,none) center\/cover no-repeat,#e6eef8;\r\n}\r\n#sk-talk .sk-t-person b{\r\n  display:block;\r\n  margin-top:1.1rem;\r\n  font-size:1.22rem;\r\n  font-weight:700;\r\n  letter-spacing:-.02em;\r\n  color:#111827;\r\n}\r\n#sk-talk .sk-t-role{\r\n  display:block;\r\n  margin-top:.25rem;\r\n  font-size:.95rem;\r\n  font-weight:700;\r\n  color:var(--sk-amber-lite);\r\n}\r\n#sk-talk .sk-t-place{\r\n  display:block;\r\n  margin-top:.2rem;\r\n  font-size:.92rem;\r\n  color:var(--sk-grey);\r\n}\r\n\r\n\/* quote + actions *\/\r\n#sk-talk blockquote{\r\n  margin:0;\r\n  padding:.1rem 0 .1rem 1.1rem;\r\n  border:0;\r\n  border-left:3px solid var(--sk-blue);\r\n  quotes:none;\r\n  font-size:clamp(.98rem,2vw,1.06rem);\r\n  line-height:1.62;\r\n  color:#1c2b45;\r\n}\r\n#sk-talk .sk-t-label{\r\n  margin:1.7rem 0 .8rem;\r\n  font-size:.82rem;\r\n  font-weight:700;\r\n  letter-spacing:.02em;\r\n  text-transform:uppercase;\r\n  color:#111827;\r\n}\r\n#sk-talk .sk-t-actions{display:flex;flex-wrap:wrap;gap:.85rem}\r\n#sk-talk .sk-t-btn{\r\n  display:inline-flex;\r\n  align-items:center;\r\n  gap:.55rem;\r\n  padding:.9rem 1.5rem;\r\n  border:0;\r\n  border-radius:8px;\r\n  font-family:inherit;\r\n  font-size:.98rem;\r\n  font-weight:700;\r\n  letter-spacing:-.01em;\r\n  text-decoration:none;\r\n  cursor:pointer;\r\n  transition:transform .18s ease,box-shadow .18s ease;\r\n}\r\n#sk-talk .sk-t-btn:hover{transform:translateY(-1px);text-decoration:none}\r\n#sk-talk .sk-t-btn svg{transition:transform .18s ease}\r\n#sk-talk .sk-t-btn:hover svg{transform:translateX(3px)}\r\n#sk-talk .sk-t-btn--amber,#sk-talk .sk-t-btn--amber:visited{\r\n  background:linear-gradient(90deg,var(--sk-amber-lite) 0%,var(--sk-amber-deep) 100%);\r\n  color:#fff;\r\n  box-shadow:0 8px 22px rgba(216,102,5,.32);\r\n}\r\n#sk-talk .sk-t-btn--amber:hover{color:#fff;box-shadow:0 13px 30px rgba(216,102,5,.42)}\r\n#sk-talk .sk-t-btn--blue{\r\n  background:linear-gradient(90deg,#2b8fff 0%,#0a63d8 100%);\r\n  color:#fff;\r\n  box-shadow:0 8px 22px rgba(10,99,216,.3);\r\n}\r\n#sk-talk .sk-t-btn--blue:hover{color:#fff;box-shadow:0 13px 30px rgba(10,99,216,.4)}\r\n#sk-talk .sk-t-btn:focus-visible{outline:3px solid var(--sk-blue);outline-offset:3px}\r\n\r\n@media (max-width:820px){\r\n  #sk-talk .sk-t-panel{grid-template-columns:1fr}\r\n  #sk-talk .sk-t-avatar{width:min(160px,50%)}\r\n}\r\n@media (max-width:520px){\r\n  #sk-talk .sk-t-btn{width:100%;justify-content:center}\r\n}\r\n\r\n\/* ============ MODAL ============ *\/\r\n#sk-modal{\r\n  position:fixed;\r\n  inset:0;\r\n  z-index:99999;\r\n  display:none;\r\n  align-items:center;\r\n  justify-content:center;\r\n  padding:1.25rem;\r\n  font-family:\"Inter Tight\",system-ui,-apple-system,\"Segoe UI\",sans-serif;\r\n  text-align:left;\r\n  -webkit-font-smoothing:antialiased;\r\n}\r\n#sk-modal.is-open{display:flex}\r\n#sk-modal *,#sk-modal *::before,#sk-modal *::after{box-sizing:border-box}\r\n#sk-modal .sk-m-veil{\r\n  position:absolute;\r\n  inset:0;\r\n  background:rgba(4,10,22,.72);\r\n  -webkit-backdrop-filter:blur(3px);\r\n  backdrop-filter:blur(3px);\r\n}\r\n#sk-modal .sk-m-box{\r\n  position:relative;\r\n  isolation:isolate;\r\n  overflow:hidden auto;\r\n  width:min(550px,100%);\r\n  max-height:min(92vh,780px);\r\n  padding:clamp(1.4rem,4vw,2rem);\r\n  border:1px solid #2a7fd4;\r\n  border-radius:12px;\r\n  background:#111b2c;\r\n  color:#fff;\r\n  box-shadow:0 30px 70px rgba(0,0,0,.55);\r\n\r\n  \/* hide the scrollbar chrome \u2014 it still scrolls if it truly must *\/\r\n  scrollbar-width:none;\r\n  -ms-overflow-style:none;\r\n}\r\n#sk-modal .sk-m-box::-webkit-scrollbar{width:0;height:0;display:none}\r\n#sk-modal .sk-m-box::before{\r\n  content:\"\";\r\n  position:absolute;\r\n  inset:0;\r\n  z-index:-1;\r\n  background:var(--sk-modal-bg,none) center\/cover no-repeat;\r\n  opacity:.22;\r\n}\r\n#sk-modal .sk-m-close{\r\n  position:absolute;\r\n  top:.7rem;\r\n  right:.7rem;\r\n  display:flex;\r\n  align-items:center;\r\n  justify-content:center;\r\n  width:32px;\r\n  height:32px;\r\n  min-width:0;\r\n  min-height:0;\r\n  padding:0 !important;\r\n  margin:0;\r\n  border:0;\r\n  border-radius:50%;\r\n  line-height:0;\r\n  font-size:0;\r\n  background:rgba(255,255,255,.12);\r\n  color:#fff;\r\n  cursor:pointer;\r\n  -webkit-appearance:none;\r\n  appearance:none;\r\n  transition:background .18s ease;\r\n}\r\n#sk-modal .sk-m-close:hover{background:rgba(255,255,255,.24)}\r\n#sk-modal .sk-m-close:focus-visible{outline:3px solid var(--sk-amber-lite);outline-offset:2px}\r\n#sk-modal .sk-m-close svg{display:block}\r\n\r\n#sk-modal .sk-m-icon{\r\n  display:grid;\r\n  place-items:center;\r\n  width:58px;\r\n  height:58px;\r\n  border-radius:10px;\r\n  background:#2b3648;\r\n  color:var(--sk-amber-lite);\r\n}\r\n#sk-modal h2{\r\n  margin:1.3rem 0 0;\r\n  padding:0;\r\n  font-family:inherit;\r\n  font-size:clamp(1.6rem,5vw,2.1rem);\r\n  font-weight:800;\r\n  line-height:1.14;\r\n  letter-spacing:-.03em;\r\n  color:#fff;\r\n}\r\n#sk-modal h2 .sk-m-accent{color:var(--sk-amber-lite)}\r\n#sk-modal .sk-m-sub{\r\n  margin:.7rem 0 0;\r\n  font-size:.98rem;\r\n  line-height:1.5;\r\n  color:#c4d2e4;\r\n}\r\n\r\n#sk-modal .sk-m-field{position:relative;margin-top:.85rem}\r\n#sk-modal .sk-m-field:first-of-type{margin-top:1.5rem}\r\n#sk-modal .sk-m-field svg{\r\n  position:absolute;\r\n  top:50%;\r\n  left:1rem;\r\n  transform:translateY(-50%);\r\n  color:#6b7a90;\r\n  pointer-events:none;\r\n}\r\n#sk-modal .sk-m-field .sk-m-chev{left:auto;right:1rem}\r\n\/* textarea icon pins to the first line, not the middle *\/\r\n#sk-modal .sk-m-field--area svg{top:1.15rem;transform:none}\r\n#sk-modal input,#sk-modal select,#sk-modal textarea{\r\n  width:100%;\r\n  height:56px;\r\n  margin:0;\r\n  padding:0 1rem 0 3rem;\r\n  border:1px solid #dbe2ec;\r\n  border-radius:9px;\r\n  background:#fff;\r\n  font-family:inherit;\r\n  font-size:1rem;\r\n  color:#111827;\r\n  appearance:none;\r\n  -webkit-appearance:none;\r\n}\r\n#sk-modal textarea{\r\n  height:auto;\r\n  min-height:108px;\r\n  padding:1rem 1rem 1rem 3rem;\r\n  line-height:1.5;\r\n  resize:vertical;\r\n}\r\n#sk-modal select{padding-right:2.8rem;color:#111827}\r\n#sk-modal select:invalid{color:#8a94a4}\r\n#sk-modal input::placeholder,#sk-modal textarea::placeholder{color:#8a94a4}\r\n#sk-modal input:focus,#sk-modal select:focus,#sk-modal textarea:focus{\r\n  outline:0;\r\n  border-color:var(--sk-blue);\r\n  box-shadow:0 0 0 3px rgba(26,140,255,.25);\r\n}\r\n#sk-modal .sk-m-hint{\r\n  display:block;\r\n  margin:.4rem 0 0 .15rem;\r\n  font-size:.8rem;\r\n  color:#9fb1c8;\r\n}\r\n\/* hidden spam trap \u2014 people never see it, bots fill it in *\/\r\n#sk-modal .sk-m-trap{\r\n  position:absolute !important;\r\n  left:-9999px !important;\r\n  width:1px;\r\n  height:1px;\r\n  overflow:hidden;\r\n}\r\n\r\n#sk-modal .sk-m-submit{\r\n  display:flex;\r\n  align-items:center;\r\n  justify-content:center;\r\n  gap:.7rem;\r\n  width:100%;\r\n  margin-top:1.5rem;\r\n  padding:1.05rem 1.5rem;\r\n  border:0;\r\n  border-radius:9px;\r\n  background:linear-gradient(90deg,var(--sk-amber-lite) 0%,var(--sk-amber-deep) 100%);\r\n  color:#fff;\r\n  font-family:inherit;\r\n  font-size:1.22rem;\r\n  font-weight:700;\r\n  letter-spacing:-.02em;\r\n  cursor:pointer;\r\n  box-shadow:0 10px 26px rgba(216,102,5,.35);\r\n  transition:transform .18s ease,box-shadow .18s ease;\r\n}\r\n#sk-modal .sk-m-submit:hover{transform:translateY(-1px);box-shadow:0 15px 34px rgba(216,102,5,.45)}\r\n#sk-modal .sk-m-submit:focus-visible{outline:3px solid #fff;outline-offset:3px}\r\n#sk-modal .sk-m-submit[disabled]{opacity:.65;cursor:default;transform:none}\r\n#sk-modal .sk-m-submit svg{transition:transform .18s ease}\r\n#sk-modal .sk-m-submit:hover svg{transform:translateX(3px)}\r\n\r\n#sk-modal .sk-m-note{\r\n  display:flex;\r\n  align-items:center;\r\n  gap:.55rem;\r\n  margin:1.1rem 0 0;\r\n  font-size:.9rem;\r\n  color:#c4d2e4;\r\n}\r\n#sk-modal .sk-m-note svg{flex:none;color:#c4d2e4}\r\n#sk-modal .sk-m-status{\r\n  margin:1.1rem 0 0;\r\n  font-size:.95rem;\r\n  line-height:1.5;\r\n  color:#8ee7a8;\r\n}\r\n#sk-modal .sk-m-status:empty{display:none}\r\n#sk-modal .sk-m-status[data-state=\"error\"]{color:#ffb4b4}\r\n\r\n\/* once a status message shows, the note has done its job \u2014\r\n   swapping one for the other keeps the panel height constant *\/\r\n#sk-modal .sk-m-form--sent .sk-m-note{display:none}\r\n\r\n@media (prefers-reduced-motion:reduce){\r\n  #sk-talk *,#sk-modal *{transition:none !important;animation:none !important}\r\n}\r\n<\/style>\r\n\r\n<section id=\"sk-talk\">\r\n  <div class=\"sk-t-inner\">\r\n\r\n    <p class=\"sk-t-eyebrow\">Start a conversation<\/p>\r\n\r\n    <h2><span class=\"sk-t-accent\">Let's Discuss<\/span> What You Are Building<\/h2>\r\n\r\n    <p class=\"sk-t-sub\">\r\n      Tell us where you are in your product journey and what is preventing you from\r\n      moving forward. We will help you identify a practical next step.\r\n    <\/p>\r\n\r\n    <div class=\"sk-t-panel\">\r\n\r\n      <div class=\"sk-t-person\">\r\n        <div class=\"sk-t-avatar\" role=\"img\" aria-label=\"Aqeel Wahlah\"><\/div>\r\n        <b>Aqeel Wahlah<\/b>\r\n        <span class=\"sk-t-role\">Founder and CEO<\/span>\r\n        <span class=\"sk-t-place\">ExtreemTek, Eindhoven, Netherlands<\/span>\r\n      <\/div>\r\n\r\n      <div>\r\n        <blockquote>\r\n          I personally join the initial conversation to understand your product goals\r\n          and ensure we bring the right technical expertise to the discussion.\r\n        <\/blockquote>\r\n\r\n        <p class=\"sk-t-label\">Select how you want to reach out:<\/p>\r\n\r\n        <div class=\"sk-t-actions\">\r\n          <a class=\"sk-t-btn sk-t-btn--amber\" href=\"https:\/\/calendly.com\/aqeel-extreemtek\/30min\">\r\n            Schedule a Discovery Call\r\n            <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg>\r\n          <\/a>\r\n          <button class=\"sk-t-btn sk-t-btn--blue\" type=\"button\" data-sk-open-modal>\r\n            Send Project Details\r\n            <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg>\r\n          <\/button>\r\n        <\/div>\r\n      <\/div>\r\n\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- ===== modal ===== -->\r\n<div id=\"sk-modal\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"sk-m-title\" hidden>\r\n  <div class=\"sk-m-veil\" data-sk-close><\/div>\r\n\r\n  <div class=\"sk-m-box\">\r\n    <button class=\"sk-m-close\" type=\"button\" data-sk-close aria-label=\"Close\">\r\n      <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M6 6l12 12M18 6L6 18\"\/><\/svg>\r\n    <\/button>\r\n\r\n    <div class=\"sk-m-icon\" aria-hidden=\"true\">\r\n      <svg width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21.5 2.5 2.5 9.8l7.2 2.9 2.6 8 9.2-18.2Z\"\/><path d=\"M9.7 12.7 21.5 2.5\"\/><\/svg>\r\n    <\/div>\r\n\r\n    <h2 id=\"sk-m-title\">Let's Explore <span class=\"sk-m-accent\">Your Product Idea!<\/span><\/h2>\r\n\r\n    <p class=\"sk-m-sub\">Tell us what you're building. Our engineering team will help you define the next step.<\/p>\r\n\r\n    <form id=\"sk-m-form\" novalidate>\r\n      <div class=\"sk-m-field\">\r\n        <svg width=\"19\" height=\"19\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"8\" r=\"3.5\"\/><path d=\"M4.5 20a7.5 7.5 0 0 1 15 0\"\/><\/svg>\r\n        <input id=\"sk-name\" name=\"name\" type=\"text\" placeholder=\"Your Name*\" aria-label=\"Your name\" required autocomplete=\"name\">\r\n      <\/div>\r\n\r\n      <div class=\"sk-m-field\">\r\n        <svg width=\"19\" height=\"19\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"2.5\" y=\"5\" width=\"19\" height=\"14\" rx=\"2.5\"\/><path d=\"M3 7l9 6 9-6\"\/><\/svg>\r\n        <input id=\"sk-email\" name=\"email\" type=\"email\" placeholder=\"Work Email*\" aria-label=\"Work email\" required autocomplete=\"email\">\r\n      <\/div>\r\n\r\n      <!-- phone: digits and phone punctuation only -->\r\n      <div class=\"sk-m-field\">\r\n        <svg width=\"19\" height=\"19\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M6.3 3.5h3.1l1.6 4-2 1.2a10.5 10.5 0 0 0 4.8 4.8l1.2-2 4 1.6v3.1a1.8 1.8 0 0 1-2 1.8A15.6 15.6 0 0 1 4.5 5.5a1.8 1.8 0 0 1 1.8-2Z\"\/><\/svg>\r\n        <input id=\"sk-phone\" name=\"phone\" type=\"tel\"\r\n               placeholder=\"Phone Number*\"\r\n               aria-label=\"Phone number\"\r\n               required\r\n               inputmode=\"tel\"\r\n               autocomplete=\"tel\"\r\n               maxlength=\"20\"\r\n               pattern=\"[0-9+()\\-\\s]{7,20}\"\r\n               title=\"Digits only \u2014 you may also use + ( ) - and spaces\">\r\n        <small class=\"sk-m-hint\">Digits only. You may use +, (), - and spaces.<\/small>\r\n      <\/div>\r\n\r\n      <div class=\"sk-m-field\">\r\n        <svg width=\"19\" height=\"19\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"m12 2.8 8 4.3v9.8l-8 4.3-8-4.3V7.1Z\"\/><path d=\"m4 7.1 8 4.3 8-4.3M12 11.4V21\"\/><\/svg>\r\n        <svg class=\"sk-m-chev\" width=\"19\" height=\"19\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"m6 9 6 6 6-6\"\/><\/svg>\r\n        <select id=\"sk-type\" name=\"project_type\" aria-label=\"What do you want to build?\" required>\r\n          <option value=\"\" selected disabled>What do you want to build?*<\/option>\r\n          <option>Mobile app (iOS \/ Android)<\/option>\r\n          <option>Web platform or SaaS<\/option>\r\n          <option>IoT or connected device<\/option>\r\n          <option>AI-powered feature<\/option>\r\n          <option>Back end, cloud or integrations<\/option>\r\n          <option>Not sure yet<\/option>\r\n        <\/select>\r\n      <\/div>\r\n\r\n      <!-- optional short summary -->\r\n      <div class=\"sk-m-field sk-m-field--area\">\r\n        <svg width=\"19\" height=\"19\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4.5 5.5h15M4.5 10h15M4.5 14.5h10\"\/><\/svg>\r\n        <textarea id=\"sk-brief\" name=\"project_brief\"\r\n                  placeholder=\"Briefly, what are you building? (optional)\"\r\n                  aria-label=\"Short summary of your project or idea\"\r\n                  maxlength=\"600\" rows=\"3\"><\/textarea>\r\n        <small class=\"sk-m-hint\">A sentence or two is plenty \u2014 we'll ask the rest on the call.<\/small>\r\n      <\/div>\r\n\r\n      <!-- spam trap: leave empty -->\r\n      <div class=\"sk-m-trap\" aria-hidden=\"true\">\r\n        <input type=\"checkbox\" name=\"botcheck\" tabindex=\"-1\" autocomplete=\"off\">\r\n      <\/div>\r\n\r\n      <button class=\"sk-m-submit\" type=\"submit\">\r\n        Let's Discuss Your Idea\r\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/svg>\r\n      <\/button>\r\n\r\n      <p class=\"sk-m-note\">\r\n        <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"4.5\" y=\"10.5\" width=\"15\" height=\"10\" rx=\"2\"\/><path d=\"M8 10.5V7.8a4 4 0 0 1 8 0v2.7\"\/><\/svg>\r\n        No obligation. We'll get back to you within 1-2 business days.\r\n      <\/p>\r\n\r\n      <p class=\"sk-m-status\" role=\"status\" aria-live=\"polite\"><\/p>\r\n    <\/form>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n\/* Popup form \u2014 sends submissions to your email via Web3Forms *\/\r\n(function(){\r\n  var FORM_ENDPOINT = \"https:\/\/api.web3forms.com\/submit\";\r\n  var ACCESS_KEY    = \"d16be941-4049-42a1-aac1-c0025927fe85\";\r\n\r\n  var modal  = document.getElementById('sk-modal');\r\n  var form   = document.getElementById('sk-m-form');\r\n  if(!modal || !form) return;\r\n\r\n  \/* move the popup to <body> so no Elementor wrapper can clip or offset it *\/\r\n  document.body.appendChild(modal);\r\n\r\n  var status = modal.querySelector('.sk-m-status');\r\n  var phone  = document.getElementById('sk-phone');\r\n  var opener = null;\r\n\r\n  \/* ---- phone field: allow only digits and phone punctuation ---- *\/\r\n  if(phone){\r\n    var ALLOWED = \/[^0-9+()\\-\\s]\/g;\r\n\r\n    \/* block disallowed characters as they are typed *\/\r\n    phone.addEventListener('keypress', function(e){\r\n      if(e.ctrlKey || e.metaKey || e.altKey) return;\r\n      if(e.key && e.key.length === 1 && ALLOWED.test(e.key)){\r\n        e.preventDefault();\r\n      }\r\n    });\r\n\r\n    \/* strip anything that slips through (paste, autofill, mobile keyboards) *\/\r\n    function clean(){\r\n      var start = phone.selectionStart;\r\n      var before = phone.value;\r\n      var after = before.replace(ALLOWED, '');\r\n      if(after !== before){\r\n        phone.value = after;\r\n        var drop = before.length - after.length;\r\n        try{ phone.setSelectionRange(Math.max(0, start - drop), Math.max(0, start - drop)); }catch(err){}\r\n      }\r\n    }\r\n    phone.addEventListener('input', clean);\r\n    phone.addEventListener('paste', function(){ setTimeout(clean, 0); });\r\n  }\r\n\r\n  function open(trigger){\r\n    opener = trigger || null;\r\n    modal.hidden = false;\r\n    modal.classList.add('is-open');\r\n    document.body.style.overflow = 'hidden';\r\n    var first = modal.querySelector('input:not([name=\"botcheck\"]),select,textarea');\r\n    if(first) first.focus();\r\n  }\r\n\r\n  function close(){\r\n    modal.classList.remove('is-open');\r\n    modal.hidden = true;\r\n    document.body.style.overflow = '';\r\n\r\n    \/* clear every field so reopening starts fresh *\/\r\n    form.reset();\r\n    if(phone) phone.setCustomValidity('');\r\n\r\n    say('', 'ok');\r\n    if(opener) opener.focus();\r\n  }\r\n\r\n  document.addEventListener('click', function(e){\r\n    var btn = e.target.closest('[data-sk-open-modal]');\r\n    if(btn){ e.preventDefault(); open(btn); }\r\n  });\r\n\r\n  modal.querySelectorAll('[data-sk-close]').forEach(function(el){\r\n    el.addEventListener('click', close);\r\n  });\r\n\r\n  document.addEventListener('keydown', function(e){\r\n    if(e.key === 'Escape' && modal.classList.contains('is-open')) close();\r\n  });\r\n\r\n  \/* keep tab focus inside the popup while it is open *\/\r\n  modal.addEventListener('keydown', function(e){\r\n    if(e.key !== 'Tab') return;\r\n    var f = modal.querySelectorAll('button,input:not([name=\"botcheck\"]),select,textarea,a[href]');\r\n    if(!f.length) return;\r\n    var first = f[0], last = f[f.length - 1];\r\n    if(e.shiftKey && document.activeElement === first){ e.preventDefault(); last.focus(); }\r\n    else if(!e.shiftKey && document.activeElement === last){ e.preventDefault(); first.focus(); }\r\n  });\r\n\r\n  function say(msg, state){\r\n    status.textContent = msg;\r\n    status.setAttribute('data-state', state || 'ok');\r\n    form.classList.toggle('sk-m-form--sent', !!msg);\r\n  }\r\n\r\n  form.addEventListener('submit', function(e){\r\n    e.preventDefault();\r\n    say('', 'ok');\r\n\r\n    \/* phone must hold at least 7 digits once punctuation is ignored *\/\r\n    if(phone){\r\n      var digits = phone.value.replace(\/\\D\/g, '');\r\n      if(digits.length < 7){\r\n        phone.setCustomValidity('Please enter a valid phone number (at least 7 digits).');\r\n      } else {\r\n        phone.setCustomValidity('');\r\n      }\r\n    }\r\n\r\n    if(!form.checkValidity()){\r\n      form.reportValidity();\r\n      return;\r\n    }\r\n\r\n    var btn = form.querySelector('.sk-m-submit');\r\n    var payload = new FormData(form);\r\n    payload.append('access_key', ACCESS_KEY);\r\n    payload.append('subject', 'New project inquiry from extreemtek.com (contact section)');\r\n    payload.append('from_name', 'ExtreemTek Website');\r\n\r\n    btn.disabled = true;\r\n    say('Sending\u2026', 'ok');\r\n\r\n    fetch(FORM_ENDPOINT, {\r\n      method:'POST',\r\n      headers:{ 'Accept':'application\/json' },\r\n      body:payload\r\n    })\r\n      .then(function(r){ return r.json(); })\r\n      .then(function(res){\r\n        if(!res.success) throw new Error(res.message || 'failed');\r\n        form.reset();\r\n        say('Thanks. We will get back to you within 1-2 business days.', 'ok');\r\n      })\r\n      .catch(function(){\r\n        say('Something went wrong. Please try again or email us directly.', 'error');\r\n      })\r\n      .finally(function(){ btn.disabled = false; });\r\n  });\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-28afc83 e-con-full e-flex e-con e-parent\" data-id=\"28afc83\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d211b7b elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"d211b7b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Inter+Tight:wght@400;500;600;700;800&display=swap');\n\nhtml{scroll-behavior:smooth}\n\n#sk-foot{\n  --sk-amber:#F5B01A;\n  --sk-ink:#101c30;\n\n  position:relative;\n  font-family:\"Inter Tight\",system-ui,-apple-system,\"Segoe UI\",sans-serif;\n  -webkit-font-smoothing:antialiased;\n}\n#sk-foot *,#sk-foot *::before,#sk-foot *::after{box-sizing:border-box}\n#sk-foot .sk-f-inner{max-width:1120px;margin:0 auto;padding:0 1.5rem}\n\n\/* ---------- orange band ---------- *\/\n#sk-foot .sk-f-top{\n  position:relative;\n  padding:clamp(4.5rem,11vw,8rem) 0 clamp(2rem,5vw,3rem);\n  background:url(\"https:\/\/extreemtek.com\/wp-content\/uploads\/2026\/09\/waves-transparent-1920x464-1.png\") center top\/cover no-repeat;\n  color:#fff;\n}\n#sk-foot .sk-f-grid{\n  display:grid;\n  grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);\n  gap:clamp(1.6rem,4vw,3rem);\n  padding-top:clamp(1rem,2vw,1.5rem);\n}\n#sk-foot .sk-f-logo{\n  display:block;\n  width:auto;\n  max-width:230px;\n  height:auto;\n}\n#sk-foot .sk-f-blurb{\n  margin:1.4rem 0 0;\n  max-width:42ch;\n  font-size:.95rem;\n  font-weight:500;\n  line-height:1.55;\n  color:#fff;\n}\n#sk-foot .sk-f-addr{\n  margin:1.2rem 0 0;\n  max-width:44ch;\n  font-size:.88rem;\n  font-style:normal;\n  line-height:1.5;\n  color:rgba(255,255,255,.92);\n}\n#sk-foot .sk-f-contact{\n  margin:0;\n  padding:0;\n  list-style:none;\n  align-self:center;\n}\n#sk-foot .sk-f-contact li{\n  display:flex;\n  align-items:center;\n  gap:.7rem;\n  margin:0 0 .95rem;\n  padding:0;\n  list-style:none;\n  font-size:.95rem;\n}\n#sk-foot .sk-f-contact li:last-child{margin-bottom:0}\n#sk-foot .sk-f-contact li::marker{content:none}\n#sk-foot .sk-f-contact svg{flex:none;color:rgba(255,255,255,.9)}\n#sk-foot .sk-f-contact a{\n  color:#fff;\n  text-decoration:none;\n  border-bottom:1px solid transparent;\n  transition:border-color .18s ease;\n}\n#sk-foot .sk-f-contact a:hover{color:#fff;border-bottom-color:rgba(255,255,255,.7)}\n#sk-foot .sk-f-contact a:focus-visible{outline:3px solid #fff;outline-offset:3px}\n\n\/* ---------- dark band ---------- *\/\n#sk-foot .sk-f-bottom{\n  background:var(--sk-ink);\n  color:#dbe3ee;\n  padding:clamp(2.4rem,5vw,3.4rem) 0 0;\n}\n#sk-foot .sk-f-nav{\n  display:grid;\n  grid-template-columns:repeat(3,minmax(0,1fr));\n  gap:1.5rem;\n  max-width:820px;\n  margin:0 auto;\n}\n#sk-foot .sk-f-nav h3{\n  margin:0 0 1.3rem;\n  padding:0;\n  font-family:inherit;\n  font-size:.82rem;\n  font-weight:700;\n  letter-spacing:.05em;\n  text-transform:uppercase;\n  color:var(--sk-amber);\n}\n#sk-foot .sk-f-nav ul{margin:0;padding:0;list-style:none}\n#sk-foot .sk-f-nav li{margin:0 0 .9rem;padding:0;list-style:none}\n#sk-foot .sk-f-nav li::marker{content:none}\n#sk-foot .sk-f-nav a{\n  color:#dbe3ee;\n  font-size:.95rem;\n  line-height:1.45;\n  text-decoration:none;\n  transition:color .18s ease;\n}\n#sk-foot .sk-f-nav a:hover{color:var(--sk-amber);text-decoration:none}\n#sk-foot .sk-f-nav a:focus-visible{outline:3px solid var(--sk-amber);outline-offset:3px;border-radius:3px}\n\n#sk-foot .sk-f-legal{\n  display:flex;\n  flex-wrap:wrap;\n  align-items:center;\n  justify-content:space-between;\n  gap:1rem;\n  margin-top:clamp(2rem,4vw,3rem);\n  padding:1.3rem 0;\n  border-top:1px solid rgba(255,255,255,.08);\n  font-size:.88rem;\n  color:#9aa8bd;\n}\n#sk-foot .sk-f-legal b{font-weight:600;color:var(--sk-amber)}\n#sk-foot .sk-f-legal ul{display:flex;gap:1.6rem;margin:0;padding:0;list-style:none}\n#sk-foot .sk-f-legal li{margin:0;padding:0;list-style:none}\n#sk-foot .sk-f-legal li::marker{content:none}\n#sk-foot .sk-f-legal a{color:#9aa8bd;text-decoration:none;transition:color .18s ease}\n#sk-foot .sk-f-legal a:hover{color:#fff;text-decoration:none}\n#sk-foot .sk-f-legal a:focus-visible{outline:3px solid var(--sk-amber);outline-offset:3px;border-radius:3px}\n\n\/* ---------- back to top ---------- *\/\n#sk-top-btn{\n  position:fixed;\n  right:24px;bottom:24px;\n  z-index:9999;\n\n  width:48px;height:48px;\n  display:flex;align-items:center;justify-content:center;\n  border:0;border-radius:12px;\n  background:#F5B01A;\n  color:#101c30;\n  cursor:pointer;\n\n  opacity:0;\n  visibility:hidden;\n  transform:translateY(12px);\n  transition:opacity .25s ease, transform .25s ease, visibility .25s, background-color .2s ease, color .2s ease;\n}\n#sk-top-btn.is-visible{\n  opacity:1;\n  visibility:visible;\n  transform:translateY(0);\n}\n#sk-top-btn svg{\n  width:20px;height:20px;\n  fill:none;stroke:currentColor;stroke-width:2.4;\n  stroke-linecap:round;stroke-linejoin:round;\n}\n@media (hover:hover){\n  #sk-top-btn:hover,\n  #sk-top-btn:focus,\n  #sk-top-btn:active{\n    background:#007CF9 !important;\n    color:#fff !important;\n  }\n}\n#sk-top-btn:focus-visible{outline:3px solid #007CF9;outline-offset:3px}\n\n@media (max-width:760px){\n  #sk-foot .sk-f-grid{grid-template-columns:1fr;gap:1.8rem}\n  #sk-foot .sk-f-nav{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.8rem}\n  #sk-foot .sk-f-legal{justify-content:flex-start}\n}\n@media (max-width:600px){\n  #sk-top-btn{right:16px;bottom:16px;width:44px;height:44px;border-radius:11px}\n  #sk-top-btn svg{width:18px;height:18px}\n}\n@media (max-width:460px){\n  #sk-foot .sk-f-nav{grid-template-columns:1fr}\n}\n@media (prefers-reduced-motion:reduce){\n  html{scroll-behavior:auto}\n  #sk-foot *{transition:none !important;animation:none !important}\n  #sk-top-btn{transition:opacity .01s}\n}\n<\/style>\n\n<footer id=\"sk-foot\">\n\n  <div class=\"sk-f-top\">\n    <div class=\"sk-f-inner\">\n      <div class=\"sk-f-grid\">\n\n        <div>\n          <img class=\"sk-f-logo\" src=\"https:\/\/extreemtek.com\/wp-content\/uploads\/2026\/09\/Group-2.png\" alt=\"ExtreemTek \u2014 Engineering Ideas into Intelligent Reality\" loading=\"lazy\" decoding=\"async\">\n\n          <p class=\"sk-f-blurb\">\n            High-quality product engineering bringing AI, IoT, web,\n            mobile and cloud together for scalability.\n          <\/p>\n\n          <address class=\"sk-f-addr\">\n            AI Innovation Center,  High Tech Campus, 5656 AE,<br>\n            Eindhoven, the Netherlands.\n          <\/address>\n        <\/div>\n\n        <ul class=\"sk-f-contact\">\n          <li>\n            <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M4.98 3.5a2.5 2.5 0 1 0 0 5 2.5 2.5 0 0 0 0-5ZM3 9.75h4v10.75H3ZM9.5 9.75h3.83v1.47h.05a4.2 4.2 0 0 1 3.78-2.08c4.04 0 4.79 2.66 4.79 6.12v4.24h-4v-3.76c0-.9-.02-2.05-1.25-2.05-1.25 0-1.44.98-1.44 1.99v3.82h-4Z\"><\/path><\/svg>\n            <a href=\"https:\/\/www.linkedin.com\/company\/extreemtek\" target=\"_blank\" rel=\"noopener\">@extreemtek<\/a>\n          <\/li>\n          <li>\n            <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"7\" y=\"2.5\" width=\"10\" height=\"19\" rx=\"2.5\"><\/rect><path d=\"M11 18.5h2\"><\/path><\/svg>\n            <a href=\"tel:+31641166735\">+31641166735<\/a>\n          <\/li>\n          <li>\n            <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"2.5\" y=\"5\" width=\"19\" height=\"14\" rx=\"2.5\"><\/rect><path d=\"M3 7l9 6 9-6\"><\/path><\/svg>\n            <a href=\"mailto:hello@extreemtek.nl\">hello@extreemtek.nl<\/a>\n          <\/li>\n        <\/ul>\n\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"sk-f-bottom\">\n    <div class=\"sk-f-inner\">\n\n      <nav class=\"sk-f-nav\" aria-label=\"Footer\">\n        <div>\n          <h3>Case Studies<\/h3>\n          <ul>\n            <li><a href=\"https:\/\/extreemtek.com\/case-studies\/#clawleaf\">Clawleaf<\/a><\/li>\n            <li><a href=\"https:\/\/extreemtek.com\/fileshift_fast_file_transfer\/\">Fileshift<\/a><\/li>\n          <li><a href=\"https:\/\/extreemtek.com\/plantcare\/\">Plantcare<\/a><\/li>\n            <!--<li><a href=\"#path-modernize\">Deepfake<\/a><\/li> -->\n          <\/ul>\n        <\/div>\n\n        <div>\n          <h3 href=\"#services\">Services<\/h3>\n          <ul>\n            <li><a href=\"https:\/\/extreemtek.com\/ai-solution\/\">AI Solutions<\/a><\/li>\n            <li><a href=\"https:\/\/extreemtek.com\/iot-and-connected-products\/\">IoT Firmware<\/a><\/li>\n            <li><a href=\"https:\/\/extreemtek.com\/website-and-mobile-app-development\/\">Web &amp; App Development<\/a><\/li>\n            <li><a href=\"https:\/\/extreemtek.com\/cloud-operations\/\">Cloud Operations<\/a><\/li><li><a href=\"https:\/\/extreemtek.com\/ble-connected-device-app-development\/\">BLE &amp; Device Apps<\/a><\/li><li><a href=\"https:\/\/extreemtek.com\/mvp-development\/\">MVP Development<\/a><\/li>\n          <\/ul>\n        <\/div>\n\n        <div>\n          <h3>Company<\/h3>\n          <ul>\n            <li><a href=\"https:\/\/extreemtek.com\/\">Home<\/a><\/li><li><a href=\"https:\/\/extreemtek.com\/#case-studies\">Case Studies<\/a><\/li>\n            <li><a href=\"https:\/\/extreemtek.com\/#how-we-work\">How We Work<\/a><\/li>\n            <li><a href=\"https:\/\/extreemtek.com\/contact-us\/\">Contact Us<\/a><\/li>\n          <\/ul>\n        <\/div>\n      <\/nav>\n\n      <div class=\"sk-f-legal\">\n        <p style=\"margin:0\">\u00a9 2026 <b>ExtreemTek<\/b>. All rights reserved. Registered in Eindhoven, the Netherlands.<\/p>\n        <ul>\n          <li><a href=\"https:\/\/extreemtek.com\/privacy-policy\/\">Privacy Policy<\/a><\/li>\n          \n        <\/ul>\n      <\/div>\n\n    <\/div>\n  <\/div>\n\n<\/footer>\n\n<button id=\"sk-top-btn\" type=\"button\" aria-label=\"Back to top\">\n  <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M6 15l6-6 6 6\"><\/path><\/svg>\n<\/button>\n\n<script>\n(function () {\n  function init() {\n    var btn = document.getElementById('sk-top-btn');\n    if (!btn) return;\n\n    var SHOW_AFTER = 400;\n\n    function scrolled() {\n      return window.pageYOffset\n          || document.documentElement.scrollTop\n          || document.body.scrollTop\n          || 0;\n    }\n\n    function check() {\n      btn.classList.toggle('is-visible', scrolled() > SHOW_AFTER);\n    }\n\n    \/\/ scroll, resize, and the tail of any smooth-scroll from an anchor click\n    window.addEventListener('scroll', check, { passive: true });\n    window.addEventListener('resize', check, { passive: true });\n    window.addEventListener('hashchange', function () {\n      setTimeout(check, 100);\n      setTimeout(check, 700);\n    });\n    document.addEventListener('click', function (e) {\n      var a = e.target.closest && e.target.closest('a[href*=\"#\"]');\n      if (!a) return;\n      setTimeout(check, 100);\n      setTimeout(check, 700);\n    }, true);\n\n    \/\/ safety net for page builders that animate scroll without firing events\n    setInterval(check, 800);\n\n    check();\n\n    btn.addEventListener('click', function () {\n      var reduce = window.matchMedia('(prefers-reduced-motion:reduce)').matches;\n      if (window.scrollTo && !reduce) {\n        window.scrollTo({ top: 0, behavior: 'smooth' });\n      } else {\n        window.scrollTo(0, 0);\n      }\n    });\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    init();\n  }\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>A practical checklist for choosing an IoT development company: end-to-end capability, firmware and BLE skills, security and EU compliance, testing, IP and support.<\/p>","protected":false},"author":1,"featured_media":7367,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_canvas","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-7331","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>IoT Development Partner Checklist (2026) | ExtreemTek<\/title>\n<meta name=\"description\" content=\"How to choose an IoT development company: a 12-point checklist covering hardware, firmware, BLE, security, RED and CRA compliance, testing, IP and support.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/extreemtek.com\/nl\/iot-development-partner-checklist\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"IoT Development Partner Checklist (2026) | ExtreemTek\" \/>\n<meta property=\"og:description\" content=\"How to choose an IoT development company: a 12-point checklist covering hardware, firmware, BLE, security, RED and CRA compliance, testing, IP and support.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/extreemtek.com\/nl\/iot-development-partner-checklist\/\" \/>\n<meta property=\"og:site_name\" content=\"ExtreemTek\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/extreemtek\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-23T05:27:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-23T13:41:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/extreemtek.com\/wp-content\/uploads\/2026\/10\/iot-development-partner-checklist.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"900\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Aqeel Wahlah\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Aqeel Wahlah\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/extreemtek.com\\\/iot-development-partner-checklist\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/extreemtek.com\\\/iot-development-partner-checklist\\\/\"},\"author\":{\"name\":\"Aqeel Wahlah\",\"@id\":\"https:\\\/\\\/extreemtek.com\\\/#\\\/schema\\\/person\\\/9114767463e89dd6db95ab4d0fffd4fd\"},\"headline\":\"How to Choose an IoT Development Partner: A 12-Point Checklist\",\"datePublished\":\"2026-10-23T05:27:28+00:00\",\"dateModified\":\"2026-10-23T13:41:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/extreemtek.com\\\/iot-development-partner-checklist\\\/\"},\"wordCount\":1287,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/extreemtek.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/extreemtek.com\\\/iot-development-partner-checklist\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/extreemtek.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/iot-development-partner-checklist.jpg\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/extreemtek.com\\\/iot-development-partner-checklist\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/extreemtek.com\\\/iot-development-partner-checklist\\\/\",\"url\":\"https:\\\/\\\/extreemtek.com\\\/iot-development-partner-checklist\\\/\",\"name\":\"IoT Development Partner Checklist (2026) | ExtreemTek\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/extreemtek.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/extreemtek.com\\\/iot-development-partner-checklist\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/extreemtek.com\\\/iot-development-partner-checklist\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/extreemtek.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/iot-development-partner-checklist.jpg\",\"datePublished\":\"2026-10-23T05:27:28+00:00\",\"dateModified\":\"2026-10-23T13:41:43+00:00\",\"description\":\"How to choose an IoT development company: a 12-point checklist covering hardware, firmware, BLE, security, RED and CRA compliance, testing, IP and support.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/extreemtek.com\\\/iot-development-partner-checklist\\\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/extreemtek.com\\\/iot-development-partner-checklist\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\\\/\\\/extreemtek.com\\\/iot-development-partner-checklist\\\/#primaryimage\",\"url\":\"https:\\\/\\\/extreemtek.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/iot-development-partner-checklist.jpg\",\"contentUrl\":\"https:\\\/\\\/extreemtek.com\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/iot-development-partner-checklist.jpg\",\"width\":1600,\"height\":900,\"caption\":\"Checklist for choosing an IoT development partner\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/extreemtek.com\\\/iot-development-partner-checklist\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/extreemtek.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to Choose an IoT Development Partner: A 12-Point Checklist\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/extreemtek.com\\\/#website\",\"url\":\"https:\\\/\\\/extreemtek.com\\\/\",\"name\":\"ExtreemTek\",\"description\":\"Engineering Ideas into Intelligent Reality\",\"publisher\":{\"@id\":\"https:\\\/\\\/extreemtek.com\\\/#organization\"},\"alternateName\":\"Extreemtek\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/extreemtek.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/extreemtek.com\\\/#organization\",\"name\":\"ExtreemTek\",\"alternateName\":\"Extreemtek\",\"url\":\"https:\\\/\\\/extreemtek.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\\\/\\\/extreemtek.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/extreemtek.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/extreemtek-new-logol-horizontal-white.svg\",\"contentUrl\":\"https:\\\/\\\/extreemtek.com\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/extreemtek-new-logol-horizontal-white.svg\",\"width\":634,\"height\":106,\"caption\":\"ExtreemTek\"},\"image\":{\"@id\":\"https:\\\/\\\/extreemtek.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/extreemtek\\\/\",\"https:\\\/\\\/www.instagram.com\\\/extreemtek\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/extreemtek\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/extreemtek.com\\\/#\\\/schema\\\/person\\\/9114767463e89dd6db95ab4d0fffd4fd\",\"name\":\"Aqeel Wahlah\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/da87ad6cb3fcf4c775081e38e4741ac764394446763073d002c27b598b4b8437?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/da87ad6cb3fcf4c775081e38e4741ac764394446763073d002c27b598b4b8437?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/da87ad6cb3fcf4c775081e38e4741ac764394446763073d002c27b598b4b8437?s=96&d=mm&r=g\",\"caption\":\"Aqeel Wahlah\"},\"description\":\"Aqeel Wahlah is the founder and CEO of ExtreemTek, a product engineering company at High Tech Campus Eindhoven that builds AI solutions, IoT and connected devices, web and mobile apps and cloud back ends.\",\"sameAs\":[\"https:\\\/\\\/extreemtek.com\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"IoT Development Partner Checklist (2026) | ExtreemTek","description":"How to choose an IoT development company: a 12-point checklist covering hardware, firmware, BLE, security, RED and CRA compliance, testing, IP and support.","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:\/\/extreemtek.com\/nl\/iot-development-partner-checklist\/","og_locale":"nl_NL","og_type":"article","og_title":"IoT Development Partner Checklist (2026) | ExtreemTek","og_description":"How to choose an IoT development company: a 12-point checklist covering hardware, firmware, BLE, security, RED and CRA compliance, testing, IP and support.","og_url":"https:\/\/extreemtek.com\/nl\/iot-development-partner-checklist\/","og_site_name":"ExtreemTek","article_publisher":"https:\/\/www.facebook.com\/extreemtek\/","article_published_time":"2026-10-23T05:27:28+00:00","article_modified_time":"2026-10-23T13:41:43+00:00","og_image":[{"width":1600,"height":900,"url":"https:\/\/extreemtek.com\/wp-content\/uploads\/2026\/10\/iot-development-partner-checklist.jpg","type":"image\/jpeg"}],"author":"Aqeel Wahlah","twitter_card":"summary_large_image","twitter_misc":{"Geschreven door":"Aqeel Wahlah"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/extreemtek.com\/iot-development-partner-checklist\/#article","isPartOf":{"@id":"https:\/\/extreemtek.com\/iot-development-partner-checklist\/"},"author":{"name":"Aqeel Wahlah","@id":"https:\/\/extreemtek.com\/#\/schema\/person\/9114767463e89dd6db95ab4d0fffd4fd"},"headline":"How to Choose an IoT Development Partner: A 12-Point Checklist","datePublished":"2026-10-23T05:27:28+00:00","dateModified":"2026-10-23T13:41:43+00:00","mainEntityOfPage":{"@id":"https:\/\/extreemtek.com\/iot-development-partner-checklist\/"},"wordCount":1287,"commentCount":0,"publisher":{"@id":"https:\/\/extreemtek.com\/#organization"},"image":{"@id":"https:\/\/extreemtek.com\/iot-development-partner-checklist\/#primaryimage"},"thumbnailUrl":"https:\/\/extreemtek.com\/wp-content\/uploads\/2026\/10\/iot-development-partner-checklist.jpg","articleSection":["Blog"],"inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/extreemtek.com\/iot-development-partner-checklist\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/extreemtek.com\/iot-development-partner-checklist\/","url":"https:\/\/extreemtek.com\/iot-development-partner-checklist\/","name":"IoT Development Partner Checklist (2026) | ExtreemTek","isPartOf":{"@id":"https:\/\/extreemtek.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/extreemtek.com\/iot-development-partner-checklist\/#primaryimage"},"image":{"@id":"https:\/\/extreemtek.com\/iot-development-partner-checklist\/#primaryimage"},"thumbnailUrl":"https:\/\/extreemtek.com\/wp-content\/uploads\/2026\/10\/iot-development-partner-checklist.jpg","datePublished":"2026-10-23T05:27:28+00:00","dateModified":"2026-10-23T13:41:43+00:00","description":"How to choose an IoT development company: a 12-point checklist covering hardware, firmware, BLE, security, RED and CRA compliance, testing, IP and support.","breadcrumb":{"@id":"https:\/\/extreemtek.com\/iot-development-partner-checklist\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/extreemtek.com\/iot-development-partner-checklist\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/extreemtek.com\/iot-development-partner-checklist\/#primaryimage","url":"https:\/\/extreemtek.com\/wp-content\/uploads\/2026\/10\/iot-development-partner-checklist.jpg","contentUrl":"https:\/\/extreemtek.com\/wp-content\/uploads\/2026\/10\/iot-development-partner-checklist.jpg","width":1600,"height":900,"caption":"Checklist for choosing an IoT development partner"},{"@type":"BreadcrumbList","@id":"https:\/\/extreemtek.com\/iot-development-partner-checklist\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/extreemtek.com\/"},{"@type":"ListItem","position":2,"name":"How to Choose an IoT Development Partner: A 12-Point Checklist"}]},{"@type":"WebSite","@id":"https:\/\/extreemtek.com\/#website","url":"https:\/\/extreemtek.com\/","name":"ExtreemTek","description":"Engineering Ideas into Intelligent Reality","publisher":{"@id":"https:\/\/extreemtek.com\/#organization"},"alternateName":"Extreemtek","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/extreemtek.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/extreemtek.com\/#organization","name":"ExtreemTek","alternateName":"Extreemtek","url":"https:\/\/extreemtek.com\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/extreemtek.com\/#\/schema\/logo\/image\/","url":"https:\/\/extreemtek.com\/wp-content\/uploads\/2026\/07\/extreemtek-new-logol-horizontal-white.svg","contentUrl":"https:\/\/extreemtek.com\/wp-content\/uploads\/2026\/07\/extreemtek-new-logol-horizontal-white.svg","width":634,"height":106,"caption":"ExtreemTek"},"image":{"@id":"https:\/\/extreemtek.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/extreemtek\/","https:\/\/www.instagram.com\/extreemtek\/","https:\/\/www.linkedin.com\/company\/extreemtek"]},{"@type":"Person","@id":"https:\/\/extreemtek.com\/#\/schema\/person\/9114767463e89dd6db95ab4d0fffd4fd","name":"Aqeel Wahlah","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/secure.gravatar.com\/avatar\/da87ad6cb3fcf4c775081e38e4741ac764394446763073d002c27b598b4b8437?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/da87ad6cb3fcf4c775081e38e4741ac764394446763073d002c27b598b4b8437?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/da87ad6cb3fcf4c775081e38e4741ac764394446763073d002c27b598b4b8437?s=96&d=mm&r=g","caption":"Aqeel Wahlah"},"description":"Aqeel Wahlah is the founder and CEO of ExtreemTek, a product engineering company at High Tech Campus Eindhoven that builds AI solutions, IoT and connected devices, web and mobile apps and cloud back ends.","sameAs":["https:\/\/extreemtek.com"]}]}},"amp_enabled":false,"_links":{"self":[{"href":"https:\/\/extreemtek.com\/nl\/wp-json\/wp\/v2\/posts\/7331","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/extreemtek.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/extreemtek.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/extreemtek.com\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/extreemtek.com\/nl\/wp-json\/wp\/v2\/comments?post=7331"}],"version-history":[{"count":3,"href":"https:\/\/extreemtek.com\/nl\/wp-json\/wp\/v2\/posts\/7331\/revisions"}],"predecessor-version":[{"id":7341,"href":"https:\/\/extreemtek.com\/nl\/wp-json\/wp\/v2\/posts\/7331\/revisions\/7341"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/extreemtek.com\/nl\/wp-json\/wp\/v2\/media\/7367"}],"wp:attachment":[{"href":"https:\/\/extreemtek.com\/nl\/wp-json\/wp\/v2\/media?parent=7331"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/extreemtek.com\/nl\/wp-json\/wp\/v2\/categories?post=7331"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/extreemtek.com\/nl\/wp-json\/wp\/v2\/tags?post=7331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}