{"id":13527,"date":"2026-07-28T15:37:01","date_gmt":"2026-07-28T13:37:01","guid":{"rendered":"https:\/\/qls.nl\/?post_type=vacatures&#038;p=13527"},"modified":"2026-07-28T15:52:39","modified_gmt":"2026-07-28T13:52:39","slug":"operations-manager-capacity-planning","status":"publish","type":"vacatures","link":"https:\/\/qls.nl\/en\/vacancies\/operations-manager-capacity-planning\/","title":{"rendered":"Operations Manager \u2013 Capacity Planning"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Who is QLS?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Europe\u2019s fastest-growing e-commerce fulfilment provider. A family business born from a single DHL depot in Dordrecht in 1990, now shipping 30 million+ orders a year for 3,000+ webshops. We built our own WMS (my.QLS), operate a 110,000-bin AutoStore, and run sites in the Netherlands, Belgium, and the UK. Over 1,000 colleagues. We\u2019re growing fast \u2014 and now we\u2019re looking for someone to build the planning function that matches that pace.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Role<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">QLS is growing quickly. Volumes are rising, the client portfolio is expanding, and new sites are coming online. What doesn\u2019t exist yet: a mature capacity planning model that can reliably absorb that growth. You\u2019re going to build it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As Operations Manager \u2013 Capacity Planning, you are the architect of how QLS plans its people and capacity. You work closely with our data analyst to develop the right datasets and forecasts \u2014 and you translate that data into concrete plans the operation can execute. This is not a management role. This is a builder role.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You work closely with the Operations Managers and Supervisors to ensure capacity and process improvement reinforce each other.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>There is no ready-made model to take over. You build it. From methodology to dashboard, from forecast to floor plan.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Now VS. what you&#8217;ll build <\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Current situation<\/strong><\/td><td>&nbsp;<\/td><td><strong>What you will build<\/strong><\/td><\/tr><tr><td><em>Planning based on gut feeling and experience<\/em><\/td><td>&nbsp;<\/td><td><strong>Structured capacity model driven by data<\/strong><\/td><\/tr><tr><td><em>Ad hoc forecasting<\/em><\/td><td>&nbsp;<\/td><td><strong>Weekly forecast powered by analyst input<\/strong><\/td><\/tr><tr><td><em>No central planning framework<\/em><\/td><td>&nbsp;<\/td><td><strong>You build the framework from scratch<\/strong><\/td><\/tr><tr><td><em>Reactive adjustment<\/em><\/td><td>&nbsp;<\/td><td><strong>Proactive planning for peak moments and growth<\/strong><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What you&#8217;ll do<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Build the capacity planning model<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Set up a structured capacity planning model from scratch: methodology, data sources, planning horizon, and quality standards.<\/li>\n\n\n\n<li>Work with the data analyst to define the right datasets: historical volumes, seasonal patterns, client growth forecasts, and WMS data.<\/li>\n\n\n\n<li>Build weekly and daily capacity plans that translate volume forecasts into concrete staffing and throughput targets.<\/li>\n\n\n\n<li>Plan for peaks \u2014 Black Friday, promotional campaigns, new client onboardings \u2014 with the right mix of permanent and flex workforce.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Work with data &amp; analytics<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Steer the data analyst on building forecast models that connect to operational reality.<\/li>\n\n\n\n<li>Ask the right questions of a dataset: what does this forecast say about tomorrow\u2019s staffing? What are we still missing?<\/li>\n\n\n\n<li>Be strong enough in data to understand, validate, and challenge models \u2014 not a passive recipient of output.<\/li>\n\n\n\n<li>Develop KPI dashboards and reports that give the Head of Operations and MT reliable planning intelligence.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Workforce management &amp; floor<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Translate rosters and staffing plans into concrete shift deployment for supervisors.<\/li>\n\n\n\n<li>Adjust in real time when volumes deviate from forecast \u2014 fast decision-making with the operational team.<\/li>\n\n\n\n<li>Steer supervisors on productivity targets that flow from the capacity plan.<\/li>\n\n\n\n<li>Understand the operation from the inside: regularly walk the floor to see where the real needs are.<\/li>\n\n\n\n<li>Continuously improve the planning model based on what you learn from the operation.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">What you bring <\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Must-haves<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You have built something that didn\u2019t exist yet \u2014 a planning model, a forecast methodology, a reporting structure \u2014 and you\u2019re proud of it.<\/li>\n\n\n\n<li>Strong data skills: confident with advanced Excel\/Sheets and BI tooling (Power BI, Tableau, or similar).<\/li>\n\n\n\n<li>Experience working with data analysts: you know what you need, you can specify it, and you can evaluate the output.<\/li>\n\n\n\n<li>Background in capacity planning, workforce management, or operations planning in a logistics or fulfilment environment.<\/li>\n\n\n\n<li>Start-up mentality: you don\u2019t wait for a perfect system \u2014 you build with what you have and improve as you go.<\/li>\n\n\n\n<li>Strong communication skills in English; Dutch is a plus.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Nice-to-haves<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Experience with WMS data (my.QLS or comparable) as input for planning models.<\/li>\n\n\n\n<li>Experience in a fast-growing or scale-up environment.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">What QLS offers <\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The opportunity to build something that doesn\u2019t exist yet \u2014 with full management backing.<\/li>\n\n\n\n<li>A family culture at scale: short lines, no politics, colleagues who genuinely put their shoulders into it.<\/li>\n\n\n\n<li>Room to grow in a business expanding fast across three countries.<\/li>\n\n\n\n<li>25 days leave + public holidays, travel allowance, pension.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Ready for the next step?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Apply now!<\/p>\n\n\n\n<section id=\"form\" class=\"module-contactform wp-block margin-xlarge header-medium\">\n    <div class=\"row align-center\">\n        <div class=\"small-12 large-6 column\">  \n            <div class=\"bg-gray round-large padding-medium\">\n                <h3>Apply now!\n<\/h3>                                                    <script>\nvar gform;gform||(document.addEventListener(\"gform_main_scripts_loaded\",function(){gform.scriptsLoaded=!0}),document.addEventListener(\"gform\/theme\/scripts_loaded\",function(){gform.themeScriptsLoaded=!0}),window.addEventListener(\"DOMContentLoaded\",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,themeScriptsLoaded:!1,isFormEditor:()=>\"function\"==typeof InitializeEditor,callIfLoaded:function(o){return!(!gform.domLoaded||!gform.scriptsLoaded||!gform.themeScriptsLoaded&&!gform.isFormEditor()||(gform.isFormEditor()&&console.warn(\"The use of gform.initializeOnLoaded() is deprecated in the form editor context and will be removed in Gravity Forms 3.1.\"),o(),0))},initializeOnLoaded:function(o){gform.callIfLoaded(o)||(document.addEventListener(\"gform_main_scripts_loaded\",()=>{gform.scriptsLoaded=!0,gform.callIfLoaded(o)}),document.addEventListener(\"gform\/theme\/scripts_loaded\",()=>{gform.themeScriptsLoaded=!0,gform.callIfLoaded(o)}),window.addEventListener(\"DOMContentLoaded\",()=>{gform.domLoaded=!0,gform.callIfLoaded(o)}))},hooks:{action:{},filter:{}},addAction:function(o,r,e,t){gform.addHook(\"action\",o,r,e,t)},addFilter:function(o,r,e,t){gform.addHook(\"filter\",o,r,e,t)},doAction:function(o){gform.doHook(\"action\",o,arguments)},applyFilters:function(o){return gform.doHook(\"filter\",o,arguments)},removeAction:function(o,r){gform.removeHook(\"action\",o,r)},removeFilter:function(o,r,e){gform.removeHook(\"filter\",o,r,e)},addHook:function(o,r,e,t,n){null==gform.hooks[o][r]&&(gform.hooks[o][r]=[]);var d=gform.hooks[o][r];null==n&&(n=r+\"_\"+d.length),gform.hooks[o][r].push({tag:n,callable:e,priority:t=null==t?10:t})},doHook:function(r,o,e){var t;if(e=Array.prototype.slice.call(e,1),null!=gform.hooks[r][o]&&((o=gform.hooks[r][o]).sort(function(o,r){return o.priority-r.priority}),o.forEach(function(o){\"function\"!=typeof(t=o.callable)&&(t=window[t]),\"action\"==r?t.apply(null,e):e[0]=t.apply(null,e)})),\"filter\"==r)return e[0]},removeHook:function(o,r,t,n){var e;null!=gform.hooks[o][r]&&(e=(e=gform.hooks[o][r]).filter(function(o,r,e){return!!(null!=n&&n!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][r]=e)}});\n<\/script>\n\n                <div class='gf_browser_gecko gform_wrapper gravity-theme gform-theme--no-framework' data-form-theme='gravity-theme' data-form-index='0' id='gform_wrapper_6' ><div id='gf_6' class='gform_anchor' tabindex='-1'><\/div>\n                        <div class='gform_heading'>\n\t\t\t\t\t\t\t<p class='gform_required_legend'>&quot;<span class=\"gfield_required gfield_required_asterisk\">*<\/span>&quot; indicates required fields<\/p>\n                        <\/div><form method='post' enctype='multipart\/form-data' target='gform_ajax_frame_6' id='gform_6'  action='\/en\/wp-json\/wp\/v2\/vacatures\/13527#gf_6' data-formid='6' novalidate>\n                        <div class='gform-body gform_body'><div id='gform_fields_6' class='gform_fields top_label form_sublabel_below description_below validation_below'><div id=\"field_6_3\" class=\"gfield gfield--type-text gfield--input-type-text gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_6_3'>Naam<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class='ginput_container ginput_container_text'><input name='input_3' id='input_6_3' type='text' value='' class='large'     aria-required=\"true\" aria-invalid=\"false\"   \/><\/div><\/div><div id=\"field_6_4\" class=\"gfield gfield--type-email gfield--input-type-email gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_6_4'>E-mailadres<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class='ginput_container ginput_container_email'>\n                            <input name='input_4' id='input_6_4' type='email' value='' class='large'    aria-required=\"true\" aria-invalid=\"false\"  \/>\n                        <\/div><\/div><div id=\"field_6_5\" class=\"gfield gfield--type-phone gfield--input-type-phone field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_6_5'>Telefoonnummer<\/label><div class='ginput_container ginput_container_phone'><input name='input_5' id='input_6_5' type='tel' value='' class='large'    aria-invalid=\"false\"   \/><\/div><\/div><div id=\"field_6_6\" class=\"gfield gfield--type-textarea gfield--input-type-textarea field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_6_6'>Motivatie\/Toelichting<\/label><div class='ginput_container ginput_container_textarea'><textarea name='input_6' id='input_6_6' class='textarea large'      aria-invalid=\"false\"   rows='10' cols='50'><\/textarea><\/div><\/div><div id=\"field_6_8\" class=\"gfield gfield--type-fileupload gfield--input-type-fileupload gfield_contains_required field_sublabel_below gfield--has-description field_description_below field_validation_below gfield_visibility_visible\"  ><label class='gfield_label gform-field-label' for='input_6_8'>CV<span class=\"gfield_required\"><span class=\"gfield_required gfield_required_asterisk\">*<\/span><\/span><\/label><div class='ginput_container ginput_container_fileupload'><input type='hidden' name='MAX_FILE_SIZE' value='134217728' \/><input name='input_8' id='input_6_8' type='file' class='large' aria-describedby=\"gfield_upload_rules_6_8 gfield_description_6_8\" onchange='javascript:gformValidateFileSize( this, 134217728 );'  \/><span class='gfield_description gform_fileupload_rules' id='gfield_upload_rules_6_8'>Accepted file types: pdf, doc, docx, pages, Max. file size: 128 MB.<\/span><div class='gfield_description validation_message gfield_validation_message validation_message--hidden-on-empty' id='live_validation_message_6_8'><\/div> <\/div><div class='gfield_description' id='gfield_description_6_8'>Voeg CV toe<\/div><\/div><div id=\"field_6_9\" class=\"gfield gfield--type-turnstile gfield--input-type-turnstile gfield--width-full field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible\"  ><div class='ginput_container ginput_container_turnstile'><div class=\"cf-turnstile\" id=\"cf-turnstile_6\" data-js-turnstile data-response-field-name=\"cf-turnstile-response_6\" data-theme=\"light\" data-size=\"\" data-sitekey=\"0x4AAAAAABgRl6zio3ldGOix\"><\/div><\/div><\/div><\/div><\/div>\n        <div class='gform-footer gform_footer top_label'> <input type='submit' id='gform_submit_button_6' class='gform_button button' onclick='gform.submission.handleButtonClick(this);' data-submission-type='submit' value='Verstuur sollicitatie'  \/> <input type='hidden' name='gform_ajax' value='form_id=6&amp;title=&amp;description=&amp;tabindex=0&amp;theme=gravity-theme&amp;hash=95d74094400edf2d4ab2ec4fc196e163' \/>\n            <input type='hidden' class='gform_hidden' name='gform_submission_method' data-js='gform_submission_method_6' value='iframe' \/>\n            <input type='hidden' class='gform_hidden' name='gform_theme' data-js='gform_theme_6' id='gform_theme_6' value='gravity-theme' \/>\n            <input type='hidden' class='gform_hidden' name='gform_style_settings' data-js='gform_style_settings_6' id='gform_style_settings_6' value='' \/>\n            <input type='hidden' class='gform_hidden' name='is_submit_6' value='1' \/>\n            <input type='hidden' class='gform_hidden' name='gform_submit' value='6' \/>\n            \n            <input type='hidden' class='gform_hidden' name='gform_currency' data-currency='EUR' value='i3EJIO7LPxvTdo6Z4og4+hcpIJ2MZSwJjaGo422O8KxKv\/MrEFHKdW5q2rX9fIsUeKtB\/GKY+mYaPUtKxxE0VNElUr3c32bD4CDlQJRuj+O1WG4=' \/>\n            <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' \/>\n            <input type='hidden' class='gform_hidden' name='state_6' value='WyJbXSIsIjg3MWNhNmI3M2VmZjcxOWQxMGYyNThiNzhhYjJlZTg4Il0=' \/>\n            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_target_page_number_6' id='gform_target_page_number_6' value='0' \/>\n            <input type='hidden' autocomplete='off' class='gform_hidden' name='gform_source_page_number_6' id='gform_source_page_number_6' value='1' \/>\n            <input type='hidden' name='gform_field_values' value='' \/>\n            \n        <\/div>\n                        <\/form>\n                        <\/div>\n\t\t                <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_6' id='gform_ajax_frame_6' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'><\/iframe>\n\t\t                <script>\ngform.initializeOnLoaded( function() {gformInitSpinner( 6, 'https:\/\/qls.nl\/wp-content\/plugins\/gravityforms\/images\/spinner.svg', true );jQuery('#gform_ajax_frame_6').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_6');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_6').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_6').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_6').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_6').removeClass('gform_validation_error');}setTimeout( function() { \/* delay the scroll by 50 milliseconds to fix a bug in chrome *\/ jQuery(document).scrollTop(jQuery('#gform_wrapper_6').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_6').val();gformInitSpinner( 6, 'https:\/\/qls.nl\/wp-content\/plugins\/gravityforms\/images\/spinner.svg', true );jQuery(document).trigger('gform_page_loaded', [6, current_page]);window['gf_submitting_6'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_6').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_6').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [6]);window['gf_submitting_6'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_6').text());}else{jQuery('#gform_6').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger(\"gform_pre_post_render\", [{ formId: \"6\", currentPage: \"current_page\", abort: function() { this.preventDefault(); } }]);        if (event && event.defaultPrevented) {                return;        }        const gformWrapperDiv = document.getElementById( \"gform_wrapper_6\" );        if ( gformWrapperDiv ) {            const visibilitySpan = document.createElement( \"span\" );            visibilitySpan.id = \"gform_visibility_test_6\";            gformWrapperDiv.insertAdjacentElement( \"afterend\", visibilitySpan );        }        const visibilityTestDiv = document.getElementById( \"gform_visibility_test_6\" );        let postRenderFired = false;        function triggerPostRender() {            if ( postRenderFired ) {                return;            }            postRenderFired = true;            gform.core.triggerPostRenderEvents( 6, current_page );            if ( visibilityTestDiv ) {                visibilityTestDiv.parentNode.removeChild( visibilityTestDiv );            }        }        function debounce( func, wait, immediate ) {            var timeout;            return function() {                var context = this, args = arguments;                var later = function() {                    timeout = null;                    if ( !immediate ) func.apply( context, args );                };                var callNow = immediate && !timeout;                clearTimeout( timeout );                timeout = setTimeout( later, wait );                if ( callNow ) func.apply( context, args );            };        }        const debouncedTriggerPostRender = debounce( function() {            triggerPostRender();        }, 200 );        if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) {            const observer = new MutationObserver( ( mutations ) => {                mutations.forEach( ( mutation ) => {                    if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) {                        debouncedTriggerPostRender();                        observer.disconnect();                    }                });            });            observer.observe( document.body, {                attributes: true,                childList: false,                subtree: true,                attributeFilter: [ 'style', 'class' ],            });        } else {            triggerPostRender();        }    } );} );\n<\/script>\n    \n                            <\/div>\n        <\/div>\n    <\/div>  \n<\/section>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Who is QLS? Europe\u2019s fastest-growing e-commerce fulfilment provider. A family business born from a single DHL depot in Dordrecht in 1990, now shipping 30 million+ orders a year for 3,000+ webshops. We built our own WMS (my.QLS), operate a 110,000-bin AutoStore, and run sites in the Netherlands, Belgium, and the UK. Over 1,000 colleagues. We\u2019re<a class=\"excerpt-read-more\" href=\"https:\/\/qls.nl\/en\/vacancies\/operations-manager-capacity-planning\/\" title=\"Read moreOperations Manager \u2013 Capacity Planning\"> &#8230; Read more \u00bb <\/a><\/p>\n","protected":false},"author":19,"featured_media":0,"menu_order":4,"template":"","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"class_list":["post-13527","vacatures","type-vacatures","status-publish","hentry","vacature_categories-warehouse"],"acf":[],"_links":{"self":[{"href":"https:\/\/qls.nl\/en\/wp-json\/wp\/v2\/vacatures\/13527","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/qls.nl\/en\/wp-json\/wp\/v2\/vacatures"}],"about":[{"href":"https:\/\/qls.nl\/en\/wp-json\/wp\/v2\/types\/vacatures"}],"author":[{"embeddable":true,"href":"https:\/\/qls.nl\/en\/wp-json\/wp\/v2\/users\/19"}],"version-history":[{"count":1,"href":"https:\/\/qls.nl\/en\/wp-json\/wp\/v2\/vacatures\/13527\/revisions"}],"predecessor-version":[{"id":13528,"href":"https:\/\/qls.nl\/en\/wp-json\/wp\/v2\/vacatures\/13527\/revisions\/13528"}],"wp:attachment":[{"href":"https:\/\/qls.nl\/en\/wp-json\/wp\/v2\/media?parent=13527"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}