{"id":7058,"date":"2025-11-03T11:22:40","date_gmt":"2025-11-03T11:22:40","guid":{"rendered":"https:\/\/vettio.com\/blog\/?p=7058"},"modified":"2025-11-03T11:22:43","modified_gmt":"2025-11-03T11:22:43","slug":"candidate-sourcing-channels-right-roles","status":"publish","type":"post","link":"https:\/\/vettio.com\/blog\/candidate-sourcing-channels-right-roles\/","title":{"rendered":"How to Choose the Right Candidate Sourcing Channels for Your Roles"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"500\" src=\"https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/20094456\/How-to-Choose-the-Right-Candidate-Sourcing-Channels-for-Your-Roles.jpg\" alt=\"social media channels for talent acquisition\" class=\"wp-image-7109\" srcset=\"https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/20094456\/How-to-Choose-the-Right-Candidate-Sourcing-Channels-for-Your-Roles.jpg 1000w, https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/20094456\/How-to-Choose-the-Right-Candidate-Sourcing-Channels-for-Your-Roles-300x150.jpg 300w, https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/20094456\/How-to-Choose-the-Right-Candidate-Sourcing-Channels-for-Your-Roles-768x384.jpg 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-1 wp-block-group-is-layout-flex\">\n<p class=\"has-large-font-size\"><strong>TL;DR<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Candidate sourcing channels are how you find and attract talent<\/li>\n\n\n\n<li>The right recruitment channels improve quality, speed and cost<\/li>\n\n\n\n<li>Use varied sourcing channels like online, offline, paid, free and referrals<\/li>\n\n\n\n<li>Match channels to each role\u2019s level and skill needs<\/li>\n\n\n\n<li>Track cost, conversion and quality to refine what works<\/li>\n<\/ul>\n<\/div>\n\n\n\n<p>Every day, recruiters are buried under a sea of resumes. Many are unfit, some are duplicates and a few truly match what the company needs. With so many choices such as job boards, social media, agencies and referrals, how do you know which path will actually lead you to solid candidates? If you pick the wrong channel, you waste time, energy and money chasing candidates who never respond or drop off.<\/p>\n\n\n\n<p>In this blog, you\u2019ll learn how to choose the right candidate sourcing channels for each role. You will learn what these channels are, why the choice matters, different types you can use, how to match them to roles and how to measure which ones truly deliver.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What Are Candidate Sourcing Channels?<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"500\" src=\"https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142712\/image-57.jpeg\" alt=\"\" class=\"wp-image-7064\" srcset=\"https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142712\/image-57.jpeg 1000w, https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142712\/image-57-300x150.jpeg 300w, https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142712\/image-57-768x384.jpeg 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p>Candidate sourcing channels (or candidate sources) are the various routes or platforms you use to attract and identify potential job candidates. Think of each channel as a road your prospects might travel to find your job post or hear about your company. These include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Job boards (general or niche)<br><\/li>\n\n\n\n<li>Professional networks and social media<br><\/li>\n\n\n\n<li>Employee referrals<br><\/li>\n\n\n\n<li>Recruitment agencies and candidate sourcing companies<strong><br><\/strong><\/li>\n\n\n\n<li>Talent databases or internal talent pools<br><\/li>\n\n\n\n<li>Offline events like job fairs or campus visits<\/li>\n<\/ul>\n\n\n\n<p>When you combine several, you compose your recruitment channels or <a href=\"https:\/\/vettio.com\/blog\/talent-sourcing-guide-for-recruiters\/\" target=\"_blank\" rel=\"noreferrer noopener\">talent sourcing platforms<\/a> mix.<\/p>\n\n\n\n<p>Each channel brings in different kinds of candidates. Some are active job seekers, others are passive but that mix matters. The art is in selecting which roads are best for a given position so your recruitment funnel doesn\u2019t leak.<\/p>\n\n\n\n<!-- Channel Decoder Flip Cards | WordPress-ready | Black-Orange-White -->\n<div id=\"channel-decoder\" class=\"cdc-wrap\" aria-labelledby=\"cdc-title\">\n  <h3 id=\"cdc-title\" class=\"cdc-title\">Channel Decoder \u2014 What Are Candidate Sourcing Channels?<\/h3>\n\n  <p class=\"cdc-sub\">Tap or press Enter on a card to reveal the meaning.<\/p>\n\n  <div class=\"cdc-grid\" role=\"list\">\n    <!-- Card 1 -->\n    <button class=\"cdc-card\" role=\"listitem\" aria-expanded=\"false\" aria-label=\"Flip card Job Boards\">\n      <div class=\"cdc-inner\">\n        <div class=\"cdc-face cdc-front\">\n          <span class=\"cdc-icon\">\ud83d\udcbc<\/span>\n          <span class=\"cdc-label\">Job Boards<\/span>\n        <\/div>\n        <div class=\"cdc-face cdc-back\">\n          <span class=\"cdc-back-text\">Online platforms where candidates apply directly.<\/span>\n        <\/div>\n      <\/div>\n    <\/button>\n\n    <!-- Card 2 -->\n    <button class=\"cdc-card\" role=\"listitem\" aria-expanded=\"false\" aria-label=\"Flip card Referrals\">\n      <div class=\"cdc-inner\">\n        <div class=\"cdc-face cdc-front\">\n          <span class=\"cdc-icon\">\ud83e\udd1d<\/span>\n          <span class=\"cdc-label\">Referrals<\/span>\n        <\/div>\n        <div class=\"cdc-face cdc-back\">\n          <span class=\"cdc-back-text\">Employee recommendations that yield stronger hires.<\/span>\n        <\/div>\n      <\/div>\n    <\/button>\n\n    <!-- Card 3 -->\n    <button class=\"cdc-card\" role=\"listitem\" aria-expanded=\"false\" aria-label=\"Flip card Social Media\">\n      <div class=\"cdc-inner\">\n        <div class=\"cdc-face cdc-front\">\n          <span class=\"cdc-icon\">\ud83d\udcac<\/span>\n          <span class=\"cdc-label\">Social Media<\/span>\n        <\/div>\n        <div class=\"cdc-face cdc-back\">\n          <span class=\"cdc-back-text\">Where recruiters find active and passive talent.<\/span>\n        <\/div>\n      <\/div>\n    <\/button>\n\n    <!-- Card 4 -->\n    <button class=\"cdc-card\" role=\"listitem\" aria-expanded=\"false\" aria-label=\"Flip card Agencies\">\n      <div class=\"cdc-inner\">\n        <div class=\"cdc-face cdc-front\">\n          <span class=\"cdc-icon\">\ud83c\udfe2<\/span>\n          <span class=\"cdc-label\">Agencies<\/span>\n        <\/div>\n        <div class=\"cdc-face cdc-back\">\n          <span class=\"cdc-back-text\">External partners for specialized hiring.<\/span>\n        <\/div>\n      <\/div>\n    <\/button>\n\n    <!-- Card 5 -->\n    <button class=\"cdc-card\" role=\"listitem\" aria-expanded=\"false\" aria-label=\"Flip card Internal Database\">\n      <div class=\"cdc-inner\">\n        <div class=\"cdc-face cdc-front\">\n          <span class=\"cdc-icon\">\ud83d\uddc2\ufe0f<\/span>\n          <span class=\"cdc-label\">Internal Database<\/span>\n        <\/div>\n        <div class=\"cdc-face cdc-back\">\n          <span class=\"cdc-back-text\">Your pool of past applicants and employees.<\/span>\n        <\/div>\n      <\/div>\n    <\/button>\n  <\/div>\n<\/div>\n\n<style>\n  \/* Scoped styles *\/\n  .cdc-wrap {\n    --cdc-black:#0b0b0b;\n    --cdc-black-2:#121212;\n    --cdc-white:#ffffff;\n    --cdc-orange:#ff6a00;\n    --cdc-muted:#cfcfcf;\n\n    background: radial-gradient(75rem 75rem at 10% 10%, #151515 0%, var(--cdc-black) 60%),\n                radial-gradient(50rem 50rem at 90% 20%, #1a1a1a 0%, var(--cdc-black) 70%);\n    padding: 20px;\n    border-radius: 16px;\n    max-width: 100%;\n    color: var(--cdc-white);\n    box-shadow: 0 8px 30px rgba(0,0,0,.35);\n  }\n\n  .cdc-title {\n    margin: 0 0 8px 0;\n    font-size: 1.25rem;\n    line-height: 1.2;\n    color: var(--cdc-orange);\n    letter-spacing: .2px;\n  }\n\n  .cdc-sub {\n    margin: 0 0 18px 0;\n    font-size: .95rem;\n    color: var(--cdc-muted);\n  }\n\n  .cdc-grid {\n    display: grid;\n    grid-template-columns: repeat(5, minmax(140px, 1fr));\n    gap: 16px;\n  }\n\n  @media (max-width: 1080px) {\n    .cdc-grid { grid-template-columns: repeat(3, minmax(140px, 1fr)); }\n  }\n  @media (max-width: 680px) {\n    .cdc-grid { grid-template-columns: repeat(2, minmax(120px, 1fr)); }\n  }\n  @media (max-width: 420px) {\n    .cdc-grid { grid-template-columns: 1fr; }\n  }\n\n  .cdc-card {\n    position: relative;\n    width: 100%;\n    aspect-ratio: 4\/5;\n    background: transparent;\n    border: none;\n    padding: 0;\n    perspective: 1000px;\n    cursor: pointer;\n    border-radius: 14px;\n    outline: none;\n  }\n  .cdc-card:focus-visible { box-shadow: 0 0 0 3px var(--cdc-orange); border-radius: 14px; }\n\n  .cdc-inner {\n    position: relative;\n    width: 100%;\n    height: 100%;\n    transition: transform .6s ease;\n    transform-style: preserve-3d;\n    border-radius: 14px;\n  }\n\n  .cdc-card[aria-expanded=\"true\"] .cdc-inner { transform: rotateY(180deg); }\n\n  .cdc-face {\n    position: absolute;\n    inset: 0;\n    display: grid;\n    place-items: center;\n    text-align: center;\n    border-radius: 14px;\n    backface-visibility: hidden;\n    -webkit-backface-visibility: hidden;\n    box-shadow: inset 0 0 0 1px rgba(255,255,255,.06), 0 10px 20px rgba(0,0,0,.35);\n  }\n\n  .cdc-front {\n    background: linear-gradient(160deg, var(--cdc-black-2), #0f0f0f);\n  }\n  .cdc-front .cdc-icon {\n    font-size: 2rem;\n    display: block;\n    margin-bottom: 10px;\n  }\n  .cdc-front .cdc-label {\n    font-weight: 600;\n    color: var(--cdc-white);\n    padding: 6px 10px;\n    border-radius: 10px;\n    background: rgba(255,106,0,.15);\n    outline: 1px solid rgba(255,106,0,.25);\n  }\n\n  .cdc-back {\n    background: var(--cdc-white);\n    color: #111111;\n    transform: rotateY(180deg);\n    padding: 16px;\n    display: grid;\n    place-items: center;\n  }\n  .cdc-back-text {\n    font-size: .98rem;\n    line-height: 1.4;\n    color: #111111;\n    padding: 0 6px;\n  }\n\n  \/* Hover hints *\/\n  .cdc-card:hover .cdc-front .cdc-label {\n    background: rgba(255,106,0,.25);\n    outline-color: rgba(255,106,0,.45);\n  }\n<\/style>\n\n<script>\n  (function(){\n    const wrap = document.getElementById('channel-decoder');\n    if(!wrap) return;\n    const cards = wrap.querySelectorAll('.cdc-card');\n\n    function toggleCard(card){\n      const expanded = card.getAttribute('aria-expanded') === 'true';\n      \/\/ Close others for cleaner UX\n      cards.forEach(c => c.setAttribute('aria-expanded', 'false'));\n      card.setAttribute('aria-expanded', String(!expanded));\n    }\n\n    cards.forEach(card => {\n      card.addEventListener('click', () => toggleCard(card));\n      card.addEventListener('keydown', (e) => {\n        if(e.key === 'Enter' || e.key === ' ') {\n          e.preventDefault();\n          toggleCard(card);\n        }\n        \/\/ Arrow navigation\n        if(e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n          e.preventDefault();\n          const next = card.nextElementSibling || cards[0];\n          next.focus();\n        }\n        if(e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n          e.preventDefault();\n          const prev = card.previousElementSibling || cards[cards.length - 1];\n          prev.focus();\n        }\n      });\n      \/\/ Make focusable for keyboard users\n      card.setAttribute('tabindex','0');\n    });\n\n    \/\/ Close if clicking outside\n    document.addEventListener('click', (e) => {\n      if(!wrap.contains(e.target)) {\n        cards.forEach(c => c.setAttribute('aria-expanded','false'));\n      }\n    }, {passive:true});\n  })();\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Why Choosing the Right Channels Matters<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"500\" src=\"https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142720\/image-58.jpeg\" alt=\"\" class=\"wp-image-7065\" srcset=\"https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142720\/image-58.jpeg 1000w, https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142720\/image-58-300x150.jpeg 300w, https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142720\/image-58-768x384.jpeg 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p>Choosing indiscriminately leads to low ROI. Many recruiters spend budget and hours advertising on every available candidate sourcing platform then see few conversions. A few reasons this matters:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cost efficiency<\/strong>: Some channels cost a lot (paid job ads, agencies). You want to pay more only where returns justify it.<br><\/li>\n\n\n\n<li><strong>Quality over quantity<\/strong>: It\u2019s tempting to chase volume but the best hires often come from targeted outreach. For example, an outbound, sourced candidate is reportedly <a href=\"https:\/\/www.gem.com\/blog\/10-takeaways-from-the-2025-recruiting-benchmarks-report\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">5x more likely to be hired<\/a> than an inbound applicant.<br><\/li>\n\n\n\n<li><strong>Speed<\/strong>: A good channel can dramatically cut the time to hire.<br><\/li>\n\n\n\n<li><strong>Role fit<\/strong>: What works for a junior role won\u2019t always work for C-level or niche technical roles.<br><\/li>\n\n\n\n<li><strong>Scalability &amp; sustainability<\/strong>: You want channels you can repeat and rely on.<\/li>\n<\/ul>\n\n\n\n<p>Recent trends also support this focus. Over <a href=\"https:\/\/vouchfor.com\/blog\/online-recruitment-statistics\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">67% of recruiters<\/a> now use social media to recruit. So the right mix of candidate sources is not a random buffet. It\u2019s a strategy.<\/p>\n\n\n\n<!-- Recruitment ROI Slider | WordPress-ready | Black\u2013Orange\u2013White -->\n<div id=\"roi-sim\" class=\"roi-wrap\" aria-labelledby=\"roi-title\">\n  <h3 id=\"roi-title\" class=\"roi-title\">Recruitment ROI Simulator \u2014 Why Choosing the Right Channels Matters<\/h3>\n  <p class=\"roi-sub\">Distribute a $5,000 hiring budget across channels. The chart and KPIs update live.<\/p>\n\n  <!-- Budget Summary -->\n  <div class=\"roi-summary\" role=\"status\" aria-live=\"polite\">\n    <div class=\"roi-pill\"><strong>Total Budget:<\/strong> <span id=\"roi-total\">$5,000<\/span><\/div>\n    <div class=\"roi-pill\"><strong>Allocated:<\/strong> <span id=\"roi-alloc\">$5,000<\/span><\/div>\n    <div class=\"roi-pill\"><strong>Remaining:<\/strong> <span id=\"roi-remaining\">$0<\/span><\/div>\n  <\/div>\n\n  <!-- Sliders -->\n  <div class=\"roi-grid\">\n    <!-- Job Boards -->\n    <div class=\"roi-card\">\n      <label class=\"roi-label\" for=\"s-job\">Job Boards<\/label>\n      <input id=\"s-job\" class=\"roi-range\" type=\"range\" min=\"0\" max=\"5000\" step=\"100\" value=\"1250\" aria-describedby=\"s-job-val\">\n      <div class=\"roi-row\">\n        <input id=\"n-job\" class=\"roi-number\" type=\"number\" min=\"0\" max=\"5000\" step=\"50\" value=\"1250\" aria-label=\"Job Boards budget in dollars\">\n        <span id=\"s-job-val\" class=\"roi-value\">$1,250<\/span>\n      <\/div>\n    <\/div>\n\n    <!-- Referrals -->\n    <div class=\"roi-card\">\n      <label class=\"roi-label\" for=\"s-ref\">Referrals<\/label>\n      <input id=\"s-ref\" class=\"roi-range\" type=\"range\" min=\"0\" max=\"5000\" step=\"100\" value=\"1250\" aria-describedby=\"s-ref-val\">\n      <div class=\"roi-row\">\n        <input id=\"n-ref\" class=\"roi-number\" type=\"number\" min=\"0\" max=\"5000\" step=\"50\" value=\"1250\" aria-label=\"Referrals budget in dollars\">\n        <span id=\"s-ref-val\" class=\"roi-value\">$1,250<\/span>\n      <\/div>\n    <\/div>\n\n    <!-- Agencies -->\n    <div class=\"roi-card\">\n      <label class=\"roi-label\" for=\"s-agy\">Agencies<\/label>\n      <input id=\"s-agy\" class=\"roi-range\" type=\"range\" min=\"0\" max=\"5000\" step=\"100\" value=\"1250\" aria-describedby=\"s-agy-val\">\n      <div class=\"roi-row\">\n        <input id=\"n-agy\" class=\"roi-number\" type=\"number\" min=\"0\" max=\"5000\" step=\"50\" value=\"1250\" aria-label=\"Agencies budget in dollars\">\n        <span id=\"s-agy-val\" class=\"roi-value\">$1,250<\/span>\n      <\/div>\n    <\/div>\n\n    <!-- Social Media -->\n    <div class=\"roi-card\">\n      <label class=\"roi-label\" for=\"s-soc\">Social Media<\/label>\n      <input id=\"s-soc\" class=\"roi-range\" type=\"range\" min=\"0\" max=\"5000\" step=\"100\" value=\"1250\" aria-describedby=\"s-soc-val\">\n      <div class=\"roi-row\">\n        <input id=\"n-soc\" class=\"roi-number\" type=\"number\" min=\"0\" max=\"5000\" step=\"50\" value=\"1250\" aria-label=\"Social Media budget in dollars\">\n        <span id=\"s-soc-val\" class=\"roi-value\">$1,250<\/span>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Actions -->\n  <div class=\"roi-actions\" role=\"group\" aria-label=\"Simulator actions\">\n    <button type=\"button\" class=\"roi-btn\" id=\"btn-balance\">Auto-balance<\/button>\n    <button type=\"button\" class=\"roi-btn roi-btn-ghost\" id=\"btn-reset\">Reset<\/button>\n  <\/div>\n\n  <!-- KPIs -->\n  <div class=\"roi-kpis\">\n    <div class=\"roi-kpi\">\n      <div class=\"roi-kpi-label\">Estimated Hires<\/div>\n      <div class=\"roi-kpi-num\" id=\"kpi-hires\">\u2014<\/div>\n    <\/div>\n    <div class=\"roi-kpi\">\n      <div class=\"roi-kpi-label\">Est. Cost per Hire<\/div>\n      <div class=\"roi-kpi-num\" id=\"kpi-cph\">\u2014<\/div>\n    <\/div>\n    <div class=\"roi-kpi\">\n      <div class=\"roi-kpi-label\">Avg. Time to Fill<\/div>\n      <div class=\"roi-kpi-num\" id=\"kpi-ttf\">\u2014<\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Chart -->\n  <div class=\"roi-chart\">\n    <div class=\"roi-chart-head\">\n      <span class=\"roi-chart-title\">Hires by Channel (simulated)<\/span>\n    <\/div>\n    <div class=\"roi-bars\" role=\"img\" aria-label=\"Bar chart of estimated hires by channel\">\n      <div class=\"roi-bar\">\n        <div class=\"roi-bar-fill\" id=\"bar-job\" style=\"height:0%\"><\/div>\n        <div class=\"roi-bar-label\">Job Boards<\/div>\n        <div class=\"roi-bar-val\" id=\"barv-job\">0<\/div>\n      <\/div>\n      <div class=\"roi-bar\">\n        <div class=\"roi-bar-fill\" id=\"bar-ref\" style=\"height:0%\"><\/div>\n        <div class=\"roi-bar-label\">Referrals<\/div>\n        <div class=\"roi-bar-val\" id=\"barv-ref\">0<\/div>\n      <\/div>\n      <div class=\"roi-bar\">\n        <div class=\"roi-bar-fill\" id=\"bar-agy\" style=\"height:0%\"><\/div>\n        <div class=\"roi-bar-label\">Agencies<\/div>\n        <div class=\"roi-bar-val\" id=\"barv-agy\">0<\/div>\n      <\/div>\n      <div class=\"roi-bar\">\n        <div class=\"roi-bar-fill\" id=\"bar-soc\" style=\"height:0%\"><\/div>\n        <div class=\"roi-bar-label\">Social<\/div>\n        <div class=\"roi-bar-val\" id=\"barv-soc\">0<\/div>\n      <\/div>\n    <\/div>\n    <div class=\"roi-legend\">\n      <span class=\"roi-key\"><span class=\"roi-swatch\"><\/span> Estimated hires<\/span>\n    <\/div>\n  <\/div>\n<\/div>\n\n<style>\n  \/* === Scoped Styles === *\/\n  .roi-wrap{\n    --roi-black:#0b0b0b;\n    --roi-black-2:#121212;\n    --roi-white:#ffffff;\n    --roi-orange:#ff6a00;\n    --roi-muted:#b7b7b7;\n\n    max-width:100%;\n    background: radial-gradient(80rem 80rem at 10% 5%, #1a1a1a 0%, var(--roi-black) 65%),\n                linear-gradient(180deg, var(--roi-black) 0%, #0e0e0e 100%);\n    color:var(--roi-white);\n    padding:20px;\n    border-radius:16px;\n    box-shadow:0 8px 30px rgba(0,0,0,.35);\n    font-family:system-ui,-apple-system,Segoe UI,Roboto,Inter,Arial,sans-serif;\n  }\n  .roi-title{\n    margin:0 0 8px 0;\n    color:var(--roi-orange);\n    font-size:1.25rem;\n    line-height:1.2;\n    letter-spacing:.2px;\n  }\n  .roi-sub{\n    margin:0 0 14px 0;\n    color:var(--roi-muted);\n    font-size:.95rem;\n  }\n\n  .roi-summary{\n    display:flex;\n    flex-wrap:wrap;\n    gap:10px;\n    margin-bottom:14px;\n  }\n  .roi-pill{\n    background:rgba(255,106,0,.12);\n    border:1px solid rgba(255,106,0,.35);\n    color:var(--roi-white);\n    padding:8px 10px;\n    border-radius:999px;\n    font-size:.9rem;\n  }\n\n  .roi-grid{\n    display:grid;\n    grid-template-columns:repeat(4, minmax(180px,1fr));\n    gap:14px;\n  }\n  @media (max-width:1000px){ .roi-grid{ grid-template-columns:repeat(2,1fr);} }\n  @media (max-width:540px){ .roi-grid{ grid-template-columns:1fr;} }\n\n  .roi-card{\n    background:linear-gradient(160deg, var(--roi-black-2), #0f0f0f);\n    border:1px solid rgba(255,255,255,.06);\n    border-radius:14px;\n    padding:14px;\n    box-shadow:inset 0 0 0 1px rgba(255,255,255,.04);\n  }\n  .roi-label{\n    display:block;\n    color:#fff;\n    font-weight:600;\n    margin-bottom:8px;\n  }\n  .roi-range{\n    width:100%;\n    appearance:none;\n    height:8px;\n    border-radius:999px;\n    background:rgba(255,255,255,.12);\n    outline:none;\n  }\n  .roi-range::-webkit-slider-thumb{\n    appearance:none;\n    width:18px;height:18px;border-radius:50%;\n    background:var(--roi-orange);\n    border:2px solid #fff;\n    box-shadow:0 0 0 3px rgba(255,106,0,.25);\n    cursor:pointer;\n  }\n  .roi-range::-moz-range-thumb{\n    width:18px;height:18px;border-radius:50%;\n    background:var(--roi-orange);\n    border:2px solid #fff;\n    box-shadow:0 0 0 3px rgba(255,106,0,.25);\n    cursor:pointer;\n  }\n\n  .roi-row{\n    margin-top:10px;\n    display:flex;align-items:center;gap:10px;justify-content:space-between;\n  }\n  .roi-number{\n    width:110px;\n    padding:8px 10px;\n    background:#0f0f0f;\n    color:#fff;\n    border:1px solid rgba(255,255,255,.12);\n    border-radius:10px;\n  }\n  .roi-value{ color:var(--roi-muted); }\n\n  .roi-actions{\n    display:flex;gap:10px;flex-wrap:wrap;\n    margin:14px 0 8px 0;\n  }\n  .roi-btn{\n    background:var(--roi-orange);\n    color:#000;\n    border:none;\n    border-radius:10px;\n    padding:10px 14px;\n    font-weight:700;\n    cursor:pointer;\n  }\n  .roi-btn:hover{ filter:brightness(1.05); }\n  .roi-btn-ghost{\n    background:transparent;color:var(--roi-white);\n    border:1px solid rgba(255,255,255,.2);\n  }\n\n  .roi-kpis{\n    display:grid;\n    grid-template-columns:repeat(3, minmax(160px,1fr));\n    gap:10px;\n    margin:12px 0 6px 0;\n  }\n  @media (max-width:700px){ .roi-kpis{ grid-template-columns:1fr; } }\n  .roi-kpi{\n    background:#0f0f0f;\n    border:1px solid rgba(255,255,255,.08);\n    border-radius:12px;\n    padding:12px;\n  }\n  .roi-kpi-label{ color:var(--roi-muted); font-size:.85rem; }\n  .roi-kpi-num{ font-size:1.3rem; font-weight:800; margin-top:4px; }\n\n  .roi-chart{\n    margin-top:8px;\n    background:linear-gradient(180deg,#0f0f0f, #0c0c0c);\n    border:1px solid rgba(255,255,255,.06);\n    border-radius:14px;\n    padding:14px;\n  }\n  .roi-chart-head{\n    display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;\n  }\n  .roi-chart-title{ color:#fff; font-weight:600; }\n  .roi-bars{\n    display:grid;\n    grid-template-columns:repeat(4, 1fr);\n    gap:12px;\n    align-items:end;\n    height:200px;\n    padding:8px 4px 0;\n    border-left:1px dashed rgba(255,255,255,.12);\n    border-bottom:1px dashed rgba(255,255,255,.12);\n  }\n  .roi-bar{ display:flex;flex-direction:column;align-items:center;gap:6px; }\n  .roi-bar-fill{\n    width:80%;\n    background:linear-gradient(180deg, rgba(255,106,0,1), rgba(255,106,0,.65));\n    border-radius:8px 8px 0 0;\n    box-shadow:0 6px 18px rgba(255,106,0,.35), inset 0 0 0 1px rgba(255,255,255,.15);\n    transition:height .35s ease;\n  }\n  .roi-bar-label{ color:var(--roi-muted); font-size:.85rem; }\n  .roi-bar-val{ color:#fff; font-weight:700; font-variant-numeric:tabular-nums; }\n\n  .roi-legend{ margin-top:8px; color:var(--roi-muted); font-size:.9rem; }\n  .roi-swatch{ display:inline-block; width:14px; height:14px; border-radius:4px; background:var(--roi-orange); margin-right:6px; vertical-align:middle; }\n<\/style>\n\n<script>\n(function(){\n  const BUDGET = 5000;\n\n  \/\/ Channel efficiency assumptions (simple demo model):\n  \/\/ hires_per_1k = hires you can expect per $1,000\n  \/\/ ttf_days = average time to fill (days) influence for weighted average\n  const MODEL = {\n    job: { label:'Job Boards', hires_per_1k: 1.2, ttf_days: 24 },\n    ref: { label:'Referrals',  hires_per_1k: 1.8, ttf_days: 20 },\n    agy: { label:'Agencies',   hires_per_1k: 0.9, ttf_days: 18 },\n    soc: { label:'Social',     hires_per_1k: 1.0, ttf_days: 22 }\n  };\n\n  const $ = (s, root=document) => root.querySelector(s);\n  function fmtUSD(n){ return '$' + n.toLocaleString(); }\n  function clamp(v, min, max){ return Math.max(min, Math.min(max, v)); }\n\n  const wrap = document.getElementById('roi-sim');\n  if(!wrap) return;\n\n  const ranges = {\n    job: $('#s-job', wrap),\n    ref: $('#s-ref', wrap),\n    agy: $('#s-agy', wrap),\n    soc: $('#s-soc', wrap)\n  };\n  const numbers = {\n    job: $('#n-job', wrap),\n    ref: $('#n-ref', wrap),\n    agy: $('#n-agy', wrap),\n    soc: $('#n-soc', wrap)\n  };\n  const vals = {\n    job: $('#s-job-val', wrap),\n    ref: $('#s-ref-val', wrap),\n    agy: $('#s-agy-val', wrap),\n    soc: $('#s-soc-val', wrap)\n  };\n\n  const totals = {\n    total: $('#roi-total', wrap),\n    alloc: $('#roi-alloc', wrap),\n    remaining: $('#roi-remaining', wrap)\n  };\n\n  const bars = {\n    job: $('#bar-job', wrap),\n    ref: $('#bar-ref', wrap),\n    agy: $('#bar-agy', wrap),\n    soc: $('#bar-soc', wrap)\n  };\n  const barVals = {\n    job: $('#barv-job', wrap),\n    ref: $('#barv-ref', wrap),\n    agy: $('#barv-agy', wrap),\n    soc: $('#barv-soc', wrap)\n  };\n\n  const kpi = {\n    hires: $('#kpi-hires', wrap),\n    cph: $('#kpi-cph', wrap),\n    ttf: $('#kpi-ttf', wrap)\n  };\n\n  const btnBalance = $('#btn-balance', wrap);\n  const btnReset = $('#btn-reset', wrap);\n\n  totals.total.textContent = fmtUSD(BUDGET);\n\n  function readAllocations(){\n    return {\n      job: Number(numbers.job.value)||0,\n      ref: Number(numbers.ref.value)||0,\n      agy: Number(numbers.agy.value)||0,\n      soc: Number(numbers.soc.value)||0\n    };\n  }\n\n  function writeToControls(key, val){\n    val = clamp(Math.round(val), 0, BUDGET);\n    numbers[key].value = val;\n    ranges[key].value = val;\n    vals[key].textContent = fmtUSD(val);\n  }\n\n  function updateSummary(){\n    const a = readAllocations();\n    const sum = a.job + a.ref + a.agy + a.soc;\n    totals.alloc.textContent = fmtUSD(sum);\n    totals.remaining.textContent = fmtUSD(BUDGET - sum);\n  }\n\n  function simulate(){\n    const alloc = readAllocations();\n    const sum = alloc.job + alloc.ref + alloc.agy + alloc.soc;\n    const denom = sum > 0 ? sum : 1;\n\n    \/\/ Normalize allocations to the fixed budget so results always scale to $5,000 context\n    const eff = {\n      job: alloc.job \/ denom * BUDGET,\n      ref: alloc.ref \/ denom * BUDGET,\n      agy: alloc.agy \/ denom * BUDGET,\n      soc: alloc.soc \/ denom * BUDGET\n    };\n\n    \/\/ Estimated hires by channel and totals\n    const hires = {\n      job: (eff.job\/1000) * MODEL.job.hires_per_1k,\n      ref: (eff.ref\/1000) * MODEL.ref.hires_per_1k,\n      agy: (eff.agy\/1000) * MODEL.agy.hires_per_1k,\n      soc: (eff.soc\/1000) * MODEL.soc.hires_per_1k\n    };\n    const totalHires = hires.job + hires.ref + hires.agy + hires.soc;\n\n    \/\/ Cost per hire (based on full $5,000 context if any allocation exists)\n    const spend = sum>0 ? BUDGET : 0;\n    const cph = totalHires>0 ? spend \/ totalHires : 0;\n\n    \/\/ Weighted average time to fill\n    const w = {\n      job: eff.job, ref: eff.ref, agy: eff.agy, soc: eff.soc\n    };\n    const wSum = w.job + w.ref + w.agy + w.soc;\n    const avgTTF = wSum>0\n      ? (w.job*MODEL.job.ttf_days + w.ref*MODEL.ref.ttf_days + w.agy*MODEL.agy.ttf_days + w.soc*MODEL.soc.ttf_days) \/ wSum\n      : 0;\n\n    \/\/ Chart scaling (find max for bar height)\n    const maxH = Math.max(hires.job, hires.ref, hires.agy, hires.soc, 1);\n    const pct = v => clamp((v \/ maxH) * 100, 0, 100);\n\n    \/\/ Apply to bars\n    bars.job.style.height = pct(hires.job) + '%';\n    bars.ref.style.height = pct(hires.ref) + '%';\n    bars.agy.style.height = pct(hires.agy) + '%';\n    bars.soc.style.height = pct(hires.soc) + '%';\n\n    barVals.job.textContent = hires.job.toFixed(1);\n    barVals.ref.textContent = hires.ref.toFixed(1);\n    barVals.agy.textContent = hires.agy.toFixed(1);\n    barVals.soc.textContent = hires.soc.toFixed(1);\n\n    \/\/ KPIs\n    kpi.hires.textContent = totalHires>0 ? totalHires.toFixed(1) : '0.0';\n    kpi.cph.textContent = totalHires>0 ? fmtUSD(Math.round(cph)) : '\u2014';\n    kpi.ttf.textContent = avgTTF>0 ? Math.round(avgTTF) + ' days' : '\u2014';\n  }\n\n  function syncFromRange(key){\n    numbers[key].value = ranges[key].value;\n    vals[key].textContent = fmtUSD(Number(ranges[key].value));\n    updateSummary(); simulate();\n  }\n  function syncFromNumber(key){\n    const v = clamp(Number(numbers[key].value)||0, 0, BUDGET);\n    numbers[key].value = v;\n    ranges[key].value = v;\n    vals[key].textContent = fmtUSD(v);\n    updateSummary(); simulate();\n  }\n\n  Object.keys(ranges).forEach(k => {\n    ranges[k].addEventListener('input', () => syncFromRange(k));\n    numbers[k].addEventListener('input', () => syncFromNumber(k));\n  });\n\n  btnBalance.addEventListener('click', () => {\n    \/\/ Balance equally across active channels (those > 0, or all if all zero)\n    const a = readAllocations();\n    let keys = Object.keys(a).filter(k => a[k] > 0);\n    if(keys.length === 0) keys = Object.keys(a);\n    const per = Math.floor(BUDGET \/ keys.length \/ 50) * 50; \/\/ tidy step of 50\n    let remainder = BUDGET - per * keys.length;\n\n    \/\/ Assign\n    Object.keys(a).forEach(k => writeToControls(k, 0));\n    keys.forEach((k, i) => {\n      const extra = remainder>0 ? Math.min(50, remainder) : 0;\n      writeToControls(k, per + extra);\n      remainder -= extra;\n    });\n    updateSummary(); simulate();\n  });\n\n  btnReset.addEventListener('click', () => {\n    \/\/ Back to 4-way even split\n    ['job','ref','agy','soc'].forEach(k => writeToControls(k, 1250));\n    updateSummary(); simulate();\n  });\n\n  \/\/ Initial paint\n  updateSummary(); simulate();\n})();\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Types of Candidate Sourcing Channels<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"500\" src=\"https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142729\/image-59.jpeg\" alt=\"\" class=\"wp-image-7066\" srcset=\"https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142729\/image-59.jpeg 1000w, https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142729\/image-59-300x150.jpeg 300w, https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142729\/image-59-768x384.jpeg 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p>Here\u2019s a breakdown of different sourcing channels you can use. You\u2019ll often blend several depending on your hiring goal.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Online\/Digital Channels<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Job boards (general and niche):<\/strong> e.g. Indeed, Glassdoor, specialized tech or healthcare boards<br><\/li>\n\n\n\n<li><strong>Social media\/professional networks:<\/strong> LinkedIn, Twitter, Facebook groups, Instagram recruiting posts<br><\/li>\n\n\n\n<li><strong>Talent databases\/CV databases:<\/strong> platforms where recruiters search resumes<br><\/li>\n\n\n\n<li><strong>Company careers pages\/microsites:<\/strong> job posts on your own site<br><\/li>\n\n\n\n<li><strong>Programmatic\/paid ads:<\/strong> using ad networks or boosting to promote job posts<\/li>\n<\/ul>\n\n\n\n<p>These fall under online sourcing and are often the first tools recruiters try. <a href=\"https:\/\/www.zippia.com\/advice\/social-media-recruitment-statistics\/\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">57% of candidates<\/a> use social media for job search and 92% of organizations use social platforms to source talent.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Referral\/Internal Channels<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Employee referrals<br><\/li>\n\n\n\n<li>Alumni networks\/boomerang hires<br><\/li>\n\n\n\n<li>Internal talent pools\/past applicants<\/li>\n<\/ul>\n\n\n\n<p>Referrals are powerful: referred candidates often integrate faster and stay longer.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Agency\/Third-Party Channels<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Recruitment agencies\/staffing firms<br><\/li>\n\n\n\n<li>Candidate sourcing services\/outsourced sourcing teams<br><\/li>\n\n\n\n<li>Headhunters\/executive search firms<\/li>\n<\/ul>\n\n\n\n<p>These are useful when you need to scale fast or have hard-to-fill roles.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Offline\/Real-World Channels<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Job fairs, campus recruiting events<br><\/li>\n\n\n\n<li>Networking events\/meetups\/industry conferences<br><\/li>\n\n\n\n<li>Print ads\/local media (still relevant in some regions)<\/li>\n<\/ul>\n\n\n\n<p>This is especially useful when targeting local or region-specific talent.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Proactive\/Outbound Channels<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Direct outreach\/cold outreach (email, InMail)<br><\/li>\n\n\n\n<li>Boolean search &amp; sourcing on platforms<br><\/li>\n\n\n\n<li>Social recruiting\/passive candidate tapping<\/li>\n<\/ul>\n\n\n\n<p>This is where <a href=\"https:\/\/vettio.com\/blog\/active-sourcing-strategies-vs-passive-sourcing\/\" target=\"_blank\" rel=\"noreferrer noopener\">active vs passive sourcing strategies<\/a> come in. Some roles require you to reach out to candidates who are not actively applying. Learning <a href=\"https:\/\/vettio.com\/blog\/source-passive-candidates-effective-ways\/\" target=\"_blank\" rel=\"noreferrer noopener\">how to source passive candidates<\/a> becomes essential here.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How to Match Channels to Roles<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"500\" src=\"https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142739\/image-60.jpeg\" alt=\"\" class=\"wp-image-7067\" srcset=\"https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142739\/image-60.jpeg 1000w, https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142739\/image-60-300x150.jpeg 300w, https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142739\/image-60-768x384.jpeg 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p>Choosing candidate sourcing channels at random won\u2019t cut it. You must zero in on which recruitment channels best suit each role. Here\u2019s how:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Profile your ideal candidate<\/strong><\/h3>\n\n\n\n<p>Start by mapping your ideal candidate\u2019s behavior:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Are they actively job hunting (junior, non-specialized)?<br><\/li>\n\n\n\n<li>Or are they passive, meaning already employed, selective (senior, niche, technical)?<\/li>\n<\/ul>\n\n\n\n<p>For active roles, mass candidate sourcing platforms like job boards and social media fare well. For passive ones, you lean on direct outreach, niche communities or talent sourcing platforms where passive talent congregates.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Role complexity and specialization<\/strong><\/h3>\n\n\n\n<p>If you\u2019re hiring for a role that demands rare skills (e.g. AI\/ML engineers, cybersecurity), generic channels often underperform. You\u2019ll need candidate sourcing services, candidate sourcing companies or specialized forums where such talent hangs out.<\/p>\n\n\n\n<p>For more common roles (admin, general sales), broader recruitment channels like job boards, local ads or referral programs often yield better volume.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Budget, timeline and volume<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If your hiring timeline is tight, go where speed matters like boosted ads, agency sourcing or internal \u201cfast lane\u201d channels.<br><\/li>\n\n\n\n<li>If budget is tight, lean more on free candidate sources: referrals, alumni, internal pools, social media.<br><\/li>\n\n\n\n<li>If you have many similar roles to fill, you can afford to test and scale channels that repeat reliably.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Mix and test<\/strong><\/h3>\n\n\n\n<p>Don\u2019t rely on one channel. Use a mix: one high-volume channel, one niche channel, one referral or internal channel. Monitor all. Over time, drop underperformers and double down on what works for that type of role.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Stay flexible<\/strong><\/h3>\n\n\n\n<p>A channel that works today for software engineers in Karachi might fail tomorrow. New platforms emerge, candidate habits shift. Regularly revalidate your mix.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Effective Candidate Sourcing Tips for Recruiters<\/strong><\/h3>\n\n\n\n<p>Good sourcing starts with knowing where your best hires usually come from. Look back at your last ten successful hires and trace their paths. You\u2019ll notice patterns like certain job boards, referrals, or social posts that consistently deliver. Focus your energy there instead of scattering efforts.<\/p>\n\n\n\n<p>Build a rhythm of outreach. Message potential candidates weekly, not when roles open up. Keep your tone real and short. Skip generic lines like \u201cWe found your profile impressive.\u201d Personalization beats volume every time.<\/p>\n\n\n\n<p>Finally, track everything. Use your ATS or a spreadsheet to log source, time to respond, and outcome. Over a few cycles, you\u2019ll spot your top-performing channels and the ones worth dropping.<\/p>\n\n\n\n<!-- Matchmaker Puzzle | WordPress-ready | Black\u2013Orange\u2013White -->\n<div id=\"matchmaker\" class=\"mm-wrap\" aria-labelledby=\"mm-title\">\n  <h3 id=\"mm-title\" class=\"mm-title\">Matchmaker Puzzle \u2014 How to Match Channels to Roles<\/h3>\n  <p class=\"mm-sub\">Click a <strong>role<\/strong> and then click the channel you think fits best.<\/p>\n\n  <div class=\"mm-grid\">\n    <!-- Roles -->\n    <div class=\"mm-col\">\n      <h4 class=\"mm-heading\">Roles<\/h4>\n      <div class=\"mm-list\">\n        <button class=\"mm-item role\" data-role=\"Developer\">\ud83d\udc68\u200d\ud83d\udcbb Developer<\/button>\n        <button class=\"mm-item role\" data-role=\"Designer\">\ud83c\udfa8 Designer<\/button>\n        <button class=\"mm-item role\" data-role=\"Sales Executive\">\ud83d\udcbc Sales Executive<\/button>\n        <button class=\"mm-item role\" data-role=\"Intern\">\ud83c\udf93 Intern<\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Channels -->\n    <div class=\"mm-col\">\n      <h4 class=\"mm-heading\">Channels<\/h4>\n      <div class=\"mm-list\">\n        <button class=\"mm-item channel\" data-channel=\"GitHub\">\ud83d\udc19 GitHub<\/button>\n        <button class=\"mm-item channel\" data-channel=\"Behance\">\ud83d\uddbc\ufe0f Behance<\/button>\n        <button class=\"mm-item channel\" data-channel=\"LinkedIn\">\ud83d\udcac LinkedIn<\/button>\n        <button class=\"mm-item channel\" data-channel=\"Campus Fairs\">\ud83c\udfeb Campus Fairs<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <div class=\"mm-actions\">\n    <button id=\"mm-check\" class=\"mm-btn\">Check Matches<\/button>\n    <button id=\"mm-reset\" class=\"mm-btn mm-btn-ghost\">Reset<\/button>\n  <\/div>\n\n  <div class=\"mm-result\" id=\"mm-result\" aria-live=\"polite\"><\/div>\n<\/div>\n\n<style>\n\/* ===== Matchmaker Puzzle Theme ===== *\/\n.mm-wrap{\n  --black:#0b0b0b; --black2:#121212; --orange:#ff6a00; --white:#fff; --muted:#bbb;\n  max-width:100%; width:100%;\n  background:radial-gradient(70rem 70rem at 12% 10%, #1a1a1a 0%, var(--black) 65%),\n             linear-gradient(180deg,var(--black) 0%, #0e0e0e 100%);\n  color:var(--white); padding:24px; border-radius:16px;\n  box-shadow:0 8px 30px rgba(0,0,0,.35);\n  font-family:system-ui,-apple-system,Segoe UI,Roboto,Inter,Arial,sans-serif;\n}\n.mm-title{color:var(--orange);margin:0 0 10px;font-size:1.3rem;font-weight:800;}\n.mm-sub{margin:0 0 18px;color:var(--muted);font-size:.95rem;}\n.mm-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;}\n@media(max-width:760px){.mm-grid{grid-template-columns:1fr;}}\n.mm-col{background:linear-gradient(160deg,var(--black2),#0f0f0f);\n        border:1px solid rgba(255,255,255,.1);\n        border-radius:12px;padding:16px;}\n.mm-heading{color:var(--orange);margin:0 0 10px;font-weight:700;font-size:1rem;}\n.mm-list{display:grid;gap:10px;}\n.mm-item{\n  background:#111;border:1px solid rgba(255,255,255,.1);color:#fff;\n  border-radius:10px;padding:10px;font-weight:700;cursor:pointer;\n  text-align:left;transition:.2s all;display:flex;align-items:center;gap:8px;\n}\n.mm-item:hover{background:#181818;}\n.mm-item.selected{background:rgba(255,106,0,.15);border-color:var(--orange);}\n.mm-item.correct{background:rgba(0,255,0,.2);border-color:lime;}\n.mm-item.wrong{background:rgba(255,0,0,.2);border-color:red;}\n.mm-actions{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap;}\n.mm-btn{background:var(--orange);color:#000;border:none;border-radius:10px;\n        padding:10px 16px;font-weight:800;cursor:pointer;}\n.mm-btn:hover{filter:brightness(1.05);}\n.mm-btn-ghost{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.25);}\n.mm-result{margin-top:18px;padding:12px;border:1px solid rgba(255,255,255,.08);\n           border-radius:10px;min-height:40px;}\n<\/style>\n\n<script>\n(function(){\n  const wrap=document.getElementById('matchmaker');\n  if(!wrap) return;\n\n  const roles=[...wrap.querySelectorAll('.role')];\n  const channels=[...wrap.querySelectorAll('.channel')];\n  const result=wrap.querySelector('#mm-result');\n  const checkBtn=wrap.querySelector('#mm-check');\n  const resetBtn=wrap.querySelector('#mm-reset');\n  let selectedRole=null;\n  const matches={}; \/\/ user selections\n\n  const correctMap={\n    \"Developer\":\"GitHub\",\n    \"Designer\":\"Behance\",\n    \"Sales Executive\":\"LinkedIn\",\n    \"Intern\":\"Campus Fairs\"\n  };\n\n  roles.forEach(btn=>{\n    btn.addEventListener('click',()=>{\n      roles.forEach(b=>b.classList.remove('selected'));\n      selectedRole=btn.dataset.role;\n      btn.classList.add('selected');\n    });\n  });\n\n  channels.forEach(btn=>{\n    btn.addEventListener('click',()=>{\n      if(!selectedRole){\n        result.textContent=\"Select a role first!\";\n        result.style.color=\"var(--orange)\";\n        return;\n      }\n      matches[selectedRole]=btn.dataset.channel;\n      btn.classList.add('selected');\n      setTimeout(()=>btn.classList.remove('selected'),400);\n      const roleBtn=roles.find(r=>r.dataset.role===selectedRole);\n      if(roleBtn) roleBtn.classList.remove('selected');\n      selectedRole=null;\n      result.textContent=\"\";\n    });\n  });\n\n  checkBtn.addEventListener('click',()=>{\n    let score=0;\n    Object.entries(correctMap).forEach(([role,chan])=>{\n      const chosen=matches[role];\n      const roleBtn=roles.find(r=>r.dataset.role===role);\n      if(!chosen){ roleBtn.classList.add('wrong'); return; }\n      const channelBtn=channels.find(c=>c.dataset.channel===chosen);\n      roleBtn.classList.remove('wrong','correct');\n      channelBtn.classList.remove('wrong','correct');\n      if(chosen===chan){\n        roleBtn.classList.add('correct'); channelBtn.classList.add('correct'); score++;\n      } else {\n        roleBtn.classList.add('wrong'); channelBtn.classList.add('wrong');\n      }\n    });\n    result.style.color=\"var(--white)\";\n    result.innerHTML=`You matched <strong>${score}<\/strong> out of 4 roles correctly.`;\n  });\n\n  resetBtn.addEventListener('click',()=>{\n    roles.concat(channels).forEach(b=>b.classList.remove('selected','correct','wrong'));\n    Object.keys(matches).forEach(k=>delete matches[k]);\n    selectedRole=null;\n    result.textContent=\"\";\n  });\n})();\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How to Measure Channel Effectiveness<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"500\" src=\"https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142748\/image-61.jpeg\" alt=\"\" class=\"wp-image-7068\" srcset=\"https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142748\/image-61.jpeg 1000w, https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142748\/image-61-300x150.jpeg 300w, https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/16142748\/image-61-768x384.jpeg 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/figure>\n\n\n\n<p>You can\u2019t know what\u2019s working unless you measure. Here are the key metrics and how to use them:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Key Metrics to Track<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Source of Hire (SoH)<\/strong><\/h4>\n\n\n\n<p>Which channel produced your successful hires? If 40% of your hires came from referrals, that\u2019s telling.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Sourcing Channel Effectiveness<\/strong><\/h4>\n\n\n\n<p>How many candidates and hires came through each channel relative to inputs (costs, impressions)?<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Sourcing Channel Cost\/Cost per Hire<\/strong><\/h4>\n\n\n\n<p>Total spend on a channel divided by how many hires it produced. For example, if you spend $1,000 on paid job postings and get 5 hires, that\u2019s $200 per hire from that channel.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Time to Fill\/Time to Hire<\/strong><\/h4>\n\n\n\n<p>How long does it take a candidate from first contact to offer acceptance (or job acceptance)? Channels that shorten this time are more effective.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Quality of Hire &amp; Retention Rates<\/strong><\/h4>\n\n\n\n<p>It\u2019s not enough to generate hires. You must see how well they perform and stay. If hires from Channel A perform worse than those from Channel B, that matters.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Conversion Rates<\/strong><\/h4>\n\n\n\n<p>At each stage (views \u2192 applications \u2192 interviews \u2192 offers \u2192 acceptances), see which channels lose more candidates. That tells you where the leak is.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Setting up tracking<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use your ATS (applicant tracking system) or CRM to label candidate entries by channel (e.g. \u201csource = LinkedIn\u201d, \u201csource = referral\u201d).<br><\/li>\n\n\n\n<li>Use analytics on your careers site to see referral traffic sources (Google Analytics, UTM tags).<br><\/li>\n\n\n\n<li>Monthly or quarterly, aggregate data: number of candidates from each channel, hires, cost, time, outcomes.<br><\/li>\n\n\n\n<li>Clean out noise: if a channel brings many low-quality candidates, that high volume may be misleading.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>What to do with insights<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Drop or reduce spend on channels that cost a lot and yield little.<br><\/li>\n\n\n\n<li>Reinvest in channels with strong quality of hire, low cost or fast time to hire.<br><\/li>\n\n\n\n<li>Maintain a \u201ctesting channel\u201d in each cycle to explore new sources (emerging candidate sourcing platforms, new social networks).<br><\/li>\n\n\n\n<li>Use benchmarking: compare your channel metrics against industry norms so you know whether to push harder or pivot.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Effective Candidate Sourcing for Better Talent Assessment<\/strong><\/h3>\n\n\n\n<p>Strong sourcing fuels accurate talent assessment. The better your sources, the better your shortlist and the clearer your talent insights. When you bring candidates from focused, high-quality channels, your assessment tools can do their job without noise.<\/p>\n\n\n\n<p>Pair structured sourcing with skill-based evaluation. For example, if you\u2019re hiring data analysts, pull candidates from niche platforms like Kaggle or specialized LinkedIn groups. Then assess them through data challenges or project-based tasks.<\/p>\n\n\n\n<p>By aligning sourcing with assessment, recruiters spend less time filtering and more time validating. The result is fewer mismatches, faster shortlists, and stronger hires backed by data, not guesswork.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Effective Candidate Screening with Vettio\u2019s Tools<\/strong><\/h3>\n\n\n\n<p>Vettio makes candidate screening simple, fast and fair. Its AI reads between the lines of resumes, highlighting skills and experiences that match your job requirements not just keywords.<\/p>\n\n\n\n<p>You can filter applicants by performance indicators, engagement history, or even cultural compatibility. That means no more endless manual sorting or bias creeping in.<\/p>\n\n\n\n<p>For teams scaling fast, Vettio\u2019s automation keeps personalization intact. Candidates receive timely updates, while recruiters see analytics that reveal which sourcing channels bring the strongest fits. It\u2019s candidate screening made smart, measurable, and human.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusion<\/strong><\/h2>\n\n\n\n<p>Choosing the right candidate sourcing channels is not about chasing every shiny platform. It\u2019s about matching your role, budget and timeline to channels where your ideal candidates already spend time. Then, measure results rigorously and shift resources toward what works.<\/p>\n\n\n\n<p>With the right mix, you reduce cost per hire, improve hire quality and build a sustainable pipeline. Keep testing, stay data-driven and iterate. That\u2019s how you build sourcing that scales.<\/p>\n\n\n\n<!-- FAQs Accordion | WordPress-ready | Black\u2013Orange\u2013White -->\n<div id=\"faqs-block\" class=\"faq-wrap\" aria-labelledby=\"faq-title\">\n  <h3 id=\"faq-title\" class=\"faq-title\">FAQs<\/h3>\n\n  <!-- Controls -->\n  <div class=\"faq-controls\" role=\"group\" aria-label=\"FAQ controls\">\n    <input id=\"faq-search\" class=\"faq-search\" type=\"search\" placeholder=\"Search FAQs\">\n    <button type=\"button\" id=\"faq-expand\" class=\"faq-btn\">Expand all<\/button>\n    <button type=\"button\" id=\"faq-collapse\" class=\"faq-btn faq-btn-ghost\">Collapse all<\/button>\n  <\/div>\n\n  <!-- Accordion -->\n  <div class=\"faq-accordion\">\n    <!-- Q1 -->\n    <details class=\"faq-item\" data-tags=\"how many channels number count mix\">\n      <summary class=\"faq-q\">\n        <span class=\"faq-q-text\">How many candidate sourcing channels should a recruiter use at once?<\/span>\n        <span class=\"faq-icon\" aria-hidden=\"true\">+<\/span>\n      <\/summary>\n      <div class=\"faq-a\">\n        There\u2019s no fixed number. A good rule is to start with 3\u20135: one broad like a major job board, one niche that is industry or role specific, one internal or referral and possibly one outbound. Then prune or expand based on what your data shows.\n      <\/div>\n    <\/details>\n\n    <!-- Q2 -->\n    <details class=\"faq-item\" data-tags=\"offline channels events fairs local\">\n      <summary class=\"faq-q\">\n        <span class=\"faq-q-text\">Are offline sourcing channels still relevant in a digital-first world?<\/span>\n        <span class=\"faq-icon\" aria-hidden=\"true\">+<\/span>\n      <\/summary>\n      <div class=\"faq-a\">\n        Yes, especially for local, non tech or underserved markets. Events, career fairs, local ads and networking can bring strong candidates in many regions.\n      <\/div>\n    <\/details>\n\n    <!-- Q3 -->\n    <details class=\"faq-item\" data-tags=\"industry specific tech healthcare education\">\n      <summary class=\"faq-q\">\n        <span class=\"faq-q-text\">Do different industries need different sourcing channels?<\/span>\n        <span class=\"faq-icon\" aria-hidden=\"true\">+<\/span>\n      <\/summary>\n      <div class=\"faq-a\">\n        Absolutely. Tech roles may use GitHub forums, niche coding communities or hackathons. Healthcare or education may respond to professional associations, local boards or industry events. Always tailor per industry.\n      <\/div>\n    <\/details>\n\n    <!-- Q4 -->\n    <details class=\"faq-item\" data-tags=\"paid vs free cost roi budget referrals social internal\">\n      <summary class=\"faq-q\">\n        <span class=\"faq-q-text\">Are paid sourcing channels worth the investment compared to free ones?<\/span>\n        <span class=\"faq-icon\" aria-hidden=\"true\">+<\/span>\n      <\/summary>\n      <div class=\"faq-a\">\n        They can be if they yield results. Paid channels can speed up hiring or reach niche talent faster. If your free candidate sources like referrals, internal database and organic social are already delivering then weigh carefully before spending.\n      <\/div>\n    <\/details>\n\n    <!-- NEW Q5 -->\n    <details class=\"faq-item\" data-tags=\"diversify mix job boards social referrals alumni niche broaden\">\n      <summary class=\"faq-q\">\n        <span class=\"faq-q-text\">How can recruiters diversify their sourcing channels to reach a broader talent pool?<\/span>\n        <span class=\"faq-icon\" aria-hidden=\"true\">+<\/span>\n      <\/summary>\n      <div class=\"faq-a\">\n        Don\u2019t rely on one platform. Mix job boards with social media, employee referrals, niche communities, and alumni networks. Each attracts a different kind of candidate. Test new channels every quarter, see where quality hires come from, and rotate underperforming ones out of your mix.\n      <\/div>\n    <\/details>\n\n    <!-- NEW Q6 -->\n    <details class=\"faq-item\" data-tags=\"sourcing vs recruiting difference pipeline interviews hiring process\">\n      <summary class=\"faq-q\">\n        <span class=\"faq-q-text\">What are the key differences between sourcing and recruiting, and why does it matter?<\/span>\n        <span class=\"faq-icon\" aria-hidden=\"true\">+<\/span>\n      <\/summary>\n      <div class=\"faq-a\">\n        Sourcing is about finding and engaging potential candidates before the interview stage. Recruiting starts after sourcing. It\u2019s where you assess, interview and hire. Mixing them up wastes time. Clear separation helps you build a steady pipeline while keeping active hiring smooth.\n      <\/div>\n    <\/details>\n\n    <!-- NEW Q7 -->\n    <details class=\"faq-item\" data-tags=\"ats rediscover past applicants re-engage database\">\n      <summary class=\"faq-q\">\n        <span class=\"faq-q-text\">How can recruiters tap into their existing ATS to rediscover overlooked candidates?<\/span>\n        <span class=\"faq-icon\" aria-hidden=\"true\">+<\/span>\n      <\/summary>\n      <div class=\"faq-a\">\n        Most ATS platforms are gold mines of past applicants. Filter by skill, experience, and previous feedback. Many candidates who weren\u2019t a fit months ago might be perfect now. Tag and re-engage them with a friendly message or new opportunity. It saves both time and money.\n      <\/div>\n    <\/details>\n\n    <!-- NEW Q8 -->\n    <details class=\"faq-item\" data-tags=\"passive candidates outreach linkedin github dribbble slack forums\">\n      <summary class=\"faq-q\">\n        <span class=\"faq-q-text\">How do I identify and approach passive candidates who may not be actively job searching?<\/span>\n        <span class=\"faq-icon\" aria-hidden=\"true\">+<\/span>\n      <\/summary>\n      <div class=\"faq-a\">\n        Look where they spend time such as industry forums, LinkedIn posts, GitHub, Dribbble, or even niche Slack groups. When you message them, skip the sales tone. Mention something specific about their work or achievements. The goal is to start a conversation, not close a deal.\n      <\/div>\n    <\/details>\n\n    <!-- NEW Q9 -->\n    <details class=\"faq-item\" data-tags=\"offline methods campus fairs networking meetups local manufacturing healthcare\">\n      <summary class=\"faq-q\">\n        <span class=\"faq-q-text\">What are some offline recruitment methods that still work well for sourcing candidates?<\/span>\n        <span class=\"faq-icon\" aria-hidden=\"true\">+<\/span>\n      <\/summary>\n      <div class=\"faq-a\">\n        Campus drives, job fairs, local networking events and professional meetups still work. For certain industries like manufacturing or healthcare, these face-to-face interactions often bring stronger leads than online ads. Offline sourcing also builds brand trust in local markets.\n      <\/div>\n    <\/details>\n\n    <!-- NEW Q10 -->\n    <details class=\"faq-item\" data-tags=\"boolean search synonyms titles alternate keywords certifications hidden talent\">\n      <summary class=\"faq-q\">\n        <span class=\"faq-q-text\">How can recruiters expand their search terms to uncover hidden talent?<\/span>\n        <span class=\"faq-icon\" aria-hidden=\"true\">+<\/span>\n      <\/summary>\n      <div class=\"faq-a\">\n        Use Boolean search and synonyms. For instance, search for \u201cmarketing specialist\u201d but also try \u201cgrowth manager\u201d or \u201cbrand strategist.\u201d Add variations in tools and certifications. Hidden talent often hides behind alternate titles, so think like a candidate not just a recruiter.\n      <\/div>\n    <\/details>\n\n    <!-- NEW Q11 -->\n    <details class=\"faq-item\" data-tags=\"affordable free tools linkedin groups alumni slack discord google operators\">\n      <summary class=\"faq-q\">\n        <span class=\"faq-q-text\">What are some affordable alternatives to paid sourcing tools for small recruiting teams?<\/span>\n        <span class=\"faq-icon\" aria-hidden=\"true\">+<\/span>\n      <\/summary>\n      <div class=\"faq-a\">\n        Free LinkedIn search filters, social media groups, alumni networks, job boards like Indeed or Glassdoor, and niche Slack or Discord communities are great starts. Use Google\u2019s advanced search operators to scan portfolios or resumes online without paying for premium tools.\n      <\/div>\n    <\/details>\n\n    <!-- NEW Q12 -->\n    <details class=\"faq-item\" data-tags=\"talent pool tracking crm spreadsheet tagging reminders vettio automation\">\n      <summary class=\"faq-q\">\n        <span class=\"faq-q-text\">How do I keep track of sourced candidates and manage my talent pool efficiently?<\/span>\n        <span class=\"faq-icon\" aria-hidden=\"true\">+<\/span>\n      <\/summary>\n      <div class=\"faq-a\">\n        Use your ATS or a simple CRM-style spreadsheet. Label candidates by skill, location, and sourcing channel. Set reminders to follow up or recheck availability every few months. If your team uses automation tools like Vettio, the platform can handle tracking, tagging, and updates automatically.\n      <\/div>\n    <\/details>\n  <\/div>\n<\/div>\n\n<style>\n\/* ===== FAQ block \u2014 scoped theme ===== *\/\n.faq-wrap{\n  --black:#0b0b0b; --black2:#121212; --white:#ffffff; --orange:#ff6a00; --muted:#b7b7b7;\n  max-width:100%;\n  width:100%;\n  background:\n    radial-gradient(70rem 70rem at 12% 10%, #1a1a1a 0%, var(--black) 65%),\n    linear-gradient(180deg, var(--black) 0%, #0e0e0e 100%);\n  color:var(--white);\n  padding:20px;\n  border-radius:16px;\n  box-shadow:0 8px 30px rgba(0,0,0,.35);\n  font-family:system-ui,-apple-system,Segoe UI,Roboto,Inter,Arial,sans-serif;\n}\n\n.faq-title{\n  margin:0 0 10px;\n  color:var(--orange);\n  font-size:1.25rem;\n  line-height:1.2;\n  letter-spacing:.2px;\n}\n\n.faq-controls{\n  display:flex;\n  gap:10px;\n  flex-wrap:wrap;\n  align-items:center;\n  margin-bottom:12px;\n}\n.faq-search{\n  flex:1 1 260px;\n  min-width:220px;\n  background:#0f0f0f;\n  color:#fff;\n  border:1px solid rgba(255,255,255,.2);\n  border-radius:10px;\n  padding:10px 12px;\n  font-weight:600;\n}\n.faq-btn{\n  background:var(--orange);\n  color:#000;\n  border:none;\n  border-radius:10px;\n  padding:10px 14px;\n  font-weight:800;\n  cursor:pointer;\n}\n.faq-btn:hover{ filter:brightness(1.05); }\n.faq-btn-ghost{\n  background:transparent;\n  color:#fff;\n  border:1px solid rgba(255,255,255,.25);\n}\n\n.faq-accordion{\n  display:grid;\n  gap:10px;\n}\n\n.faq-item{\n  background:linear-gradient(160deg, var(--black2), #0f0f0f);\n  border:1px solid rgba(255,255,255,.10);\n  border-radius:12px;\n  overflow:hidden;\n}\n\n.faq-q{\n  list-style:none;\n  cursor:pointer;\n  display:flex;\n  justify-content:space-between;\n  align-items:center;\n  gap:10px;\n  padding:14px;\n  font-weight:800;\n  color:#fff;\n  outline:none;\n}\n.faq-q::-webkit-details-marker{ display:none; } \/* hide default marker *\/\n\n.faq-icon{\n  display:inline-grid;\n  place-items:center;\n  width:28px;\n  height:28px;\n  border-radius:8px;\n  background:rgba(255,106,0,.15);\n  color:#fff;\n  border:1px solid rgba(255,106,0,.35);\n  font-weight:900;\n  transition:transform .2s ease;\n}\n.faq-item[open] .faq-icon{ transform:rotate(45deg); } \/* + turns to \u00d7 *\/\n\n.faq-a{\n  padding:0 14px 14px 14px;\n  color:#e9e9e9;\n  line-height:1.55;\n}\n.faq-a p{ margin:0; }\n\n@media (prefers-reduced-motion: no-preference){\n  .faq-item .faq-a{ animation:faq-fade .18s ease; }\n  @keyframes faq-fade{\n    from{ opacity:0; transform:translateY(-2px); }\n    to{ opacity:1; transform:translateY(0); }\n  }\n}\n<\/style>\n\n<script>\n(function(){\n  const root = document.getElementById('faqs-block');\n  if(!root) return;\n\n  const search = root.querySelector('#faq-search');\n  const expand = root.querySelector('#faq-expand');\n  const collapse = root.querySelector('#faq-collapse');\n  const items = Array.from(root.querySelectorAll('.faq-item'));\n\n  \/\/ Expand all\n  expand.addEventListener('click', () => { items.forEach(d => d.setAttribute('open','')); });\n\n  \/\/ Collapse all\n  collapse.addEventListener('click', () => { items.forEach(d => d.removeAttribute('open')); });\n\n  \/\/ Search filter\n  function normalize(t){ return (t||'').toLowerCase().trim(); }\n  search.addEventListener('input', () => {\n    const q = normalize(search.value);\n    items.forEach(d => {\n      const qText = d.querySelector('.faq-q-text').textContent || '';\n      const aText = d.querySelector('.faq-a').textContent || '';\n      const tags = d.dataset.tags || '';\n      const hit = normalize(qText + ' ' + aText + ' ' + tags).includes(q);\n      d.style.display = hit ? '' : 'none';\n    });\n  });\n\n  \/\/ Keyboard toggle support on summary\n  items.forEach(d => {\n    const s = d.querySelector('summary');\n    s.addEventListener('keydown', e => {\n      if(e.key === 'Enter' || e.key === ' '){\n        e.preventDefault();\n        d.open = !d.open;\n      }\n    });\n  });\n})();\n<\/script>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-buttons text-center is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-1 wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-text-align-center wp-element-button\" href=\"https:\/\/vettio.com\" target=\"_blank\" rel=\"noreferrer noopener\"><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong><strong>Your Next Star Hire? Vettio&#8217;s Got It.<\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/strong><\/a><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Learn how to pick the best candidate sourcing channels for each role, improve hire quality and reduce costs with a data-driven approach.<\/p>\n","protected":false},"author":5,"featured_media":7109,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kadence_starter_templates_imported_post":false,"footnotes":""},"categories":[14],"tags":[72],"class_list":["post-7058","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-recruitment-guides","tag-talent-sourcing"],"taxonomy_info":{"category":[{"value":14,"label":"Recruitment Guides"}],"post_tag":[{"value":72,"label":"Talent Sourcing"}]},"featured_image_src_large":["https:\/\/snabup-prod.s3.amazonaws.com\/blog\/wp-content\/uploads\/2025\/10\/20094456\/How-to-Choose-the-Right-Candidate-Sourcing-Channels-for-Your-Roles.jpg",800,400,false],"author_info":{"display_name":"Bisma Naeem","author_link":"https:\/\/vettio.com\/blog\/author\/bisma-naeem\/"},"comment_info":5,"category_info":[{"term_id":14,"name":"Recruitment Guides","slug":"recruitment-guides","term_group":0,"term_taxonomy_id":14,"taxonomy":"category","description":"","parent":83,"count":81,"filter":"raw","cat_ID":14,"category_count":81,"category_description":"","cat_name":"Recruitment Guides","category_nicename":"recruitment-guides","category_parent":83}],"tag_info":[{"term_id":72,"name":"Talent Sourcing","slug":"talent-sourcing","term_group":0,"term_taxonomy_id":72,"taxonomy":"post_tag","description":"","parent":0,"count":5,"filter":"raw"}],"_links":{"self":[{"href":"https:\/\/vettio.com\/blog\/wp-json\/wp\/v2\/posts\/7058","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vettio.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vettio.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vettio.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/vettio.com\/blog\/wp-json\/wp\/v2\/comments?post=7058"}],"version-history":[{"count":16,"href":"https:\/\/vettio.com\/blog\/wp-json\/wp\/v2\/posts\/7058\/revisions"}],"predecessor-version":[{"id":7522,"href":"https:\/\/vettio.com\/blog\/wp-json\/wp\/v2\/posts\/7058\/revisions\/7522"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vettio.com\/blog\/wp-json\/wp\/v2\/media\/7109"}],"wp:attachment":[{"href":"https:\/\/vettio.com\/blog\/wp-json\/wp\/v2\/media?parent=7058"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vettio.com\/blog\/wp-json\/wp\/v2\/categories?post=7058"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vettio.com\/blog\/wp-json\/wp\/v2\/tags?post=7058"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}