{"id":30420,"date":"2026-09-21T16:45:41","date_gmt":"2026-09-21T11:15:41","guid":{"rendered":"https:\/\/internshala.com\/blog\/?p=30420"},"modified":"2026-10-13T16:26:11","modified_gmt":"2026-10-13T10:56:11","slug":"employer-computer-operator-job-description","status":"publish","type":"post","link":"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/","title":{"rendered":"Computer Operator Job Description: Customisable Template"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"427\" src=\"https:\/\/internshala.com\/blog\/wp-content\/uploads\/2026\/09\/Computer-Operator-Job-Description-1024x427.jpg\" alt=\"computer operator job duties\" class=\"wp-image-30421\" srcset=\"https:\/\/internshala.com\/blog\/wp-content\/uploads\/2026\/09\/Computer-Operator-Job-Description-1024x427.jpg 1024w, https:\/\/internshala.com\/blog\/wp-content\/uploads\/2026\/09\/Computer-Operator-Job-Description-672x280.jpg 672w, https:\/\/internshala.com\/blog\/wp-content\/uploads\/2026\/09\/Computer-Operator-Job-Description.jpg 1200w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-pale-cyan-blue-background-color has-background\"><tbody><tr><td><strong>Summary: <\/strong>A clear computer operator JD can reduce unsuitable applications by defining the required technical skills, experience, work conditions, and responsibilities. Include the essential components and structure the job description articulately to attract suitable job applications.&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>A computer operator job description should tell candidates exactly what they will be responsible for, which systems or software they will use, and what qualifications and skills they need. A clear JD can also help employers attract relevant candidates and reduce unsuitable applications.<\/p>\n\n\n\n<p>Computer operators may handle data entry, system monitoring, digital records, routine computer operations, report generation, and basic troubleshooting. Their responsibilities can vary depending on the organization, industry, and systems they use.&nbsp;<\/p>\n\n\n\n<p>This guide covers the key elements of a computer operator JD, along with an editable template, sample job description, and common mistakes to avoid.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_86 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title ez-toc-toggle\" style=\"cursor:pointer\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#Who_Is_a_Computer_Operator\" >Who Is a Computer Operator?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#Computer_Operator_Job_Description_Template\" >Computer Operator Job Description Template<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#Sample_Computer_Operator_Job_Description\" >Sample Computer Operator Job Description<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#Computer_Operator_Job_Description_Essential_Components\" >Computer Operator Job Description: Essential Components<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#Common_Mistakes_to_Avoid_When_Drafting_a_JD_for_Computer_Operator\" >Common Mistakes to Avoid When Drafting a JD for Computer Operator<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#Conclusion\" >Conclusion<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#FAQs\" >FAQs<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Who_Is_a_Computer_Operator\"><\/span>Who Is a Computer Operator?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>A computer operator manages routine computer-based operations and helps ensure that systems, data, and related tasks are handled accurately and on time. Depending on the organization, the computer operator job responsibilities may involve:<\/p>\n\n\n\n<ul>\n<li>Entering, updating, and processing data<\/li>\n\n\n\n<li>Maintaining digital records and databases<\/li>\n\n\n\n<li>Monitoring computer systems and routine processes<\/li>\n\n\n\n<li>Generating reports<\/li>\n\n\n\n<li>Performing basic troubleshooting<\/li>\n\n\n\n<li>Managing files and system records<\/li>\n\n\n\n<li>Following data security and access procedures<\/li>\n\n\n\n<li>Escalating technical issues to the IT team<\/li>\n<\/ul>\n\n\n\n<p>The role can differ significantly between organizations. Therefore, employers should list specific day-to-day responsibilities and the systems used, rather than relying on a generic list of computer operator duties.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Computer_Operator_Job_Description_Template\"><\/span>Computer Operator Job Description Template<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>A computer operator job description template makes it easier to structure the role consistently and include the information candidates need before applying. The template below covers the company overview, job title, job overview, computer operator job duties and responsibilities, qualifications, technical and soft skills, salary and benefits, and application process. You can adapt the following template based on your organization\u2019s systems, work environment, and hiring needs.<\/p>\n\n\n\n<!-- Job Description Template Builder: paste this whole file into a WordPress \"Custom HTML\" block.\n     data-role=\"auto\" picks the role from the post's URL or title (e.g. \/python-developer-job-description\/ loads Python Developer).\n     To force a role, replace \"auto\" with one of: software-developer, python-developer, front-end-developer, back-end-developer,\n     full-stack-developer, java-developer, android-developer, web-developer, data-analyst, data-scientist, ai-ml-engineer,\n     mis-executive, ui-ux-designer, graphic-designer, digital-marketing-executive, seo-executive, content-writer, hr-executive,\n     hr-intern, sales-executive, business-development-executive, customer-support-executive, telecaller, data-entry-operator,\n     back-office-executive, computer-operator, accountant, blank\n     data-design sets the template style a post opens with: classic, modern (Bold header), simple or sidebar.\n     data-cta-url is where the \"Post this job\" link goes. The builder adds tracking tags to it automatically:\n     utm_source=is_blog, utm_medium=jd_builder, utm_campaign=(the post's URL slug), utm_content=(the role). Tags you put in the URL yourself are kept.\n     data-gate=\"form\" asks for name, work email, mobile and company before a download and sends them to data-lead-url (a Google\n       Apps Script web app that adds a row to a Google Sheet). data-gate=\"signup\" asks visitors to create an Internshala\n       account instead. data-gate=\"off\" lets anyone download.\n       Employers already signed in to the site download straight away. To tell, the builder loads data-login-check\n       (default \/employer\/dashboard) in the background: signed-out visitors get a login form there. Others see the sign-up box;\n       sign-up opens in a small window, which closes and the download starts once the site confirms the sign-in.\n       Optional settings, added the same way as data-gate: data-google-url, data-login-url (sign-up and log-in addresses),\n       data-login-cookie (name of a cookie that only signed-in users have), data-gate-fallback=\"off\" (hides the \"I've signed in\"\n       button). Add ?jdgate=reset to a post's address to be asked again.\n     Analytics events sent to GA4 or Tag Manager when present: jd_builder_view, jd_builder_edit, jd_builder_role_change,\n     jd_builder_design_change, jd_builder_download, jd_builder_cta_click,\n     jd_builder_gate_open, jd_builder_signup_click, jd_builder_signup_complete, jd_builder_gate_close,\n     jd_builder_already_signed_in, jd_builder_lead_submit -->\n<div id=\"cwjd\" class=\"cwjd\" data-role=\"auto\" data-design=\"classic\" data-gate=\"form\" data-lead-url=\"https:\/\/script.google.com\/macros\/s\/AKfycbz-qprMw0zQmyDBBI7huZ9pGWNbDa8DAlea1nEmt7fvOmcPsY8vySLYyf1tyU4xWsIt3w\/exec\" data-cta-url=\"https:\/\/internshala.com\/hire-talent\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=DM+Sans:wght@400;500;700&#038;family=Fraunces:opsz,wght@9..144,500;9..144,700&#038;display=swap\">\n<style>\n#cwjd,#cwjd *{box-sizing:border-box}\n#cwjd{--ui-ink:#1d1d1b;--ui-muted:#5c5a54;--ui-line:#d9d5cb;--ui-bg:#ffffff;--ui-soft:#f6f4ef;--ui-accent:#0f5e5a;color:var(--ui-ink);font-size:16px;line-height:1.45;text-align:left;margin:32px 0;max-width:none}\n#cwjd .cwjd-app{display:grid;grid-template-columns:1fr;gap:28px;align-items:start}\n#cwjd.cwjd-wide .cwjd-app{grid-template-columns:minmax(290px,360px) minmax(0,1fr);gap:24px}\n#cwjd .cwjd-previewcol{min-width:0}\n#cwjd .cwjd-app{position:relative}\n#cwjd.cwjd-wide.cwjd-sticky:not(.cwjd-expanded) .cwjd-previewcol{position:sticky;top:var(--cwjd-top,16px)}\n#cwjd.cwjd-wide:not(.cwjd-expanded) .cwjd-actions{gap:8px;margin-bottom:10px}\n#cwjd.cwjd-wide:not(.cwjd-expanded) .cwjd-actions .cwjd-btn{min-height:40px;padding:8px 14px;font-size:14px;gap:6px}\n#cwjd.cwjd-wide:not(.cwjd-expanded) .cwjd-actions .cwjd-btn svg{width:16px;height:16px}\n#cwjd.cwjd-wide:not(.cwjd-expanded) .cwjd-status{min-height:0;margin-bottom:8px}\n#cwjd.cwjd-wide:not(.cwjd-expanded) .cwjd-status:empty{display:none}\n#cwjd .cwjd-stage{cursor:zoom-in}\n#cwjd.cwjd-expanded .cwjd-previewcol{position:fixed;top:0;left:0;right:0;bottom:0;z-index:2147483000;background:rgba(29,29,27,.88);overflow:auto;padding:20px 16px 40px 16px;transform:none !important}\n#cwjd.cwjd-expanded .cwjd-actions{justify-content:center}\n#cwjd.cwjd-expanded .cwjd-status{text-align:center;color:#ffffff}\n#cwjd.cwjd-expanded .cwjd-btn,#cwjd.cwjd-expanded .cwjd-btn-primary{background:#ffffff;color:#1d1d1b;border-color:#ffffff}\n#cwjd.cwjd-expanded .cwjd-btn:hover{background:#e9e6df}\n#cwjd.cwjd-expanded .cwjd-stage{cursor:default}\n#cwjd .cwjd-form{background:var(--ui-bg);border:1px solid var(--ui-line);border-radius:14px;padding:22px;display:flex;flex-direction:column;gap:22px}\n#cwjd .cwjd-formtitle{font-size:20px;font-weight:700;margin:0 0 4px 0;line-height:1.25}\n#cwjd .cwjd-hint{font-size:14px;color:var(--ui-muted);margin:0}\n#cwjd .cwjd-jump{display:inline-block;margin-top:10px;font-size:14px;font-weight:600;color:var(--ui-accent);text-decoration:underline}\n#cwjd.cwjd-wide .cwjd-jump{display:none}\n#cwjd .cwjd-group{display:flex;flex-direction:column;gap:12px;padding-top:18px;border-top:1px solid var(--ui-line)}\n#cwjd .cwjd-gtitle{font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ui-muted);margin:0}\n#cwjd .cwjd-field{display:flex;flex-direction:column;gap:5px;margin:0;font-size:14px;font-weight:600;font-style:normal;color:var(--ui-ink)}\n#cwjd label,#cwjd .cwjd-field span,#cwjd .cwjd-field small{font-style:normal}\n#cwjd .cwjd-field small{font-weight:400;color:var(--ui-muted);font-size:13px}\n#cwjd .cwjd-field input[type=text],#cwjd .cwjd-field textarea,#cwjd .cwjd-field select{width:100%;max-width:none;margin:0;padding:10px 12px;border:1px solid #bdb8ab;border-radius:8px;background:#fff;color:var(--ui-ink);font:inherit;font-weight:400;font-size:15px;line-height:1.45;box-shadow:none;height:auto;min-height:44px}\n#cwjd .cwjd-field textarea{resize:vertical;min-height:96px}\n#cwjd .cwjd-field textarea.cwjd-tall{min-height:190px}\n#cwjd .cwjd-field input:focus,#cwjd .cwjd-field textarea:focus,#cwjd .cwjd-field select:focus{outline:2px solid var(--ui-accent);outline-offset:1px;border-color:var(--ui-accent)}\n#cwjd .cwjd-swatches{display:flex;flex-wrap:wrap;gap:8px;align-items:center}\n#cwjd .cwjd-swatch{width:36px;height:36px;min-height:0;padding:0;margin:0;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--ui-line);cursor:pointer}\n#cwjd .cwjd-swatch[aria-pressed=true]{box-shadow:0 0 0 2px var(--ui-ink)}\n#cwjd .cwjd-colorwrap{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600}\n#cwjd .cwjd-colorwrap input[type=color]{width:44px;height:36px;padding:0;margin:0;border:1px solid #bdb8ab;border-radius:8px;background:#fff;cursor:pointer}\n#cwjd .cwjd-logorow{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-weight:400}\n#cwjd .cwjd-logorow input[type=file]{font:inherit;font-size:14px;font-weight:400;width:auto;max-width:100%;height:auto;margin:0;padding:6px 0;border:0;background:none;box-shadow:none}\n#cwjd .cwjd-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;margin:0;padding:10px 18px;border-radius:999px;border:1.5px solid var(--ui-ink);background:#fff;color:var(--ui-ink);font:inherit;font-size:15px;font-weight:700;line-height:1.2;text-transform:none;letter-spacing:0;cursor:pointer;box-shadow:none;text-decoration:none}\n#cwjd .cwjd-btn:hover{background:var(--ui-soft)}\n#cwjd .cwjd-btn-primary{background:var(--ui-ink);color:#fff}\n#cwjd .cwjd-btn-primary:hover{background:#3a3a36}\n#cwjd .cwjd-btn-small{min-height:36px;padding:6px 14px;font-size:14px}\n#cwjd .cwjd-btn:disabled{opacity:.55;cursor:wait}\n#cwjd .cwjd-btn svg{width:18px;height:18px;flex:none}\n#cwjd .cwjd-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;padding:0;margin:-1px}\n#cwjd .cwjd-fmt{display:inline-flex;margin:0;position:relative}\n#cwjd .cwjd-select{min-height:44px;height:auto;width:auto;max-width:100%;margin:0;padding:8px 34px 8px 16px;border:1.5px solid var(--ui-ink);border-radius:999px;background-color:#fff;color:var(--ui-ink);font:inherit;font-size:15px;font-weight:700;line-height:1.2;box-shadow:none;cursor:pointer}\n#cwjd .cwjd-select:focus{outline:2px solid var(--ui-accent);outline-offset:1px}\n#cwjd .cwjd-select:disabled{opacity:.55;cursor:wait}\n#cwjd.cwjd-wide:not(.cwjd-expanded) .cwjd-actions .cwjd-select{min-height:40px;padding:6px 30px 6px 14px;font-size:14px}\n#cwjd.cwjd-expanded .cwjd-select{border-color:#ffffff}\n#cwjd .cwjd-formfoot{display:flex;flex-wrap:wrap;gap:10px;padding-top:18px;border-top:1px solid var(--ui-line)}\n#cwjd .cwjd-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 14px 0}\n#cwjd .cwjd-status{font-size:14px;color:var(--ui-muted);min-height:20px;margin:0 0 10px 0}\n#cwjd .cwjd-status.cwjd-err{color:#a1260d;font-weight:600}\n#cwjd .cwjd-gate{position:fixed;top:0;left:0;right:0;bottom:0;z-index:2147483600;background:rgba(29,29,27,.62);display:flex;align-items:center;justify-content:center;padding:16px;overflow:auto;margin:0}\n#cwjd .cwjd-gate-box{position:relative;width:100%;max-width:420px;box-sizing:border-box;background:#ffffff;color:#1d1d1b;border-radius:16px;padding:32px 28px 24px 28px;box-shadow:0 20px 60px rgba(0,0,0,.3);display:flex;flex-direction:column;gap:12px;text-align:left;font-size:15px;line-height:1.45}\n#cwjd .cwjd-gate-x{position:absolute;top:8px;right:8px;width:44px;height:44px;min-height:0;margin:0;padding:0;border:0;border-radius:50%;background:none;color:#5c5a54;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:none}\n#cwjd .cwjd-gate-x:hover{background:#f1efe9}\n#cwjd .cwjd-gate-x svg{width:20px;height:20px}\n#cwjd .cwjd-gate-title{font-size:22px;font-weight:700;line-height:1.25;margin:0;padding-right:36px;color:#1d1d1b}\n#cwjd .cwjd-gate-sub{margin:0 0 6px 0;font-size:15px;line-height:1.45;color:#4a4944}\n#cwjd .cwjd-gate-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:48px;margin:0;padding:10px 16px;border:1.5px solid #0077c2;border-radius:10px;background:#ffffff;color:#006bb0;font:inherit;font-size:16px;font-weight:700;line-height:1.2;text-transform:none;letter-spacing:0;cursor:pointer;box-shadow:none}\n#cwjd .cwjd-gate-btn:hover{background:#eaf5fc;color:#006bb0}\n#cwjd .cwjd-gate-btn.cwjd-gate-main{background:#0077c2;color:#ffffff}\n#cwjd .cwjd-gate-btn.cwjd-gate-main:hover{background:#006bb0;color:#ffffff}\n#cwjd .cwjd-gate-btn svg{width:20px;height:20px;flex:none}\n#cwjd .cwjd-gate-btn:focus-visible,#cwjd .cwjd-gate-x:focus-visible,#cwjd .cwjd-gate-link:focus-visible{outline:2px solid #1d1d1b;outline-offset:2px}\n#cwjd .cwjd-gate-login,#cwjd .cwjd-gate-terms{margin:0;font-size:14px;line-height:1.45;color:#4a4944}\n#cwjd .cwjd-gate-status{margin:0;font-size:14px;line-height:1.45;font-weight:600;color:#1d1d1b}\n#cwjd .cwjd-gate-status:empty{display:none}\n#cwjd .cwjd-gate-link{display:inline;width:auto;min-height:0;margin:0;padding:0;border:0;border-radius:0;background:none;color:#006bb0;font:inherit;font-weight:700;text-decoration:underline;text-transform:none;letter-spacing:0;cursor:pointer;box-shadow:none}\n#cwjd .cwjd-gate-terms a,#cwjd .cwjd-gate-open{color:#006bb0;text-decoration:underline;font-weight:700}\n#cwjd .cwjd-gate-form{display:flex;flex-direction:column;gap:12px;margin:0}\n#cwjd .cwjd-gate-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}\n#cwjd .cwjd-gate-field{display:flex;flex-direction:column;gap:5px;margin:0;font-size:14px;font-weight:600;font-style:normal;color:#1d1d1b;line-height:1.3}\n#cwjd .cwjd-gate-field input{width:100%;max-width:none;height:auto;min-height:44px;box-sizing:border-box;margin:0;padding:10px 12px;border:1px solid #bdb8ab;border-radius:8px;background:#ffffff;color:#1d1d1b;font:inherit;font-size:15px;font-weight:400;line-height:1.3;box-shadow:none}\n#cwjd .cwjd-gate-field input:focus{outline:2px solid #0077c2;outline-offset:1px;border-color:#0077c2}\n#cwjd .cwjd-gate-field input[aria-invalid=true]{border-color:#a1260d}\n#cwjd .cwjd-gate-tel{display:flex;gap:8px}\n#cwjd .cwjd-gate-cc{flex:none;display:flex;align-items:center;min-height:44px;padding:0 12px;border:1px solid #bdb8ab;border-radius:8px;background:#f6f4ef;font-weight:400;font-size:15px;color:#1d1d1b}\n#cwjd .cwjd-gate-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}\n#cwjd .cwjd-gate-ferr{margin:0;font-size:14px;line-height:1.4;font-weight:600;color:#a1260d}\n#cwjd .cwjd-gate-ferr:empty{display:none}\n#cwjd .cwjd-gate-form .cwjd-gate-btn:disabled{opacity:.6;cursor:wait}\n#cwjd .cwjd-gate-done{display:flex;flex-direction:column;gap:10px;padding-top:12px;border-top:1px solid #d9d5cb}\n#cwjd .cwjd-gate-done .cwjd-btn{width:100%}\n#cwjd .cwjd-cta{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:44px;margin:0 0 12px 0;padding:8px 14px;border:1px solid #b9dcf2;border-radius:10px;background:#eaf5fc;color:#1d1d1b;font-size:14px;line-height:1.35;font-weight:400;text-decoration:none;box-shadow:none}\n#cwjd .cwjd-cta strong{color:#006bb0;font-weight:700}\n#cwjd .cwjd-cta svg{width:18px;height:18px;flex:none;color:#006bb0}\n#cwjd .cwjd-cta:hover{background:#dcedf9;color:#1d1d1b;text-decoration:none}\n#cwjd .cwjd-cta:focus-visible{outline:2px solid #006bb0;outline-offset:2px}\n#cwjd .cwjd-cta.cwjd-cta-hot{background:#0077c2;border-color:#0077c2;color:#ffffff}\n#cwjd .cwjd-cta.cwjd-cta-hot strong,#cwjd .cwjd-cta.cwjd-cta-hot svg{color:#ffffff}\n#cwjd .cwjd-cta.cwjd-cta-hot:hover{background:#006bb0;color:#ffffff}\n#cwjd.cwjd-expanded .cwjd-cta{max-width:560px;margin-left:auto;margin-right:auto}\n#cwjd .cwjd-stage{position:relative;overflow:hidden;margin:0 auto;max-width:100%;border-radius:10px;box-shadow:0 1px 3px rgba(0,0,0,.12),0 8px 28px rgba(0,0,0,.08);background:#f6f4ef}\n#cwjd .cwjd-scale{position:absolute;top:0;left:0;width:1080px;transform-origin:0 0}\n#cwjd [hidden]{display:none !important}\n#cwjd:not([data-live]) .cwjd-app{display:none}\n#cwjd .cwjd-boot{margin:0;padding:16px 18px;border:1px dashed var(--ui-line);border-radius:12px;background:var(--ui-soft);color:var(--ui-muted);font-size:15px}\n#cwjd .cwjd-boot.cwjd-boot-err{border:1px solid #a1260d;color:#a1260d;background:#fff6f3;font-weight:600}\n\/* ---------- the job description sheet (what gets downloaded) ---------- *\/\n#cwjd .cwjd-scale{--cw-accent:#0f5e5a;--cw-on:#ffffff;--cw-head:#0f5e5a;--cw-display:'Fraunces',Georgia,'Times New Roman',serif;--cw-body:'DM Sans','Helvetica Neue',Helvetica,Arial,sans-serif}\n#cwjd .cwjd-scale[data-font=sans]{--cw-display:'DM Sans','Helvetica Neue',Helvetica,Arial,sans-serif}\n#cwjd .cwjd-sheet{width:1080px;min-height:1400px;box-sizing:border-box;background:#ffffff;color:#1d1d1b;font-family:var(--cw-body);font-size:17px;line-height:1.55;text-align:left;margin:0}\n#cwjd .cwjd-sheet *{margin:0;padding:0;border:0;background:none;text-transform:none;letter-spacing:normal;font-family:inherit;color:inherit;box-shadow:none}\n#cwjd .cwjd-sheet *::before,#cwjd .cwjd-sheet *::after{content:none}\n#cwjd .cwjd-sheet .cw-logo{display:block;max-height:56px;max-width:200px;width:auto;height:auto;object-fit:contain}\n#cwjd .cwjd-sheet .cw-p{white-space:pre-line;overflow-wrap:anywhere}\n#cwjd .cwjd-sheet .cw-list{display:flex;flex-direction:column;gap:10px;min-width:0}\n#cwjd .cwjd-sheet .cw-li{display:flex;gap:12px;align-items:flex-start;line-height:25px;overflow-wrap:anywhere}\n#cwjd .cwjd-sheet .cw-dotbox{flex:none;display:flex;align-items:center;height:25px}\n#cwjd .cwjd-sheet .cw-dot{display:block;width:7px;height:7px;border-radius:50%;background:var(--cw-accent)}\n#cwjd .cwjd-sheet .cw-ph{opacity:.45}\n\/* design 1: Classic *\/\n#cwjd .cw-classic{padding:72px 72px 0 72px;display:flex;flex-direction:column;gap:40px;background:#f6f4ef}\n#cwjd .cw-classic .cw-top{display:flex;flex-direction:column;gap:14px;padding-bottom:36px;border-bottom:2px solid #1d1d1b}\n#cwjd .cw-classic .cw-brandrow{display:flex;justify-content:space-between;align-items:center;gap:24px}\n#cwjd .cw-classic .cw-brand{display:flex;align-items:center;gap:16px;min-width:0}\n#cwjd .cw-classic .cw-company{font-size:18px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;line-height:1.3}\n#cwjd .cw-classic .cw-badge{flex:none;display:flex;align-items:center;height:42px;font-size:16px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;color:var(--cw-on);background:var(--cw-accent);padding:0 18px;border-radius:999px;line-height:42px}\n#cwjd .cw-classic .cw-title{margin-top:12px;font-family:var(--cw-display);font-weight:700;font-size:92px;line-height:1.02;letter-spacing:-.02em;overflow-wrap:anywhere}\n#cwjd .cwjd-scale[data-font=sans] .cw-classic .cw-title{letter-spacing:-.03em}\n#cwjd .cw-classic .cw-details{font-size:20px;color:#4a4944}\n#cwjd .cw-classic .cw-h{font-family:var(--cw-display);font-weight:500;font-size:30px;line-height:1.2;color:var(--cw-head)}\n#cwjd .cwjd-scale[data-font=sans] .cw-classic .cw-h{font-weight:700;font-size:28px}\n#cwjd .cw-classic .cw-sec{display:flex;flex-direction:column;gap:14px;min-width:0}\n#cwjd .cw-classic .cw-row{display:grid;grid-template-columns:1fr 1fr;gap:48px}\n#cwjd .cw-classic .cw-row.cw-single{grid-template-columns:1fr}\n#cwjd .cw-classic .cw-row.cw-qb{grid-template-columns:1.4fr 1fr}\n#cwjd .cw-classic .cw-row.cw-qb.cw-single{grid-template-columns:1fr}\n#cwjd .cw-classic .cw-card{background:#ffffff;border:1px solid #d9d5cb;border-radius:16px;padding:32px;align-self:start}\n#cwjd .cw-classic .cw-foot{margin:auto -72px 0 -72px;background:var(--cw-accent);color:var(--cw-on);padding:44px 72px;display:flex;justify-content:space-between;align-items:center;gap:32px}\n#cwjd .cw-classic .cw-foot-l{display:flex;flex-direction:column;gap:6px;min-width:0}\n#cwjd .cw-classic .cw-foot-h{font-family:var(--cw-display);font-weight:700;font-size:34px;line-height:1.2}\n#cwjd .cw-classic .cw-foot-t{font-size:18px}\n#cwjd .cw-classic .cw-contact{flex:none;max-width:520px;font-size:24px;font-weight:700;border:2px solid var(--cw-on);border-radius:999px;padding:14px 28px;overflow-wrap:anywhere;text-align:center;line-height:1.3}\n\/* design 2: Bold header *\/\n#cwjd .cw-modern{display:flex;flex-direction:column}\n#cwjd .cw-modern .m-head{background:var(--cw-accent);color:var(--cw-on);padding:60px 72px 56px 72px;display:flex;flex-direction:column;gap:16px}\n#cwjd .cw-modern .m-brandrow{display:flex;justify-content:space-between;align-items:center;gap:24px}\n#cwjd .cw-modern .m-brand{display:flex;align-items:center;gap:16px;min-width:0}\n#cwjd .cw-modern .m-brand .cw-logo{background:#ffffff;padding:8px 12px;border-radius:10px;box-sizing:content-box}\n#cwjd .cw-modern .m-company{font-size:18px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;line-height:1.3}\n#cwjd .cw-modern .m-badge{flex:none;display:flex;align-items:center;height:40px;padding:0 18px;border:2px solid var(--cw-on);border-radius:999px;font-size:15px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;line-height:36px}\n#cwjd .cw-modern .m-title{margin-top:22px;font-family:var(--cw-display);font-weight:700;font-size:84px;line-height:1.04;letter-spacing:-.02em;overflow-wrap:anywhere}\n#cwjd .cw-modern .m-details{font-size:20px;opacity:.9}\n#cwjd .cw-modern .m-body{flex:1;display:grid;grid-template-columns:1.55fr 1fr;gap:56px;padding:52px 72px 64px 72px;align-items:start}\n#cwjd .cw-modern .m-main,#cwjd .cw-modern .m-side{display:flex;flex-direction:column;gap:36px;min-width:0}\n#cwjd .cw-modern .m-sec{display:flex;flex-direction:column;gap:14px;min-width:0}\n#cwjd .cw-modern .m-h{font-size:15px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--cw-head);line-height:1.3;padding-bottom:10px;border-bottom:2px solid var(--cw-accent)}\n#cwjd .cw-modern .m-card{display:flex;flex-direction:column;gap:14px;background:#f3f2ee;border-radius:14px;padding:26px}\n#cwjd .cw-modern .m-card .m-h{border-bottom:0;padding-bottom:0}\n#cwjd .cw-modern .m-apply{display:flex;flex-direction:column;gap:8px;border:2px solid var(--cw-accent);border-radius:14px;padding:26px}\n#cwjd .cw-modern .m-apply-h{font-family:var(--cw-display);font-weight:700;font-size:26px;line-height:1.2}\n#cwjd .cw-modern .m-apply-t{font-size:16px}\n#cwjd .cw-modern .m-contact{font-size:19px;font-weight:700;color:var(--cw-head);overflow-wrap:anywhere}\n\/* design 3: Simple *\/\n#cwjd .cw-simple{padding:84px 88px 76px 88px;display:flex;flex-direction:column;gap:30px}\n#cwjd .cw-simple .n-top{display:flex;flex-direction:column;gap:14px;padding-bottom:10px}\n#cwjd .cw-simple .n-brand{display:flex;align-items:center;gap:14px}\n#cwjd .cw-simple .n-company{font-size:17px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--cw-head);line-height:1.3}\n#cwjd .cw-simple .n-badge{margin-left:auto;flex:none;font-size:14px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#5c5a54;white-space:nowrap}\n#cwjd .cw-simple .n-title{margin-top:20px;font-family:var(--cw-display);font-weight:700;font-size:72px;line-height:1.05;letter-spacing:-.02em;overflow-wrap:anywhere}\n#cwjd .cw-simple .n-details{font-size:20px;color:#4a4944}\n#cwjd .cw-simple .n-sec{display:grid;grid-template-columns:210px 1fr;gap:36px;padding-top:28px;border-top:1px solid #d3d1c9}\n#cwjd .cw-simple .n-h{font-size:15px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--cw-head);line-height:1.5;padding-top:2px}\n#cwjd .cw-simple .n-apply{margin-top:auto;padding-top:28px;border-top:2px solid var(--cw-accent);display:flex;flex-direction:column;gap:6px}\n#cwjd .cw-simple .n-apply-h{font-family:var(--cw-display);font-weight:700;font-size:26px;line-height:1.2}\n#cwjd .cw-simple .n-apply-row{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:18px}\n#cwjd .cw-simple .n-contact{font-weight:700;color:var(--cw-head);overflow-wrap:anywhere}\n\/* design 4: Sidebar *\/\n#cwjd .cw-sidebar{display:flex;flex-direction:row;align-items:stretch}\n#cwjd .cw-sidebar .s-side{flex:none;width:350px;box-sizing:border-box;background:var(--cw-accent);color:var(--cw-on);padding:64px 40px 56px 40px;display:flex;flex-direction:column;gap:34px}\n#cwjd .cw-sidebar .s-side .cw-dot{background:var(--cw-on)}\n#cwjd .cw-sidebar .s-brand{display:flex;flex-direction:column;align-items:flex-start;gap:16px}\n#cwjd .cw-sidebar .s-brand .cw-logo{background:#ffffff;padding:8px 12px;border-radius:10px;box-sizing:content-box}\n#cwjd .cw-sidebar .s-company{font-size:19px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;line-height:1.3;overflow-wrap:anywhere}\n#cwjd .cw-sidebar .s-badge{align-self:flex-start;display:flex;align-items:center;height:38px;padding:0 16px;border:2px solid var(--cw-on);border-radius:999px;font-size:14px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;line-height:34px}\n#cwjd .cw-sidebar .s-sec{display:flex;flex-direction:column;gap:12px;font-size:16px;line-height:1.55}\n#cwjd .cw-sidebar .s-h{font-size:14px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;opacity:.85}\n#cwjd .cw-sidebar .s-apply{margin-top:auto;display:flex;flex-direction:column;gap:8px;padding-top:28px;border-top:1px solid var(--cw-on)}\n#cwjd .cw-sidebar .s-apply-h{font-family:var(--cw-display);font-weight:700;font-size:24px;line-height:1.2}\n#cwjd .cw-sidebar .s-apply-t{font-size:15px}\n#cwjd .cw-sidebar .s-contact{font-size:17px;font-weight:700;overflow-wrap:anywhere}\n#cwjd .cw-sidebar .s-main{flex:1;min-width:0;padding:64px 64px 64px 56px;display:flex;flex-direction:column;gap:34px}\n#cwjd .cw-sidebar .s-headline{display:flex;flex-direction:column;gap:14px;padding-bottom:30px;border-bottom:2px solid #1d1d1b}\n#cwjd .cw-sidebar .s-title{font-family:var(--cw-display);font-weight:700;font-size:72px;line-height:1.05;letter-spacing:-.02em;overflow-wrap:anywhere}\n#cwjd .cw-sidebar .s-details{font-size:20px;color:#4a4944}\n#cwjd .cw-sidebar .s-msec{display:flex;flex-direction:column;gap:14px}\n#cwjd .cw-sidebar .s-mh{font-family:var(--cw-display);font-weight:500;font-size:28px;line-height:1.2;color:var(--cw-head)}\n#cwjd .cwjd-scale[data-font=sans] .cw-sidebar .s-mh{font-weight:700;font-size:26px}\n<\/style>\n<p class=\"cwjd-boot\">Loading the job description builder\u2026 If this message doesn&#8217;t go away, scripts are being blocked or removed on this page.<\/p>\n<script>\n(function () {\n  var s = document.currentScript, r = (s && s.closest) ? s.closest('.cwjd') : null;\n  if (!r) return;\n  var b = r.querySelector('.cwjd-boot'), err = '';\n  if (b) b.textContent = 'Loading the job description builder\u2026';\n  function onErr(e) {\n    var m = (e && e.message) || '';\n    if (!err && \/SyntaxError\/i.test(m) && (!e.filename || e.filename.split('#')[0] === location.href.split('#')[0])) err = m + (e.lineno ? ' (line ' + e.lineno + ')' : '');\n  }\n  window.addEventListener('error', onErr);\n  function check() {\n    window.removeEventListener('error', onErr);\n    if (!b || r.getAttribute('data-live') || \/cwjd-boot-err\/.test(b.className)) return;\n    b.className = 'cwjd-boot cwjd-boot-err';\n    b.textContent = err ? \"The job description builder's code was changed or cut off when it was saved, so it can't run. Browser error: \" + err\n      : \"The job description builder's main code didn't run on this page. It may have been removed, cut off while pasting, or delayed by a speed plugin.\";\n  }\n  if (document.readyState === 'complete') setTimeout(check, 2500);\n  else window.addEventListener('load', function () { setTimeout(check, 2500); });\n})();\n<\/script>\n<div class=\"cwjd-app\">\n<div class=\"cwjd-form\">\n<div class=\"cwjd-formhead\">\n<div class=\"cwjd-formtitle\">Customize your job description<\/div>\n<p class=\"cwjd-hint\">Edit any field and the preview updates as you type. Everything stays in your browser, nothing is uploaded.<\/p>\n<a class=\"cwjd-jump\" href=\"#cwjd-previewcol\">Jump to preview and download<\/a>\n<\/div>\n<div class=\"cwjd-group\">\n<div class=\"cwjd-gtitle\">Template<\/div>\n<label class=\"cwjd-field\">Template style <small>Changes the look only. Your text stays the same.<\/small><select id=\"cwjd-design\"><option value=\"classic\">Classic<\/option><option value=\"modern\">Bold header<\/option><option value=\"simple\">Simple<\/option><option value=\"sidebar\">Sidebar<\/option><\/select><\/label>\n<label class=\"cwjd-field\">Job role <small>Pre-fills the title, summary, responsibilities and qualifications. Your company details stay as they are.<\/small><select id=\"cwjd-role\"><\/select><\/label>\n<\/div>\n<div class=\"cwjd-group\">\n<div class=\"cwjd-gtitle\">Company &amp; branding<\/div>\n<label class=\"cwjd-field\">Company name<input type=\"text\" data-field=\"companyName\" autocomplete=\"organization\" placeholder=\"Your company name\"><\/label>\n<div class=\"cwjd-field\"><label for=\"cwjd-logo\">Logo <small>(optional, PNG, JPG, WebP or SVG)<\/small><\/label>\n<div class=\"cwjd-logorow\"><input type=\"file\" id=\"cwjd-logo\" accept=\"image\/png,image\/jpeg,image\/webp,image\/svg+xml\"><button type=\"button\" class=\"cwjd-btn cwjd-btn-small\" id=\"cwjd-logo-remove\" hidden>Remove logo<\/button><\/div><\/div>\n<label class=\"cwjd-field\">Tag text <small>Leave empty to hide it<\/small><input type=\"text\" data-field=\"badge\"><\/label>\n<div class=\"cwjd-field\"><span id=\"cwjd-color-label\">Brand color<\/span>\n<div class=\"cwjd-swatches\" role=\"group\" aria-labelledby=\"cwjd-color-label\">\n<button type=\"button\" class=\"cwjd-swatch\" data-color=\"#0f5e5a\" style=\"background:#0f5e5a\" aria-label=\"Teal\"><\/button>\n<button type=\"button\" class=\"cwjd-swatch\" data-color=\"#23408e\" style=\"background:#23408e\" aria-label=\"Blue\"><\/button>\n<button type=\"button\" class=\"cwjd-swatch\" data-color=\"#6d2b5e\" style=\"background:#6d2b5e\" aria-label=\"Plum\"><\/button>\n<button type=\"button\" class=\"cwjd-swatch\" data-color=\"#a23b12\" style=\"background:#a23b12\" aria-label=\"Rust\"><\/button>\n<button type=\"button\" class=\"cwjd-swatch\" data-color=\"#2f2f2f\" style=\"background:#2f2f2f\" aria-label=\"Charcoal\"><\/button>\n<label class=\"cwjd-colorwrap\">Custom <input type=\"color\" id=\"cwjd-color\" value=\"#0f5e5a\"><\/label>\n<\/div><\/div>\n<label class=\"cwjd-field\">Heading style<select data-field=\"font\"><option value=\"serif\">Classic serif<\/option><option value=\"sans\">Modern sans<\/option><\/select><\/label>\n<\/div>\n<div class=\"cwjd-group\">\n<div class=\"cwjd-gtitle\">Job basics<\/div>\n<label class=\"cwjd-field\">Job title<input type=\"text\" data-field=\"jobTitle\"><\/label>\n<label class=\"cwjd-field\">Details line <small>e.g. job type, location, experience<\/small><input type=\"text\" data-field=\"details\"><\/label>\n<\/div>\n<div class=\"cwjd-group\">\n<div class=\"cwjd-gtitle\">About the company<\/div>\n<label class=\"cwjd-field\">Section heading<input type=\"text\" data-field=\"aboutHeading\"><\/label>\n<label class=\"cwjd-field\">Text <small>Leave empty to hide this section<\/small><textarea data-field=\"aboutText\"><\/textarea><\/label>\n<\/div>\n<div class=\"cwjd-group\">\n<div class=\"cwjd-gtitle\">About the role<\/div>\n<label class=\"cwjd-field\">Section heading<input type=\"text\" data-field=\"roleHeading\"><\/label>\n<label class=\"cwjd-field\">Text <small>Leave empty to hide this section<\/small><textarea data-field=\"roleText\"><\/textarea><\/label>\n<\/div>\n<div class=\"cwjd-group\">\n<div class=\"cwjd-gtitle\">Responsibilities<\/div>\n<label class=\"cwjd-field\">Section heading<input type=\"text\" data-field=\"respHeading\"><\/label>\n<label class=\"cwjd-field\">One per line <small>Long lists split into two columns automatically<\/small><textarea class=\"cwjd-tall\" data-field=\"respList\"><\/textarea><\/label>\n<\/div>\n<div class=\"cwjd-group\">\n<div class=\"cwjd-gtitle\">Qualifications<\/div>\n<label class=\"cwjd-field\">Section heading<input type=\"text\" data-field=\"qualHeading\"><\/label>\n<label class=\"cwjd-field\">One per line<textarea class=\"cwjd-tall\" data-field=\"qualList\"><\/textarea><\/label>\n<\/div>\n<div class=\"cwjd-group\">\n<div class=\"cwjd-gtitle\">Benefits<\/div>\n<label class=\"cwjd-field\">Section heading<input type=\"text\" data-field=\"benHeading\"><\/label>\n<label class=\"cwjd-field\">One per line <small>Leave empty to hide this section<\/small><textarea data-field=\"benList\"><\/textarea><\/label>\n<\/div>\n<div class=\"cwjd-group\">\n<div class=\"cwjd-gtitle\">How to apply<\/div>\n<label class=\"cwjd-field\">Heading<input type=\"text\" data-field=\"applyHeading\"><\/label>\n<label class=\"cwjd-field\">Short line<input type=\"text\" data-field=\"applyText\"><\/label>\n<label class=\"cwjd-field\">Email or link<input type=\"text\" data-field=\"applyContact\" placeholder=\"e.g. careers@yourcompany.com\"><\/label>\n<\/div>\n<div class=\"cwjd-formfoot\">\n<button type=\"button\" class=\"cwjd-btn cwjd-btn-small\" id=\"cwjd-reset\">Reset template<\/button>\n<button type=\"button\" class=\"cwjd-btn cwjd-btn-small\" id=\"cwjd-clear\">Clear all fields<\/button>\n<\/div>\n<\/div>\n<div class=\"cwjd-previewcol\" id=\"cwjd-previewcol\">\n<div class=\"cwjd-actions\">\n<label class=\"cwjd-fmt\"><span class=\"cwjd-sr\">Download format<\/span><select id=\"cwjd-format\" class=\"cwjd-select\"><option value=\"pdf\">PDF<\/option><option value=\"docx\">Word (.docx)<\/option><option value=\"png\">PNG image<\/option><\/select><\/label>\n<button type=\"button\" class=\"cwjd-btn cwjd-btn-primary\" id=\"cwjd-download\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 3v12\"\/><path d=\"m7 10 5 5 5-5\"\/><path d=\"M5 21h14\"\/><\/svg>Download<\/button>\n<button type=\"button\" class=\"cwjd-btn\" id=\"cwjd-zoom\" aria-expanded=\"false\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M15 3h6v6\"\/><path d=\"M9 21H3v-6\"\/><path d=\"M21 3l-7 7\"\/><path d=\"M3 21l7-7\"\/><\/svg><span id=\"cwjd-zoom-label\">Enlarge<\/span><\/button>\n<\/div>\n<a class=\"cwjd-cta\" id=\"cwjd-cta\" href=\"https:\/\/internshala.com\/hire-talent?utm_source=is_blog&amp;utm_medium=jd_builder\" target=\"_blank\" rel=\"noopener\"><span><span id=\"cwjd-cta-lead\">Hiring for this role?<\/span> <strong id=\"cwjd-cta-strong\">Post this job for free<\/strong><\/span><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M5 12h14\"\/><path d=\"m13 6 6 6-6 6\"\/><\/svg><\/a>\n<p class=\"cwjd-status\" id=\"cwjd-status\" role=\"status\" aria-live=\"polite\"><\/p>\n<div class=\"cwjd-stage\" id=\"cwjd-stage\">\n<div class=\"cwjd-scale\" id=\"cwjd-scale\" data-font=\"serif\">\n<div class=\"cwjd-sheet cw-classic\" data-design=\"classic\">\n<div class=\"cw-top\">\n<div class=\"cw-brandrow\">\n<div class=\"cw-brand\"><img class=\"cw-logo\" alt=\"\" hidden><div class=\"cw-company\" data-out=\"companyName\" data-ph=\"[Company name]\"><\/div><\/div>\n<div class=\"cw-badge\" data-out=\"badge\" data-hide-empty=\"badge\"><\/div>\n<\/div>\n<div class=\"cw-title\" data-out=\"jobTitle\" data-ph=\"[Job title]\"><\/div>\n<div class=\"cw-details\" data-out=\"details\" data-hide-empty=\"details\"><\/div>\n<\/div>\n<div class=\"cw-row\" data-pair=\"aboutText roleText\">\n<div class=\"cw-sec\" data-hide-empty=\"aboutText\"><div class=\"cw-h\" data-out=\"aboutHeading\"><\/div><div class=\"cw-p\" data-out=\"aboutText\"><\/div><\/div>\n<div class=\"cw-sec\" data-hide-empty=\"roleText\"><div class=\"cw-h\" data-out=\"roleHeading\"><\/div><div class=\"cw-p\" data-out=\"roleText\"><\/div><\/div>\n<\/div>\n<div class=\"cw-sec\" data-hide-empty=\"respList\"><div class=\"cw-h\" data-out=\"respHeading\"><\/div>\n<div class=\"cw-row\" data-two=\"respList\"><div class=\"cw-list\" data-list=\"respList\" data-half=\"a\"><\/div><div class=\"cw-list\" data-list=\"respList\" data-half=\"b\"><\/div><\/div>\n<\/div>\n<div class=\"cw-row cw-qb\" data-pair=\"qualList benList\">\n<div class=\"cw-sec\" data-hide-empty=\"qualList\"><div class=\"cw-h\" data-out=\"qualHeading\"><\/div><div class=\"cw-list\" data-list=\"qualList\"><\/div><\/div>\n<div class=\"cw-sec cw-card\" data-hide-empty=\"benList\"><div class=\"cw-h\" data-out=\"benHeading\"><\/div><div class=\"cw-list\" data-list=\"benList\"><\/div><\/div>\n<\/div>\n<div class=\"cw-foot\">\n<div class=\"cw-foot-l\"><div class=\"cw-foot-h\" data-out=\"applyHeading\"><\/div><div class=\"cw-foot-t\" data-out=\"applyText\"><\/div><\/div>\n<div class=\"cw-contact\" data-out=\"applyContact\" data-ph=\"[Your email or job link]\"><\/div>\n<\/div>\n<\/div>\n<div class=\"cwjd-sheet cw-modern\" data-design=\"modern\" hidden>\n<div class=\"m-head\">\n<div class=\"m-brandrow\">\n<div class=\"m-brand\"><img class=\"cw-logo\" alt=\"\" hidden><div class=\"m-company\" data-out=\"companyName\" data-ph=\"[Company name]\"><\/div><\/div>\n<div class=\"m-badge\" data-out=\"badge\" data-hide-empty=\"badge\"><\/div>\n<\/div>\n<div class=\"m-title\" data-out=\"jobTitle\" data-ph=\"[Job title]\"><\/div>\n<div class=\"m-details\" data-out=\"details\" data-hide-empty=\"details\"><\/div>\n<\/div>\n<div class=\"m-body\">\n<div class=\"m-main\">\n<div class=\"m-sec\" data-hide-empty=\"roleText\"><div class=\"m-h\" data-out=\"roleHeading\"><\/div><div class=\"cw-p\" data-out=\"roleText\"><\/div><\/div>\n<div class=\"m-sec\" data-hide-empty=\"respList\"><div class=\"m-h\" data-out=\"respHeading\"><\/div><div class=\"cw-list\" data-list=\"respList\"><\/div><\/div>\n<div class=\"m-sec\" data-hide-empty=\"qualList\"><div class=\"m-h\" data-out=\"qualHeading\"><\/div><div class=\"cw-list\" data-list=\"qualList\"><\/div><\/div>\n<\/div>\n<div class=\"m-side\">\n<div class=\"m-sec\" data-hide-empty=\"aboutText\"><div class=\"m-h\" data-out=\"aboutHeading\"><\/div><div class=\"cw-p\" data-out=\"aboutText\"><\/div><\/div>\n<div class=\"m-card\" data-hide-empty=\"benList\"><div class=\"m-h\" data-out=\"benHeading\"><\/div><div class=\"cw-list\" data-list=\"benList\"><\/div><\/div>\n<div class=\"m-apply\"><div class=\"m-apply-h\" data-out=\"applyHeading\"><\/div><div class=\"m-apply-t\" data-out=\"applyText\"><\/div><div class=\"m-contact\" data-out=\"applyContact\" data-ph=\"[Your email or job link]\"><\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cwjd-sheet cw-simple\" data-design=\"simple\" hidden>\n<div class=\"n-top\">\n<div class=\"n-brand\"><img class=\"cw-logo\" alt=\"\" hidden><div class=\"n-company\" data-out=\"companyName\" data-ph=\"[Company name]\"><\/div><div class=\"n-badge\" data-out=\"badge\" data-hide-empty=\"badge\"><\/div><\/div>\n<div class=\"n-title\" data-out=\"jobTitle\" data-ph=\"[Job title]\"><\/div>\n<div class=\"n-details\" data-out=\"details\" data-hide-empty=\"details\"><\/div>\n<\/div>\n<div class=\"n-sec\" data-hide-empty=\"aboutText\"><div class=\"n-h\" data-out=\"aboutHeading\"><\/div><div class=\"cw-p\" data-out=\"aboutText\"><\/div><\/div>\n<div class=\"n-sec\" data-hide-empty=\"roleText\"><div class=\"n-h\" data-out=\"roleHeading\"><\/div><div class=\"cw-p\" data-out=\"roleText\"><\/div><\/div>\n<div class=\"n-sec\" data-hide-empty=\"respList\"><div class=\"n-h\" data-out=\"respHeading\"><\/div><div class=\"cw-list\" data-list=\"respList\"><\/div><\/div>\n<div class=\"n-sec\" data-hide-empty=\"qualList\"><div class=\"n-h\" data-out=\"qualHeading\"><\/div><div class=\"cw-list\" data-list=\"qualList\"><\/div><\/div>\n<div class=\"n-sec\" data-hide-empty=\"benList\"><div class=\"n-h\" data-out=\"benHeading\"><\/div><div class=\"cw-list\" data-list=\"benList\"><\/div><\/div>\n<div class=\"n-apply\"><div class=\"n-apply-h\" data-out=\"applyHeading\"><\/div><div class=\"n-apply-row\"><div data-out=\"applyText\"><\/div><div class=\"n-contact\" data-out=\"applyContact\" data-ph=\"[Your email or job link]\"><\/div><\/div><\/div>\n<\/div>\n<div class=\"cwjd-sheet cw-sidebar\" data-design=\"sidebar\" hidden>\n<div class=\"s-side\">\n<div class=\"s-brand\"><img class=\"cw-logo\" alt=\"\" hidden><div class=\"s-company\" data-out=\"companyName\" data-ph=\"[Company name]\"><\/div><\/div>\n<div class=\"s-badge\" data-out=\"badge\" data-hide-empty=\"badge\"><\/div>\n<div class=\"s-sec\" data-hide-empty=\"aboutText\"><div class=\"s-h\" data-out=\"aboutHeading\"><\/div><div class=\"cw-p\" data-out=\"aboutText\"><\/div><\/div>\n<div class=\"s-sec\" data-hide-empty=\"benList\"><div class=\"s-h\" data-out=\"benHeading\"><\/div><div class=\"cw-list\" data-list=\"benList\"><\/div><\/div>\n<div class=\"s-apply\"><div class=\"s-apply-h\" data-out=\"applyHeading\"><\/div><div class=\"s-apply-t\" data-out=\"applyText\"><\/div><div class=\"s-contact\" data-out=\"applyContact\" data-ph=\"[Your email or job link]\"><\/div><\/div>\n<\/div>\n<div class=\"s-main\">\n<div class=\"s-headline\"><div class=\"s-title\" data-out=\"jobTitle\" data-ph=\"[Job title]\"><\/div><div class=\"s-details\" data-out=\"details\" data-hide-empty=\"details\"><\/div><\/div>\n<div class=\"s-msec\" data-hide-empty=\"roleText\"><div class=\"s-mh\" data-out=\"roleHeading\"><\/div><div class=\"cw-p\" data-out=\"roleText\"><\/div><\/div>\n<div class=\"s-msec\" data-hide-empty=\"respList\"><div class=\"s-mh\" data-out=\"respHeading\"><\/div><div class=\"cw-list\" data-list=\"respList\"><\/div><\/div>\n<div class=\"s-msec\" data-hide-empty=\"qualList\"><div class=\"s-mh\" data-out=\"qualHeading\"><\/div><div class=\"cw-list\" data-list=\"qualList\"><\/div><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"cwjd-gate\" id=\"cwjd-gate\" hidden>\n<div class=\"cwjd-gate-box\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"cwjd-gate-title\">\n<button type=\"button\" class=\"cwjd-gate-x\" id=\"cwjd-gate-close\" aria-label=\"Close\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M6 6l12 12\"\/><path d=\"M18 6L6 18\"\/><\/svg><\/button>\n<div class=\"cwjd-gate-title\" id=\"cwjd-gate-title\">Sign up free to download your job description<\/div>\n<p class=\"cwjd-gate-sub\" id=\"cwjd-gate-sub\">Create your free Internshala employer account to download this JD, then post the job to reach candidates.<\/p>\n<div class=\"cwjd-gate-signup\" id=\"cwjd-gate-signup\">\n<button type=\"button\" class=\"cwjd-gate-btn cwjd-gate-main\" id=\"cwjd-gate-google\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"8\" r=\"4\"\/><path d=\"M4 21a8 8 0 0 1 16 0\"\/><\/svg>Sign up with Google<\/button>\n<button type=\"button\" class=\"cwjd-gate-btn\" id=\"cwjd-gate-email\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2\"\/><path d=\"m3 7 9 6 9-6\"\/><\/svg>Sign up with Email<\/button>\n<\/div>\n<form class=\"cwjd-gate-form\" id=\"cwjd-gate-form\" novalidate hidden>\n<div class=\"cwjd-gate-row\">\n<label class=\"cwjd-gate-field\">First name<input type=\"text\" name=\"first_name\" autocomplete=\"given-name\" maxlength=\"60\" required><\/label>\n<label class=\"cwjd-gate-field\">Last name<input type=\"text\" name=\"last_name\" autocomplete=\"family-name\" maxlength=\"60\" required><\/label>\n<\/div>\n<label class=\"cwjd-gate-field\">Official email<input type=\"email\" name=\"email\" autocomplete=\"email\" placeholder=\"name@company.com\" maxlength=\"120\" required><\/label>\n<label class=\"cwjd-gate-field\">Mobile number<span class=\"cwjd-gate-tel\"><span class=\"cwjd-gate-cc\">+91<\/span><input type=\"tel\" name=\"mobile\" autocomplete=\"tel-national\" inputmode=\"numeric\" placeholder=\"10-digit mobile number\" maxlength=\"20\" required><\/span><\/label>\n<label class=\"cwjd-gate-field\">Company name<input type=\"text\" name=\"company\" autocomplete=\"organization\" maxlength=\"120\" required><\/label>\n<label class=\"cwjd-gate-hp\" aria-hidden=\"true\">Leave this empty<input type=\"text\" name=\"website\" tabindex=\"-1\" autocomplete=\"off\"><\/label>\n<p class=\"cwjd-gate-ferr\" id=\"cwjd-gate-ferr\" role=\"alert\"><\/p>\n<button type=\"submit\" class=\"cwjd-gate-btn cwjd-gate-main\" id=\"cwjd-gate-submit\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M12 3v12\"\/><path d=\"m7 10 5 5 5-5\"\/><path d=\"M5 21h14\"\/><\/svg>Download my JD<\/button>\n<\/form>\n<p class=\"cwjd-gate-login\"><span id=\"cwjd-gate-login-lead\">Already have an account?<\/span> <button type=\"button\" class=\"cwjd-gate-link\" id=\"cwjd-gate-login\">Log in<\/button><\/p>\n<p class=\"cwjd-gate-status\" id=\"cwjd-gate-status\" role=\"status\" aria-live=\"polite\"><\/p>\n<div class=\"cwjd-gate-done\" id=\"cwjd-gate-done\" hidden>\n<a class=\"cwjd-gate-open\" id=\"cwjd-gate-open\" href=\"https:\/\/internshala.com\/hire-talent\" target=\"_blank\" rel=\"noopener\" hidden>Open the sign-up page in a new tab<\/a>\n<button type=\"button\" class=\"cwjd-btn cwjd-btn-primary\" id=\"cwjd-gate-continue\">I&#8217;ve signed in, download my file<\/button>\n<\/div>\n<p class=\"cwjd-gate-terms\"><span id=\"cwjd-gate-terms-lead\">By signing up, you agree to our<\/span> <a href=\"https:\/\/internshala.com\/terms#employer\" target=\"_blank\" rel=\"noopener\">T&amp;C<\/a>.<\/p>\n<\/div>\n<\/div>\n<script>\n(function () {\n  \/* Find this script's own builder block, so the builder still works if a page has more than one copy. *\/\n  var me = document.currentScript, root = (me && me.closest) ? me.closest('.cwjd') : null;\n  if (!root || root.getAttribute('data-ready')) {\n    root = null;\n    var all = document.querySelectorAll('.cwjd');\n    for (var n = 0; all.length > n; n++) { if (!all[n].getAttribute('data-ready')) { root = all[n]; break; } }\n  }\n  if (!root) return;\n  root.setAttribute('data-ready', '1');\n  var boot = root.querySelector('.cwjd-boot');\n  try {\n    start(root);\n    root.setAttribute('data-live', '1');\n    if (boot) boot.parentNode.removeChild(boot);\n  } catch (err) {\n    if (boot) { boot.textContent = \"Sorry, the job description builder couldn't start. Please refresh the page. (\" + (err && err.message ? err.message : err) + \")\"; boot.className = 'cwjd-boot cwjd-boot-err'; }\n    if (window.console && console.error) console.error('Job description builder:', err);\n  }\n  function start(root) {\n  var H2C = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/html2canvas\/1.4.1\/html2canvas.min.js';\n  var JSPDF = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js';\n  var DOCX_SRC = ['https:\/\/cdn.jsdelivr.net\/npm\/docx@8.5.0\/build\/index.umd.min.js', 'https:\/\/unpkg.com\/docx@8.5.0\/build\/index.umd.js'];\n  var DESIGNS = ['classic', 'modern', 'simple', 'sidebar'];\n  var PAPER = { classic: '#f6f4ef', modern: '#ffffff', simple: '#ffffff', sidebar: '#ffffff' };\n  \/* Note: this code deliberately uses no backslash or less-than characters. WordPress's text formatter treats a less-than sign as\n     the start of an HTML tag and rewrites the ampersands after it, which breaks the script. Write comparisons as b > a instead. *\/\n  var NL = String.fromCharCode(10);\n  \/* Company-level fields: the same for every role, and kept when someone switches roles. *\/\n  var COMMON = {\n    companyName: \"\",\n    badge: \"We're hiring\",\n    aboutHeading: \"About us\",\n    aboutText: \"[Company name] is a [industry] company that [what you do and who you serve]. [Add a line about your team, culture or mission.]\",\n    roleHeading: \"The role\",\n    respHeading: \"Key responsibilities\",\n    qualHeading: \"Qualifications & skills\",\n    benHeading: \"Benefits\",\n    benList: [\"Competitive salary\", \"Health insurance\", \"Paid time off\", \"Learning and growth opportunities\"].join(NL),\n    applyHeading: \"Think you're a good fit?\",\n    applyText: \"Send your resume and a cover letter to\",\n    applyContact: \"\",\n    accent: \"#0f5e5a\",\n    font: \"serif\"\n  };\n  \/* Role templates. \"match\" lists the URL words that load each role (e.g. a post at \/python-developer-job-description\/).\n     To add a role, copy one block and change its text. *\/\n  var DEFAULT_ROLE = \"software-developer\";\n  var ROLES = [\n    { id: \"software-developer\", group: \"Tech\", title: \"Software Developer\", match: [\"software-engineer\", \"software-developer\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 0\u20132 years experience\",\n      summary: \"We're looking for a Software Developer to design, build and maintain reliable software. You'll work closely with product and design teams to turn requirements into clean, well-tested code and ship features that users rely on.\",\n      resp: [\"Write clean, efficient and well-documented code\", \"Build new features from product requirements and technical specifications\", \"Test and debug software to fix errors and improve performance\", \"Take part in code reviews and share feedback with teammates\", \"Maintain and improve existing applications and systems\", \"Work with product, design and QA teams through the development cycle\", \"Document technical designs, processes and changes\"],\n      qual: [\"Bachelor's degree in Computer Science, IT or a related field\", \"0\u20132 years of software development experience (internships count)\", \"Proficiency in at least one language such as Python, Java, C++ or JavaScript\", \"Understanding of the software development life cycle (SDLC)\", \"Familiarity with Git and version control\", \"Strong problem-solving and communication skills\", \"Experience with Agile or Scrum is a plus\"] },\n    { id: \"python-developer\", group: \"Tech\", title: \"Python Developer\", match: [\"python-programmer\", \"python-engineer\", \"django-developer\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 0\u20132 years experience\",\n      summary: \"We're looking for a Python Developer to build and maintain the back-end services and tools that power our products. You'll write clean, scalable code, integrate with databases and APIs, and work with the team to ship reliable features.\",\n      resp: [\"Write clean, reusable and well-tested Python code\", \"Build and maintain web applications and REST APIs using Django, Flask or FastAPI\", \"Integrate databases such as PostgreSQL, MySQL or MongoDB\", \"Connect front-end components and third-party services to server-side logic\", \"Write unit and integration tests and fix bugs\", \"Optimize applications for speed, security and scalability\", \"Automate recurring tasks with scripts and tools\", \"Take part in code reviews and technical discussions\"],\n      qual: [\"Bachelor's degree in Computer Science, IT or a related field\", \"0\u20132 years of Python development experience (internships count)\", \"Working knowledge of a Python framework such as Django, Flask or FastAPI\", \"Understanding of SQL and relational databases\", \"Familiarity with Git, REST APIs and basic Linux commands\", \"Knowledge of AWS, GCP or Azure is a plus\", \"Good problem-solving and communication skills\"] },\n    { id: \"front-end-developer\", group: \"Tech\", title: \"Front End Developer\", match: [\"frontend-developer\", \"javascript-developer\", \"front-end-engineer\", \"frontend-engineer\", \"react-developer\", \"reactjs-developer\", \"angular-developer\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 0\u20132 years experience\",\n      summary: \"We're looking for a Front End Developer to build fast, accessible and responsive user interfaces. You'll work with designers and back-end developers to turn designs into polished web experiences.\",\n      resp: [\"Build responsive web pages and components from design mockups\", \"Write clean HTML, CSS and JavaScript (or TypeScript)\", \"Develop reusable UI components with React, Angular or Vue\", \"Connect interfaces to back-end services through REST or GraphQL APIs\", \"Ensure cross-browser and cross-device compatibility\", \"Optimize pages for speed, accessibility and SEO\", \"Fix UI bugs and improve existing features\", \"Work with designers on usability and visual details\"],\n      qual: [\"Bachelor's degree in Computer Science, IT or a related field, or equivalent experience\", \"0\u20132 years of front-end development experience (internships count)\", \"Strong knowledge of HTML5, CSS3 and JavaScript\", \"Hands-on experience with React, Angular or Vue\", \"Understanding of responsive design and web accessibility basics\", \"Familiarity with Git, npm and browser developer tools\", \"A portfolio or GitHub profile showing your work\"] },\n    { id: \"back-end-developer\", group: \"Tech\", title: \"Back End Developer\", match: [\"backend-developer\", \"back-end-engineer\", \"backend-engineer\", \"node-js-developer\", \"nodejs-developer\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 0\u20132 years experience\",\n      summary: \"We're looking for a Back End Developer to build the server-side logic, databases and APIs behind our products. You'll focus on performance, security and reliability, working closely with front-end and product teams.\",\n      resp: [\"Design, build and maintain server-side applications and APIs\", \"Design database schemas and write efficient queries\", \"Integrate third-party services, payment gateways and internal systems\", \"Implement authentication, authorization and data security\", \"Monitor, debug and improve application performance\", \"Write unit and integration tests\", \"Work with front-end developers to define and document APIs\", \"Support deployments and troubleshoot production issues\"],\n      qual: [\"Bachelor's degree in Computer Science, IT or a related field\", \"0\u20132 years of back-end development experience (internships count)\", \"Proficiency in a back-end language such as Node.js, Python, Java, Go or PHP\", \"Experience with SQL or NoSQL databases\", \"Understanding of RESTful API design and web security basics\", \"Familiarity with Git, Docker or cloud platforms is a plus\", \"Strong problem-solving skills\"] },\n    { id: \"full-stack-developer\", group: \"Tech\", title: \"Full Stack Developer\", match: [\"fullstack-developer\", \"full-stack-engineer\", \"fullstack-engineer\", \"mern-stack-developer\", \"mean-stack-developer\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 1\u20133 years experience\",\n      summary: \"We're looking for a Full Stack Developer who enjoys working across the whole product, from the user interface to the server and database. You'll build complete features end to end and help shape how our platform grows.\",\n      resp: [\"Build complete features across front end, back end and database\", \"Develop responsive user interfaces with modern JavaScript frameworks\", \"Design and build REST APIs and server-side logic\", \"Design database structures and manage data\", \"Write tests, review code and fix bugs across the stack\", \"Deploy and maintain applications in cloud environments\", \"Work with product and design teams to scope and ship features\"],\n      qual: [\"Bachelor's degree in Computer Science, IT or a related field\", \"1\u20133 years of full stack development experience\", \"Proficiency in JavaScript or TypeScript and a front-end framework such as React\", \"Experience with a back-end stack such as Node.js, Python\/Django or Java\/Spring\", \"Working knowledge of SQL and NoSQL databases\", \"Familiarity with Git, CI\/CD and cloud platforms\", \"Ability to own features independently\"] },\n    { id: \"java-developer\", group: \"Tech\", title: \"Java Developer\", match: [\"java-programmer\", \"java-engineer\", \"java-software-developer\", \"spring-boot-developer\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 0\u20132 years experience\",\n      summary: \"We're looking for a Java Developer to design, develop and maintain robust, scalable Java applications. You'll be involved throughout the development cycle, from requirements to deployment.\",\n      resp: [\"Design, develop and maintain Java-based applications\", \"Build RESTful services and microservices using Spring Boot\", \"Write well-designed, testable and efficient code\", \"Integrate applications with databases and external systems\", \"Write unit tests with JUnit and fix defects\", \"Analyze and improve application performance\", \"Take part in code reviews and follow coding standards\", \"Prepare technical documentation\"],\n      qual: [\"Bachelor's degree in Computer Science, IT or a related field\", \"0\u20132 years of Java development experience (internships count)\", \"Strong understanding of core Java, OOP concepts and collections\", \"Experience with Spring or Spring Boot\", \"Knowledge of SQL and ORM tools such as Hibernate\/JPA\", \"Familiarity with Maven or Gradle and Git\", \"Good analytical and problem-solving skills\"] },\n    { id: \"android-developer\", group: \"Tech\", title: \"Android Developer\", match: [\"android-app-developer\", \"android-engineer\", \"kotlin-developer\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 0\u20132 years experience\",\n      summary: \"We're looking for an Android Developer to build and maintain high-quality Android apps. You'll work with designers and back-end developers to create smooth, reliable experiences for our users.\",\n      resp: [\"Design and build Android applications using Kotlin or Java\", \"Turn designs and wireframes into polished app screens\", \"Integrate apps with REST APIs and third-party SDKs\", \"Ensure app performance, quality and responsiveness\", \"Find and fix bugs and improve app stability\", \"Write unit and UI tests\", \"Publish and maintain apps on the Google Play Store\", \"Keep up with Android platform updates and best practices\"],\n      qual: [\"Bachelor's degree in Computer Science, IT or a related field\", \"0\u20132 years of Android development experience (internships count)\", \"Strong knowledge of Kotlin or Java and the Android SDK\", \"Familiarity with Jetpack components, MVVM and Android Studio\", \"Experience working with REST APIs and JSON\", \"Understanding of Material Design guidelines\", \"Published apps or a GitHub portfolio is a plus\"] },\n    { id: \"web-developer\", group: \"Tech\", title: \"Web Developer\", match: [\"website-developer\", \"wordpress-developer\", \"php-developer\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 0\u20132 years experience\",\n      summary: \"We're looking for a Web Developer to build, update and maintain websites and web applications. You'll make sure our sites look great, load fast and work smoothly on every device.\",\n      resp: [\"Build and maintain websites and web applications\", \"Write clean HTML, CSS, JavaScript and server-side code\", \"Create responsive layouts that work across devices and browsers\", \"Integrate websites with CMS platforms, APIs and databases\", \"Improve site speed, security and SEO best practices\", \"Test, troubleshoot and fix website issues\", \"Update content and features based on business needs\"],\n      qual: [\"Bachelor's degree in Computer Science, IT or a related field, or equivalent experience\", \"0\u20132 years of web development experience (internships count)\", \"Strong knowledge of HTML, CSS and JavaScript\", \"Experience with PHP, Node.js or Python\", \"Familiarity with WordPress or another CMS\", \"Understanding of responsive design and basic SEO\", \"A portfolio of websites you have built\"] },\n    { id: \"data-analyst\", group: \"Data\", title: \"Data Analyst\", match: [\"data-analytics-executive\", \"junior-data-analyst\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 0\u20132 years experience\",\n      summary: \"We're looking for a Data Analyst to turn data into insights that guide business decisions. You'll collect, clean and analyze data, build reports and dashboards, and share clear findings with teams across the company.\",\n      resp: [\"Collect, clean and validate data from multiple sources\", \"Analyze data to identify trends, patterns and opportunities\", \"Build and maintain dashboards and reports\", \"Write SQL queries to extract and transform data\", \"Track key business metrics and flag unusual changes\", \"Present findings and recommendations to stakeholders\", \"Work with teams to define data needs and improve data quality\"],\n      qual: [\"Bachelor's degree in Statistics, Mathematics, Computer Science, Economics or a related field\", \"0\u20132 years of data analysis experience (internships count)\", \"Strong skills in Excel and SQL\", \"Experience with a BI tool such as Power BI, Tableau or Looker Studio\", \"Knowledge of Python or R for analysis is a plus\", \"Good understanding of basic statistics\", \"Clear communication and presentation skills\"] },\n    { id: \"data-scientist\", group: \"Data\", title: \"Data Scientist\", match: [\"data-science\", \"junior-data-scientist\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 1\u20133 years experience\",\n      summary: \"We're looking for a Data Scientist to build models and analyses that solve real business problems. You'll explore large datasets, develop machine learning solutions, and work with engineering and product teams to put them into use.\",\n      resp: [\"Collect, clean and explore large structured and unstructured datasets\", \"Build, train and evaluate machine learning and statistical models\", \"Design experiments and A\/B tests and analyze the results\", \"Turn business problems into data science questions\", \"Work with engineers to deploy and monitor models in production\", \"Communicate findings through visualizations and reports\", \"Stay updated on new tools, techniques and research\"],\n      qual: [\"Bachelor's or Master's degree in Computer Science, Statistics, Mathematics or a related field\", \"1\u20133 years of experience in data science or machine learning\", \"Strong Python skills (pandas, NumPy, scikit-learn)\", \"Solid knowledge of statistics, probability and ML algorithms\", \"Experience with SQL and large datasets\", \"Familiarity with TensorFlow or PyTorch is a plus\", \"Ability to explain technical results to non-technical audiences\"] },\n    { id: \"ai-ml-engineer\", group: \"Data\", title: \"AI\/ML Engineer\", match: [\"ai-ml\", \"machine-learning-engineer\", \"ml-engineer\", \"ai-engineer\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 2\u20134 years experience\",\n      summary: \"We're looking for an AI\/ML Engineer to design, build and deploy machine learning models that improve our products. You'll work with data and engineering teams to take models from experiment to production and keep them performing well.\",\n      resp: [\"Design, train and evaluate machine learning models for real product use cases\", \"Explore and prepare datasets, and engineer useful features\", \"Experiment with different modeling approaches and measure their impact\", \"Work with back-end engineers to deploy models into production\", \"Monitor model performance and fix issues such as drift or errors\", \"Improve existing models using new data and user feedback\", \"Document experiments, pipelines and deployment steps\"],\n      qual: [\"Bachelor's or Master's degree in Computer Science, Data Science, Engineering or a related field\", \"2\u20134 years of experience in machine learning or a related engineering role\", \"Strong Python programming skills\", \"Solid understanding of machine learning algorithms and statistics\", \"Hands-on experience with TensorFlow, PyTorch or scikit-learn\", \"Working knowledge of SQL, Git and data preprocessing\", \"Experience with cloud platforms, Docker or MLOps is a plus\", \"Exposure to generative AI, LLMs, NLP or computer vision is a plus\"] },\n    { id: \"mis-executive\", group: \"Data\", title: \"MIS Executive\", match: [\"mis-analyst\", \"mis-reporting-executive\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 1\u20133 years experience\",\n      summary: \"We're looking for an MIS Executive to collect, manage and report the data our teams rely on for decisions. You'll prepare regular reports and dashboards, check data quality and turn numbers into clear insights.\",\n      resp: [\"Collect, organize and maintain data from different departments\", \"Prepare daily, weekly, monthly and ad-hoc reports\", \"Build and update dashboards and track key performance indicators\", \"Validate data and fix quality issues\", \"Analyze business trends and share insights with managers\", \"Maintain databases and troubleshoot reporting issues\", \"Automate recurring reports to save time\", \"Coordinate with teams to understand their reporting needs\"],\n      qual: [\"Bachelor's degree in Computer Science, IT, Business Administration, Statistics or a related field\", \"1\u20133 years of experience in MIS reporting or data analysis (strong recent graduates may apply)\", \"Advanced MS Excel skills, including Pivot Tables and VLOOKUP\", \"Working knowledge of SQL and databases\", \"Familiarity with Power BI or Tableau\", \"Strong analytical and problem-solving skills\", \"Attention to detail and good communication skills\"] },\n    { id: \"ui-ux-designer\", group: \"Design\", title: \"UI\/UX Designer\", match: [\"ui-ux\", \"ux-ui-designer\", \"ux-designer\", \"ui-designer\", \"product-designer\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 0\u20132 years experience\",\n      summary: \"We're looking for a UI\/UX Designer to create simple, intuitive and attractive experiences for our users. You'll take ideas from research to wireframes, prototypes and final designs, working closely with product and engineering.\",\n      resp: [\"Understand user needs through research, interviews and usability testing\", \"Create user flows, wireframes and interactive prototypes\", \"Design clean, consistent interfaces for web and mobile\", \"Build and maintain a design system and UI components\", \"Work with developers to make sure designs are built as intended\", \"Improve designs based on user feedback and data\", \"Present design ideas and decisions to stakeholders\"],\n      qual: [\"Bachelor's degree in Design, HCI or a related field, or equivalent experience\", \"0\u20132 years of UI\/UX design experience (internships count)\", \"Proficiency in Figma (or Adobe XD \/ Sketch)\", \"Understanding of user-centered design, typography and layout\", \"Basic knowledge of accessibility and responsive design\", \"A portfolio showing your design process and final work\", \"Good communication and collaboration skills\"] },\n    { id: \"graphic-designer\", group: \"Design\", title: \"Graphic Designer\", match: [\"visual-designer\", \"creative-designer\", \"graphic-design\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 0\u20132 years experience\",\n      summary: \"We're looking for a Graphic Designer to create engaging visuals for our brand across digital and print. You'll turn ideas into designs that communicate clearly and look great, from social posts to full campaigns.\",\n      resp: [\"Create visual designs for social media, websites, ads and campaigns\", \"Design marketing materials such as banners, brochures and presentations\", \"Develop graphics, illustrations, icons and layouts\", \"Maintain brand guidelines and visual consistency\", \"Work with marketing and content teams to understand requirements\", \"Prepare final files for digital and print use\", \"Take feedback and revise designs within deadlines\"],\n      qual: [\"Bachelor's degree or diploma in Graphic Design, Fine Arts or a related field\", \"0\u20132 years of graphic design experience (internships count)\", \"Proficiency in Adobe Photoshop, Illustrator and InDesign, or Canva\/Figma\", \"Strong sense of layout, typography and color\", \"Basic video editing or motion graphics skills are a plus\", \"A strong portfolio of design work\", \"Ability to manage multiple projects and deadlines\"] },\n    { id: \"digital-marketing-executive\", group: \"Marketing & content\", title: \"Digital Marketing Executive\", match: [\"digital-marketing\", \"digital-marketing-specialist\", \"digital-marketing-associate\", \"digital-marketer\", \"performance-marketing-executive\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 0\u20132 years experience\",\n      summary: \"We're looking for a Digital Marketing Executive to plan and run online campaigns that grow our brand, traffic and leads. You'll work across SEO, social media, email and paid ads, and track what works.\",\n      resp: [\"Plan and run digital campaigns across search, social media and email\", \"Manage paid campaigns on Google Ads and Meta Ads\", \"Create and schedule content for social media channels\", \"Support SEO efforts to improve website traffic and rankings\", \"Track campaign performance with Google Analytics and other tools\", \"Prepare reports on key metrics and suggest improvements\", \"Coordinate with design and content teams on campaign assets\", \"Research competitors and market trends\"],\n      qual: [\"Bachelor's degree in Marketing, Business, Communications or a related field\", \"0\u20132 years of digital marketing experience (internships count)\", \"Working knowledge of SEO, social media and email marketing\", \"Hands-on experience with Google Ads, Meta Ads Manager or similar platforms\", \"Familiarity with Google Analytics and Google Search Console\", \"Good written communication and analytical skills\", \"A digital marketing certification is a plus\"] },\n    { id: \"seo-executive\", group: \"Marketing & content\", title: \"SEO Executive\", match: [\"seo-specialist\", \"seo-analyst\", \"seo-associate\", \"seo-expert\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 0\u20132 years experience\",\n      summary: \"We're looking for an SEO Executive to improve our website's visibility in search and grow organic traffic. You'll handle keyword research, on-page and technical SEO, and work with content and tech teams to rank for the terms that matter.\",\n      resp: [\"Conduct keyword research and map keywords to pages\", \"Optimize page titles, meta descriptions, headings and content\", \"Run technical SEO audits and fix issues such as crawl errors and slow pages\", \"Plan content with writers based on search intent\", \"Build quality backlinks through outreach and partnerships\", \"Track rankings, traffic and conversions in Google Analytics and Search Console\", \"Monitor algorithm updates and search trends, including AI search features\", \"Prepare regular SEO performance reports\"],\n      qual: [\"Bachelor's degree in Marketing, Communications, IT or a related field\", \"0\u20132 years of SEO experience (internships count)\", \"Good understanding of on-page, off-page and technical SEO\", \"Hands-on experience with tools such as Ahrefs, Semrush, Screaming Frog and Search Console\", \"Basic knowledge of HTML and WordPress\", \"Strong analytical skills and attention to detail\", \"Good written English\"] },\n    { id: \"content-writer\", group: \"Marketing & content\", title: \"Content Writer\", match: [\"content-writing\", \"seo-content-writer\", \"web-content-writer\", \"blog-writer\", \"article-writer\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 0\u20132 years experience\",\n      summary: \"We're looking for a Content Writer to create clear, engaging and well-researched content for our website, blog and marketing channels. You'll write for real readers while following SEO best practices.\",\n      resp: [\"Research topics and write blogs, articles, web pages and product content\", \"Write SEO-friendly content that uses target keywords naturally\", \"Edit and proofread content for accuracy, clarity and grammar\", \"Follow the brand's tone of voice and style guidelines\", \"Write copy for social media, emails and marketing campaigns\", \"Update and improve existing content based on performance\", \"Work with SEO, design and marketing teams to meet deadlines\"],\n      qual: [\"Bachelor's degree in English, Journalism, Mass Communication, Marketing or a related field\", \"0\u20132 years of content writing experience (internships count)\", \"Excellent written English and strong grammar\", \"Understanding of SEO basics and keyword usage\", \"Ability to research and simplify complex topics\", \"Familiarity with WordPress or other CMS tools\", \"A portfolio of published writing samples\"] },\n    { id: \"hr-executive\", group: \"Business & HR\", title: \"HR Executive\", match: [\"human-resources-executive\", \"hr-generalist\", \"hr-associate\", \"hr-officer\", \"hr-recruiter\", \"recruiter\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 0\u20132 years experience\",\n      summary: \"We're looking for an HR Executive to support our people operations, from hiring to onboarding and employee engagement. You'll help build a workplace where people can do their best work.\",\n      resp: [\"Manage end-to-end recruitment: job posts, resume screening and interview scheduling\", \"Coordinate onboarding and induction for new hires\", \"Maintain employee records and HR databases\", \"Support payroll, attendance and leave management\", \"Answer employee questions about HR policies and benefits\", \"Plan and run employee engagement activities\", \"Ensure compliance with labor laws and company policies\", \"Assist with performance review processes\"],\n      qual: [\"Bachelor's or Master's degree in Human Resources, Business Administration or a related field\", \"0\u20132 years of HR experience (internships count)\", \"Understanding of recruitment processes and HR practices\", \"Basic knowledge of labor laws\", \"Proficiency in MS Excel and HR software (HRMS)\", \"Strong communication and interpersonal skills\", \"Ability to handle confidential information with discretion\"] },\n    { id: \"sales-executive\", group: \"Business & HR\", title: \"Sales Executive\", match: [\"sales-associate\", \"sales-representative\", \"sales-officer\", \"field-sales-executive\", \"inside-sales-executive\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 0\u20132 years experience\",\n      summary: \"We're looking for a Sales Executive to find new customers, build strong relationships and help us grow revenue. You'll own your pipeline from first contact to closing the deal.\",\n      resp: [\"Find and reach out to potential customers through calls, emails and meetings\", \"Understand customer needs and present the right products or services\", \"Prepare quotes, negotiate terms and close sales\", \"Meet or exceed monthly and quarterly sales targets\", \"Keep customer records and pipeline updates current in the CRM\", \"Build long-term relationships with existing clients\", \"Share customer feedback and market insights with the team\"],\n      qual: [\"Bachelor's degree in Business, Marketing or a related field\", \"0\u20132 years of sales experience (freshers with strong communication skills welcome)\", \"Excellent communication, negotiation and persuasion skills\", \"Target-driven with a positive attitude\", \"Basic knowledge of MS Office and CRM tools\", \"Fluency in English and [regional language]\", \"Willingness to travel if required\"] },\n    { id: \"business-development-executive\", group: \"Business & HR\", title: \"Business Development Executive\", match: [\"bde\", \"business-development-associate\", \"business-development\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 0\u20132 years experience\",\n      summary: \"We're looking for a Business Development Executive to find new growth opportunities and build partnerships. You'll generate leads, pitch to prospective clients and help turn opportunities into long-term business.\",\n      resp: [\"Research markets and identify new business opportunities\", \"Generate leads through calls, emails, LinkedIn and networking\", \"Pitch products or services and give presentations to prospects\", \"Build and maintain relationships with clients and partners\", \"Prepare proposals and negotiate deals\", \"Track leads, deals and follow-ups in the CRM\", \"Work with marketing and sales teams to meet growth targets\"],\n      qual: [\"Bachelor's degree in Business, Marketing or a related field (MBA is a plus)\", \"0\u20132 years of business development or sales experience (internships count)\", \"Strong communication and presentation skills\", \"Good research and negotiation skills\", \"Comfortable with MS Office, Google Workspace and CRM tools\", \"Self-motivated and target-oriented\"] },\n    { id: \"customer-support-executive\", group: \"Business & HR\", title: \"Customer Support Executive\", match: [\"customer-service-executive\", \"customer-care-executive\", \"customer-support-associate\", \"customer-service-representative\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 0\u20132 years experience\",\n      summary: \"We're looking for a Customer Support Executive to help our customers quickly and kindly. You'll resolve queries over phone, email and chat, and make sure every customer leaves with a good experience.\",\n      resp: [\"Respond to customer queries over phone, email and chat\", \"Troubleshoot issues and guide customers to solutions\", \"Log tickets and track them until they are resolved\", \"Escalate complex issues to the right teams\", \"Keep accurate records of customer interactions\", \"Share common customer issues and feedback with the product team\", \"Meet response-time and customer satisfaction targets\"],\n      qual: [\"Bachelor's degree in any field\", \"0\u20132 years of customer support experience (freshers welcome)\", \"Excellent verbal and written communication skills\", \"Patience, empathy and a problem-solving attitude\", \"Basic computer skills and familiarity with helpdesk tools such as Freshdesk or Zendesk\", \"Ability to work in shifts if required\"] },\n    { id: \"hr-intern\", group: \"Business & HR\", title: \"HR Intern\", match: [\"human-resources-intern\", \"hr-internship\"],\n      details: \"Internship \u00b7 [Location] \u00b7 [Duration]\",\n      summary: \"We're looking for an HR Intern to support our hiring and people operations. You'll get hands-on experience in recruitment, onboarding and employee engagement while working closely with the HR team.\",\n      resp: [\"Screen resumes and shortlist candidates\", \"Schedule interviews and communicate with applicants\", \"Assist with onboarding and joining formalities for new hires\", \"Maintain and update employee records and HR data\", \"Help with background and reference checks\", \"Support employee engagement activities and events\", \"Assist the HR team with day-to-day tasks\"],\n      qual: [\"Pursuing or recently completed a bachelor's or master's degree in HR, Business Administration or a related field\", \"No prior experience required; earlier HR internships are a plus\", \"Good communication and interpersonal skills\", \"Organized and detail-oriented\", \"Proficiency in MS Office or Google Workspace\", \"Basic understanding of recruitment and HR practices\", \"Available for [duration] at [hours] hours per week\"],\n      ben: [\"Stipend of [amount] per month\", \"Certificate of completion\", \"Letter of recommendation\", \"Hands-on learning and mentorship\"] },\n    { id: \"telecaller\", group: \"Business & HR\", title: \"Telecaller\", match: [\"telecalling-executive\", \"telecalling\", \"tele-caller\", \"telesales-executive\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 Freshers welcome\",\n      summary: \"We're looking for a Telecaller to connect with potential and existing customers over the phone. You'll explain our products or services, answer questions, follow up on leads and help the sales team meet its targets.\",\n      resp: [\"Make outbound calls to potential customers and explain our products or services\", \"Answer inbound calls and resolve customer questions\", \"Follow up on leads and schedule appointments or demos\", \"Build and maintain good relationships with customers\", \"Meet daily call and monthly sales targets\", \"Update customer details and call outcomes in the CRM\", \"Share customer feedback with the sales and support teams\"],\n      qual: [\"12th pass or a graduate in any field\", \"Freshers welcome; telecalling or sales experience is a plus\", \"Excellent verbal communication skills in English and [regional language]\", \"Good listening skills and a polite, persuasive manner\", \"Basic computer skills and familiarity with CRM tools\", \"Ability to stay calm and positive in a fast-paced, target-driven role\", \"Good time management\"] },\n    { id: \"data-entry-operator\", group: \"Operations & finance\", title: \"Data Entry Operator\", match: [\"data-entry\", \"data-entry-clerk\", \"data-entry-executive\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 0\u20132 years experience\",\n      summary: \"We're looking for a Data Entry Operator to enter, update and maintain accurate records in our systems. You'll work with large volumes of information, so speed, accuracy and care with confidential data matter most.\",\n      resp: [\"Enter and update data in company databases and spreadsheets\", \"Verify records for accuracy and correct errors or missing information\", \"Prepare and sort source documents before data entry\", \"Generate simple reports using Excel or Google Sheets\", \"Organize and maintain digital and physical files\", \"Keep sensitive information confidential and follow data policies\", \"Meet daily and weekly data entry targets\"],\n      qual: [\"Bachelor's degree in any discipline\", \"Freshers welcome; 0\u20132 years of data entry experience preferred\", \"Typing speed of at least [X] words per minute with high accuracy\", \"Good knowledge of MS Excel and MS Office\", \"Strong attention to detail\", \"Good organizational and time management skills\", \"Basic knowledge of databases is a plus\"] },\n    { id: \"back-office-executive\", group: \"Operations & finance\", title: \"Back Office Executive\", match: [\"back-office\", \"backoffice-executive\", \"back-office-assistant\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 1\u20133 years experience\",\n      summary: \"We're looking for a Back Office Executive to keep our day-to-day operations running smoothly behind the scenes. You'll manage data, documents and reports, and support the front office and other teams with accurate, timely information.\",\n      resp: [\"Enter, update and verify data in company databases\", \"Process transactions and maintain accurate records\", \"Prepare daily, weekly and monthly MIS reports\", \"Maintain documents for compliance and audits\", \"Coordinate with front office and other teams to process requests\", \"Follow up on pending tasks and resolve data discrepancies\", \"Organize digital files according to documentation standards\", \"Handle confidential information securely\"],\n      qual: [\"Bachelor's degree in Commerce, Business Administration or a related field\", \"1\u20133 years of experience in a back office, data entry or administrative role\", \"Proficiency in MS Excel and the MS Office suite\", \"High accuracy in data entry\", \"Good written and verbal communication skills\", \"Strong time management and ability to meet deadlines\", \"Familiarity with financial documents and basic database tools is a plus\"] },\n    { id: \"computer-operator\", group: \"Operations & finance\", title: \"Computer Operator\", match: [\"computer-operators\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 1\u20132 years experience\",\n      summary: \"We're looking for a Computer Operator to handle day-to-day computer-based work, from data entry and record keeping to basic troubleshooting. You'll help teams keep information accurate, organized and secure.\",\n      resp: [\"Enter, update, verify and maintain data in company systems\", \"Prepare documents, spreadsheets and reports as required\", \"Help colleagues with basic computer, printer and software issues\", \"Take regular backups and keep digital records organized\", \"Handle confidential information securely\", \"Follow company procedures for data entry, documentation and system access\", \"Coordinate with departments on computer-based administrative tasks\", \"Keep computer equipment and the work area in good order\"],\n      qual: [\"Diploma or bachelor's degree in Computer Science, IT, Computer Applications or a related field\", \"1\u20132 years of experience in computer operations, data entry or a similar role\", \"Proficiency in MS Word, Excel and PowerPoint\", \"Good typing speed and accuracy\", \"Basic knowledge of computer hardware, software and troubleshooting\", \"Familiarity with email, internet and record management tools\", \"Attention to detail and ability to work independently\"] },\n    { id: \"accountant\", group: \"Operations & finance\", title: \"Accountant\", match: [\"junior-accountant\", \"accounts-executive\", \"accounts-assistant\"],\n      details: \"Full-time \u00b7 [Location] \u00b7 1\u20133 years experience\",\n      summary: \"We're looking for an Accountant to manage our day-to-day accounting and keep our financial records accurate and up to date. You'll handle transactions, reconciliations and reports, and support monthly and yearly closing.\",\n      resp: [\"Record and maintain daily financial transactions\", \"Prepare and review invoices, payments and expense records\", \"Perform regular bank and account reconciliations\", \"Prepare financial reports and accounting summaries\", \"Assist with monthly and annual closing activities\", \"Support GST, TDS and other statutory filings\", \"Coordinate with auditors and provide the documents they need\"],\n      qual: [\"Bachelor's degree in Accounting, Finance, Commerce or a related field\", \"1\u20133 years of accounting experience\", \"Proficiency in accounting software such as Tally, Zoho Books, QuickBooks or SAP\", \"Advanced MS Excel skills\", \"Knowledge of accounting standards and tax rules, including GST and TDS\", \"Strong attention to detail and accuracy\", \"Good analytical, communication and organizational skills\"] },\n    { id: \"blank\", group: \"Other\", title: \"\", label: \"Other role (start blank)\", match: [],\n      details: \"Full-time \u00b7 [Location] \u00b7 [Experience]\", summary: \"\", resp: [], qual: [] }\n  ];\n  var ROLE_FIELDS = [\"jobTitle\", \"details\", \"roleText\", \"respList\", \"qualList\"];\n  var KEEP_ON_CLEAR = [\"aboutHeading\", \"roleHeading\", \"respHeading\", \"qualHeading\", \"benHeading\", \"applyHeading\", \"accent\", \"font\"];\n  function byId(id) { for (var i = 0; ROLES.length > i; i++) if (ROLES[i].id === id) return ROLES[i]; return null; }\n  function roleValues(id) {\n    var r = byId(id) || byId(DEFAULT_ROLE);\n    return { jobTitle: r.title, details: r.details, roleText: r.summary, respList: r.resp.join(NL), qualList: r.qual.join(NL) };\n  }\n  function benFor(id) { var r = byId(id); return r && r.ben ? r.ben.join(NL) : COMMON.benList; }\n  function toSlug(s) { return String(s || \"\").toLowerCase().replace(\/&\/g, \" and \").replace(\/[^a-z0-9]+\/g, \"-\").replace(\/^-+|-+$\/g, \"\"); }\n  \/* Finds the role whose name appears in the text as whole words; the longest match wins. *\/\n  function matchRole(text) {\n    var t = \"-\" + toSlug(text) + \"-\", best = null, bestLen = 0;\n    ROLES.forEach(function (r) {\n      if (r.id === \"blank\") return;\n      [r.id].concat(r.match || []).forEach(function (a) {\n        if (t.indexOf(\"-\" + a + \"-\") > -1 && a.length > bestLen) { best = r.id; bestLen = a.length; }\n      });\n    });\n    return best;\n  }\n  function pickRole() {\n    var q = \/[?&]jdrole=([^&#]+)\/.exec(window.location.search);\n    if (q && byId(decodeURIComponent(q[1]))) return decodeURIComponent(q[1]);\n    var attr = String(root.getAttribute(\"data-role\") || \"auto\").trim();\n    if (attr && attr !== \"auto\" && byId(attr)) return attr;\n    var parts = window.location.pathname.split(\"\/\").filter(Boolean);\n    var h1 = document.querySelector(\"h1\");\n    return matchRole(parts[parts.length - 1] || \"\") || matchRole(document.title) || (h1 && matchRole(h1.textContent)) || DEFAULT_ROLE;\n  }\n  var currentRole = DEFAULT_ROLE;\n  var state = {};\n  var logoData = '';\n  var $ = function (sel) { return root.querySelector(sel); };\n  var $$ = function (sel) { return Array.prototype.slice.call(root.querySelectorAll(sel)); };\n  var sheets = $$('.cwjd-sheet'), sheet = sheets[0], stage = $('#cwjd-stage'), scaler = $('#cwjd-scale');\n  var uid = 'j' + Math.random().toString(36).slice(2, 10);\n  sheets.forEach(function (sh, n) { sh.setAttribute('data-cwjd-uid', uid + n); });\n  var currentDesign = 'classic';\n  var statusEl = $('#cwjd-status');\n  var cta = $('#cwjd-cta'), downloaded = false;\n  function postSlug() {\n    var parts = window.location.pathname.split('\/').filter(Boolean);\n    return toSlug(parts[parts.length - 1] || '') || 'blog';\n  }\n  \/* Sends a usage event to Google Analytics 4 (gtag) or Google Tag Manager (dataLayer), whichever the site has. *\/\n  function track(name, extra) {\n    var p = { jd_role: currentRole, jd_design: currentDesign, jd_post: postSlug() }, k;\n    if (extra) { for (k in extra) p[k] = extra[k]; }\n    try {\n      if (typeof window.gtag === 'function') window.gtag('event', name, p);\n      else if (window.dataLayer && typeof window.dataLayer.push === 'function') { var d = { event: name }; for (k in p) d[k] = p[k]; window.dataLayer.push(d); }\n    } catch (e1) {}\n    try { root.dispatchEvent(new CustomEvent('cwjd:track', { bubbles: true, detail: { name: name, params: p } })); } catch (e2) {}\n  }\n  \/* The \"Post this job\" link: the address from data-cta-url plus tracking tags, so sign-ups can be traced to this tool and post. *\/\n  function tagUrl(base, medium) {\n    var hash = '', at = base.indexOf('#');\n    if (at > -1) { hash = base.slice(at); base = base.slice(0, at); }\n    var add = [];\n    if (base.indexOf('utm_source=') === -1) add.push('utm_source=is_blog');\n    if (base.indexOf('utm_medium=') === -1) add.push('utm_medium=' + medium);\n    if (base.indexOf('utm_campaign=') === -1) add.push('utm_campaign=' + encodeURIComponent(postSlug()));\n    if (base.indexOf('utm_content=') === -1) add.push('utm_content=' + encodeURIComponent(currentRole));\n    return base + (add.length ? (base.indexOf('?') > -1 ? '&' : '?') + add.join('&') : '') + hash;\n  }\n  function ctaUrl() { return tagUrl(String(root.getAttribute('data-cta-url') || '').trim() || 'https:\/\/internshala.com\/hire-talent', 'jd_builder'); }\n  function updateCta() { cta.href = ctaUrl(); }\n  \/* Keeps a copy of the finished job description in this browser, so the job-posting form on the same site can pre-fill from it. *\/\n  function saveDraft() {\n    try {\n      window.localStorage.setItem('is_jd_builder_draft', JSON.stringify({\n        v: 1, savedAt: new Date().toISOString(), source: window.location.href, role: currentRole, design: currentDesign,\n        company: state.companyName || '', title: state.jobTitle || '', details: state.details || '', about: state.aboutText || '', summary: state.roleText || '',\n        responsibilities: lines(state.respList), qualifications: lines(state.qualList), benefits: lines(state.benList), applyContact: state.applyContact || ''\n      }));\n    } catch (e) {}\n  }\n  cta.addEventListener('click', function () {\n    saveDraft();\n    track('jd_builder_cta_click', { jd_cta_state: downloaded ? 'after_download' : 'before_download' });\n  });\n  function copy(obj) { var o = {}; for (var k in obj) o[k] = obj[k]; return o; }\n  function lines(text) {\n    return String(text || '').split(NL).map(function (l) {\n      return l.trim().replace(\/^(?:[\u2022\u00b7\u25aa\u25e6]|[*-](?=[ ])|[0-9]+[.)](?=[ ]))\/, '').trim();\n    }).filter(Boolean);\n  }\n  function fillList(el, items) {\n    el.textContent = '';\n    items.forEach(function (item) {\n      var row = document.createElement('div'); row.className = 'cw-li';\n      var box = document.createElement('span'); box.className = 'cw-dotbox';\n      var dot = document.createElement('span'); dot.className = 'cw-dot'; box.appendChild(dot);\n      var txt = document.createElement('span'); txt.textContent = item;\n      row.appendChild(box); row.appendChild(txt); el.appendChild(row);\n    });\n  }\n  function hexToRgb(hex) {\n    var m = \/^#?([0-9a-f]{6})$\/i.exec(String(hex).trim());\n    if (!m) return null;\n    var n = parseInt(m[1], 16);\n    return [(n >> 16) & 255, (n >> 8) & 255, n & 255];\n  }\n  function lum(rgb) {\n    var c = rgb.map(function (v) { v \/= 255; return 0.03928 >= v ? v \/ 12.92 : Math.pow((v + 0.055) \/ 1.055, 2.4); });\n    return 0.2126 * c[0] + 0.7152 * c[1] + 0.0722 * c[2];\n  }\n  function contrast(a, b) { var la = lum(a), lb = lum(b); return (Math.max(la, lb) + 0.05) \/ (Math.min(la, lb) + 0.05); }\n  function applyColor() {\n    var rgb = hexToRgb(state.accent) || hexToRgb('#0f5e5a');\n    var paper = [246, 244, 239];\n    scaler.style.setProperty('--cw-accent', state.accent);\n    scaler.style.setProperty('--cw-on', contrast(rgb, [255, 255, 255]) >= 4.5 ? '#ffffff' : '#1d1d1b');\n    scaler.style.setProperty('--cw-head', contrast(rgb, paper) >= 3 ? state.accent : '#1d1d1b');\n    root.style.setProperty('--ui-accent', contrast(rgb, [255, 255, 255]) >= 3 ? state.accent : '#1d1d1b');\n    $$('.cwjd-swatch').forEach(function (b) { b.setAttribute('aria-pressed', b.getAttribute('data-color').toLowerCase() === String(state.accent).toLowerCase() ? 'true' : 'false'); });\n    var picker = $('#cwjd-color'); if (picker.value.toLowerCase() !== String(state.accent).toLowerCase()) picker.value = state.accent;\n  }\n  function has(key) { return String(state[key] || '').trim() !== ''; }\n  function filled(key) { return \/List$\/.test(key) ? lines(state[key]).length > 0 : has(key); }\n  function render() {\n    $$('[data-out]').forEach(function (el) {\n      var key = el.getAttribute('data-out');\n      var val = String(state[key] || '').trim();\n      var ph = el.getAttribute('data-ph');\n      el.textContent = val || ph || '';\n      el.classList.toggle('cw-ph', !val && !!ph);\n    });\n    $$('[data-hide-empty]').forEach(function (el) { el.hidden = !filled(el.getAttribute('data-hide-empty')); });\n    $$('[data-list]').forEach(function (el) {\n      var items = lines(state[el.getAttribute('data-list')]), half = el.getAttribute('data-half');\n      if (!half) { fillList(el, items); return; }\n      var two = items.length > 5, cut = two ? Math.ceil(items.length \/ 2) : items.length;\n      if (half === 'a') fillList(el, items.slice(0, cut));\n      else { fillList(el, items.slice(cut)); el.hidden = !two; }\n    });\n    $$('[data-two]').forEach(function (el) { el.classList.toggle('cw-single', !(lines(state[el.getAttribute('data-two')]).length > 5)); });\n    $$('[data-pair]').forEach(function (el) {\n      var ks = el.getAttribute('data-pair').split(' '), a = filled(ks[0]), b = filled(ks[1]);\n      el.classList.toggle('cw-single', !(a && b));\n      el.hidden = !a && !b;\n    });\n    scaler.setAttribute('data-font', state.font === 'sans' ? 'sans' : 'serif');\n    $$('.cw-logo').forEach(function (img) {\n      if (logoData) { img.src = logoData; img.alt = (state.companyName || 'Company') + ' logo'; img.hidden = false; }\n      else { img.removeAttribute('src'); img.hidden = true; }\n    });\n    $('#cwjd-logo-remove').hidden = !logoData;\n    applyColor();\n    fit();\n  }\n  function fillForm() {\n    $$('[data-field]').forEach(function (el) { el.value = state[el.getAttribute('data-field')] || ''; });\n  }\n  function loadAny(list, test) {\n    var n = 0;\n    function next() { if (n >= list.length) return Promise.reject(new Error('lib')); return load(list[n++], test).catch(next); }\n    return next();\n  }\n  function load(src, test) {\n    if (test()) return Promise.resolve();\n    return new Promise(function (resolve, reject) {\n      var s = document.createElement('script');\n      s.src = src; s.async = true;\n      s.onload = function () { test() ? resolve() : reject(new Error('lib')); };\n      s.onerror = function () { s.parentNode && s.parentNode.removeChild(s); reject(new Error('net')); };\n      document.head.appendChild(s);\n    });\n  }\n  var app = root.querySelector('.cwjd-app'), col = $('#cwjd-previewcol'), form = root.querySelector('.cwjd-form');\n  var expanded = false, head = 0, mode = '', pinKey = '';\n  \/* Height of the bars that stay at the top of the window (admin bar, sticky site menu), measured as they sit once\n     stuck, so the preview can stay in view just below them. Measured on load, on resize and after scrolling stops,\n     never during scrolling, so scrolling stays smooth. *\/\n  function measureHead() {\n    if (!document.elementsFromPoint) return 0;\n    var off = 0, vw = window.innerWidth || 1200;\n    var x = Math.max(2, Math.round(root.getBoundingClientRect().left + 4));\n    for (var y = 2; 360 > y; y += 14) {\n      var stack = document.elementsFromPoint(x, y), el = null;\n      for (var i = 0; stack.length > i; i++) { if (!root.contains(stack[i])) { el = stack[i]; break; } }\n      while (el && el !== document.body && el !== document.documentElement) {\n        var cs = window.getComputedStyle(el);\n        if (cs.position === 'fixed' || cs.position === 'sticky') {\n          var r = el.getBoundingClientRect();\n          if (r.width > vw * 0.5 && 260 > r.height && r.height > 0) {\n            if (cs.position === 'fixed' && 200 > r.top && r.top > -5) off = Math.max(off, r.bottom);\n            if (cs.position === 'sticky') { var t = parseFloat(cs.top); if (!isNaN(t) && 200 > t) off = Math.max(off, t + r.height); }\n          }\n          break;\n        }\n        el = el.parentElement;\n      }\n    }\n    return Math.round(off);\n  }\n  \/* The browser's own sticky positioning is the smoothest, but a theme wrapper with overflow set blocks it. *\/\n  function stickyWorks() {\n    var el = root.parentElement;\n    while (el && el !== document.body && el !== document.documentElement) {\n      var cs = window.getComputedStyle(el), o = cs.overflowX + ' ' + cs.overflowY;\n      if (o.indexOf('hidden') > -1 || o.indexOf('auto') > -1 || o.indexOf('scroll') > -1) return false;\n      el = el.parentElement;\n    }\n    return true;\n  }\n  function applyHead() { root.style.setProperty('--cwjd-top', (head + 12) + 'px'); }\n  function fit() {\n    if (pinKey) clearPin();\n    var cs = window.getComputedStyle(col);\n    var width = (col.clientWidth - parseFloat(cs.paddingLeft || 0) - parseFloat(cs.paddingRight || 0)) || 1080;\n    var s = Math.min(1, width \/ 1080);\n    var h = sheet.offsetHeight;\n    if (!expanded && root.classList.contains('cwjd-wide')) {\n      var chrome = col.offsetHeight - stage.offsetHeight;\n      var room = (window.innerHeight || 900) - (head + 12) - chrome - 16;\n      s = Math.min(s, Math.max(0.22, room \/ h));\n    }\n    scaler.style.transform = 'scale(' + s + ')';\n    stage.style.width = Math.floor(1080 * s) + 'px';\n    stage.style.height = Math.ceil(h * s) + 'px';\n    pin();\n  }\n  \/* Backup for themes that block sticky: the preview switches between three states (in place, fixed to the window,\n     parked at the bottom of the builder). In the fixed state the browser itself holds it still, so scrolling stays smooth. *\/\n  function clearPin() { col.style.position = ''; col.style.top = ''; col.style.left = ''; col.style.width = ''; col.style.zIndex = ''; pinKey = ''; }\n  function pin() {\n    if (expanded || mode !== 'fixed' || !root.classList.contains('cwjd-wide')) { if (pinKey) clearPin(); return; }\n    var a = app.getBoundingClientRect(), f = form.getBoundingClientRect();\n    var line = head + 12, h = col.offsetHeight;\n    var gap = parseFloat(window.getComputedStyle(app).columnGap) || 24;\n    var left = Math.round(f.right + gap), width = Math.round(a.right - left);\n    var state = a.top >= line ? 'top' : (a.bottom - h >= line ? 'fixed' : 'bottom');\n    var key = state === 'top' ? '' : state + '|' + left + '|' + width + '|' + line + '|' + (state === 'bottom' ? Math.round(a.height - h) + '|' + Math.round(left - a.left) : '');\n    if (key === pinKey) return;\n    if (!key) { clearPin(); return; }\n    col.style.width = width + 'px';\n    col.style.zIndex = '5';\n    if (state === 'fixed') { col.style.position = 'fixed'; col.style.top = line + 'px'; col.style.left = left + 'px'; }\n    else { col.style.position = 'absolute'; col.style.top = Math.round(a.height - h) + 'px'; col.style.left = Math.round(left - a.left) + 'px'; }\n    pinKey = key;\n  }\n  var settleTimer = null;\n  function onScroll() {\n    if (mode === 'fixed') pin();\n    if (settleTimer) clearTimeout(settleTimer);\n    settleTimer = setTimeout(function () {\n      var h2 = measureHead();\n      if (Math.abs(h2 - head) > 4) { head = h2; applyHead(); fit(); }\n    }, 300);\n  }\n  var lastWidth = -1;\n  function layout() {\n    var w = root.clientWidth;\n    if (w !== lastWidth) {\n      lastWidth = w;\n      root.classList.toggle('cwjd-wide', w >= 680);\n      mode = stickyWorks() ? 'sticky' : 'fixed';\n      root.classList.toggle('cwjd-sticky', mode === 'sticky');\n      head = measureHead();\n      applyHead();\n    }\n    fit();\n  }\n  var zoomBtn = $('#cwjd-zoom'), zoomLabel = $('#cwjd-zoom-label'), savedOverflow = '';\n  function onKey(e) { if (e.key === 'Escape' || e.key === 'Esc') setExpanded(false); }\n  function setExpanded(on) {\n    if (on === expanded) return;\n    expanded = on;\n    root.classList.toggle('cwjd-expanded', on);\n    zoomBtn.setAttribute('aria-expanded', on ? 'true' : 'false');\n    zoomLabel.textContent = on ? 'Close preview' : 'Enlarge';\n    if (on) {\n      savedOverflow = document.documentElement.style.overflow;\n      document.documentElement.style.overflow = 'hidden';\n      document.addEventListener('keydown', onKey);\n      col.scrollTop = 0;\n    } else {\n      document.documentElement.style.overflow = savedOverflow;\n      document.removeEventListener('keydown', onKey);\n    }\n    fit();\n    zoomBtn.focus();\n  }\n  zoomBtn.addEventListener('click', function () { setExpanded(!expanded); });\n  stage.addEventListener('click', function () { if (!expanded) setExpanded(true); });\n  function slug() {\n    var s = ((state.jobTitle || '').trim() || 'job') + ' job description';\n    return s.toLowerCase().replace(\/[^a-z0-9]+\/g, '-').replace(\/^-+|-+$\/g, '') || 'job-description';\n  }\n  function setStatus(msg, isErr) { statusEl.textContent = msg; statusEl.classList.toggle('cwjd-err', !!isErr); }\n  function capture() {\n    var fontsReady = (document.fonts && document.fonts.ready) ? document.fonts.ready : Promise.resolve();\n    var guard = null;\n    function unguard() { if (guard && guard.parentNode) guard.parentNode.removeChild(guard); guard = null; }\n    return load(H2C, function () { return !!window.html2canvas; }).then(function () { return fontsReady; }).then(function () {\n      \/* Themes often style every image tag (borders, display:block). html2canvas measures text with a hidden probe image,\n         so neutralize those styles on the probe while the file is being made, then remove this style again. *\/\n      guard = document.createElement('style');\n      guard.textContent = 'body>div[style*=\"visibility: hidden\"]>img,body>div[style*=\"visibility: hidden\"]>span{border:0 !important;display:inline !important;width:1px;height:1px;max-width:none !important;min-width:0 !important;box-shadow:none !important;float:none !important;position:static !important}body>div[style*=\"visibility: hidden\"]>span{width:auto;height:auto;line-height:inherit}';\n      document.head.appendChild(guard);\n      return window.html2canvas(sheet, {\n        scale: 2, backgroundColor: PAPER[currentDesign] || '#ffffff', useCORS: true, logging: false, windowWidth: 1400,\n        onclone: function (doc) {\n          var cs = doc.querySelector('[data-cwjd-uid=\"' + sheet.getAttribute('data-cwjd-uid') + '\"]');\n          var rt = cs && cs.closest ? cs.closest('.cwjd') : null;\n          if (!rt) return;\n          rt.classList.remove('cwjd-expanded');\n          var pc = rt.querySelector('.cwjd-previewcol');\n          if (pc) { pc.style.transform = 'none'; pc.style.position = 'static'; pc.style.width = 'auto'; }\n          var sc = rt.querySelector('.cwjd-scale'), st = rt.querySelector('.cwjd-stage');\n          if (sc) { sc.style.transform = 'none'; sc.style.position = 'static'; sc.style.left = '0'; }\n          if (st) { st.style.height = 'auto'; st.style.width = '1080px'; st.style.maxWidth = 'none'; st.style.overflow = 'visible'; }\n        }\n      });\n    }).then(function (c) { unguard(); return c; }, function (e) { unguard(); throw e; });\n  }\n  function saveBlob(blob, name) {\n    var url = URL.createObjectURL(blob);\n    var a = document.createElement('a');\n    a.href = url; a.download = name; a.style.display = 'none';\n    document.body.appendChild(a); a.click();\n    setTimeout(function () { URL.revokeObjectURL(url); a.parentNode && a.parentNode.removeChild(a); }, 1500);\n  }\n  var busy = false, edited = false;\n  var fmtSel = $('#cwjd-format'), dlBtn = $('#cwjd-download');\n  function run(fmt, work) {\n    if (busy) return;\n    busy = true;\n    dlBtn.disabled = true; fmtSel.disabled = true;\n    setStatus('Preparing your file\u2026');\n    work().then(function () {\n      setStatus('Done. Check your downloads folder.');\n      track('jd_builder_download', { jd_format: fmt });\n      if (!downloaded) {\n        downloaded = true;\n        cta.classList.add('cwjd-cta-hot');\n        $('#cwjd-cta-lead').textContent = 'Your JD is ready.';\n        $('#cwjd-cta-strong').textContent = 'Post this job on Internshala for free';\n        fit();\n      }\n    }).catch(function (err) {\n      if (window.console && console.error) console.error('Job description builder:', err);\n      setStatus(\"Sorry, the download couldn't be prepared. Please check your connection and try again.\", true);\n    }).then(function () {\n      busy = false;\n      dlBtn.disabled = false; fmtSel.disabled = false;\n    });\n  }\n  function makePng() {\n    return capture().then(function (canvas) {\n      return new Promise(function (resolve, reject) {\n        if (canvas.toBlob) canvas.toBlob(function (blob) { blob ? (saveBlob(blob, slug() + '.png'), resolve()) : reject(new Error('blob')); }, 'image\/png');\n        else { var a = document.createElement('a'); a.href = canvas.toDataURL('image\/png'); a.download = slug() + '.png'; a.click(); resolve(); }\n      });\n    });\n  }\n  function makePdf() {\n    return load(JSPDF, function () { return !!(window.jspdf && window.jspdf.jsPDF); }).then(capture).then(function (canvas) {\n      var w = 595.28, h = w * canvas.height \/ canvas.width;\n      var pdf = new window.jspdf.jsPDF({ orientation: 'portrait', unit: 'pt', format: [w, h], compress: true });\n      pdf.addImage(canvas.toDataURL('image\/jpeg', 0.95), 'JPEG', 0, 0, w, h);\n      pdf.save(slug() + '.pdf');\n    });\n  }\n  \/* Word needs PNG or JPG pictures, so any logo (including SVG and WebP) is redrawn as a PNG first. *\/\n  function logoPng() {\n    if (!logoData) return Promise.resolve(null);\n    return new Promise(function (resolve) {\n      var im = new Image();\n      im.onload = function () {\n        try {\n          var w = im.naturalWidth || 240, h = im.naturalHeight || 80, k = Math.min(1, 640 \/ w, 320 \/ h);\n          var c = document.createElement('canvas');\n          c.width = Math.max(1, Math.round(w * k)); c.height = Math.max(1, Math.round(h * k));\n          c.getContext('2d').drawImage(im, 0, 0, c.width, c.height);\n          c.toBlob(function (b) {\n            if (!b) { resolve(null); return; }\n            b.arrayBuffer().then(function (buf) { resolve({ data: new Uint8Array(buf), w: c.width, h: c.height }); }, function () { resolve(null); });\n          }, 'image\/png');\n        } catch (e) { resolve(null); }\n      };\n      im.onerror = function () { resolve(null); };\n      im.src = logoData;\n    });\n  }\n  \/* Builds an editable Word document from the same content: headings in the brand color, real bullet lists. *\/\n  function makeDocx() {\n    return loadAny(DOCX_SRC, function () { return !!(window.docx && window.docx.Document && window.docx.Packer); }).then(logoPng).then(function (logo) {\n      var D = window.docx;\n      var rgb = hexToRgb(state.accent) || [15, 94, 90];\n      var accent = String(state.accent || '').replace('#', '').toUpperCase();\n      if (accent.length !== 6) accent = '0F5E5A';\n      var headCol = contrast(rgb, [255, 255, 255]) >= 3 ? accent : '1D1D1B';\n      var display = state.font === 'sans' ? 'Calibri' : 'Georgia';\n      var kids = [];\n      function val(key, fallback) { return String(state[key] || '').trim() || fallback || ''; }\n      function tx(text, o) {\n        o = o || {};\n        return new D.TextRun({ text: text, bold: !!o.bold, size: o.size || 22, color: o.color || '1D1D1B', font: o.font || 'Calibri', allCaps: !!o.caps, characterSpacing: o.track || 0 });\n      }\n      function para(runs, o) {\n        o = o || {};\n        var p = { children: runs, spacing: { before: o.before || 0, after: o.after == null ? 120 : o.after } };\n        if (!o.plain) { p.spacing.line = 288; p.spacing.lineRule = D.LineRuleType.AUTO; }\n        if (o.bullet) p.bullet = { level: 0 };\n        if (o.border) p.border = o.border;\n        if (o.keepNext) p.keepNext = true;\n        return new D.Paragraph(p);\n      }\n      function heading(key) { var t = val(key); if (t) kids.push(para([tx(t, { bold: true, size: 28, color: headCol, font: display })], { before: 280, after: 100, keepNext: true, plain: true })); }\n      function block(key) { val(key).split(NL).forEach(function (l) { if (l.trim()) kids.push(para([tx(l.trim())])); }); }\n      function bullets(key) { lines(state[key]).forEach(function (l) { kids.push(para([tx(l)], { bullet: true, after: 40 })); }); }\n      if (logo) {\n        var k = Math.min(1, 170 \/ logo.w, 52 \/ logo.h);\n        kids.push(para([new D.ImageRun({ data: logo.data, transformation: { width: Math.max(1, Math.round(logo.w * k)), height: Math.max(1, Math.round(logo.h * k)) } })], { after: 160, plain: true }));\n      }\n      var top = [tx(val('companyName', '[Company name]'), { bold: true, size: 20, color: headCol, caps: true, track: 40 })];\n      if (val('badge')) top.push(tx('   |   ' + val('badge'), { size: 20, color: '5C5A54', caps: true, track: 40 }));\n      kids.push(para(top, { after: 200 }));\n      kids.push(para([tx(val('jobTitle', '[Job title]'), { bold: true, size: 60, font: display })], { after: 100, plain: true }));\n      kids.push(para(val('details') ? [tx(val('details'), { size: 24, color: '4A4944' })] : [], { after: 200, border: { bottom: { color: accent, space: 12, style: D.BorderStyle.SINGLE, size: 12 } } }));\n      if (val('aboutText')) { heading('aboutHeading'); block('aboutText'); }\n      if (val('roleText')) { heading('roleHeading'); block('roleText'); }\n      if (lines(state.respList).length) { heading('respHeading'); bullets('respList'); }\n      if (lines(state.qualList).length) { heading('qualHeading'); bullets('qualList'); }\n      if (lines(state.benList).length) { heading('benHeading'); bullets('benList'); }\n      heading('applyHeading');\n      var apply = [];\n      if (val('applyText')) apply.push(tx(val('applyText') + ' '));\n      apply.push(tx(val('applyContact', '[Your email or job link]'), { bold: true, color: headCol }));\n      kids.push(para(apply));\n      var doc = new D.Document({\n        creator: val('companyName', 'Job description builder'),\n        title: val('jobTitle', 'Job') + ' job description',\n        styles: { default: { document: { run: { font: 'Calibri', size: 22 } } } },\n        sections: [{ properties: { page: { margin: { top: 900, right: 1150, bottom: 900, left: 1150 } } }, children: kids }]\n      });\n      return D.Packer.toBlob(doc).then(function (blob) { saveBlob(blob, slug() + '.docx'); });\n    });\n  }\n  \/* ---- Sign-up step before download ----\n     Clicking Download first asks the site whether the visitor is already signed in as an employer (it opens\n     data-login-check, default \/employer\/dashboard, in the background: signed-out visitors get the login form there).\n     Signed-in employers download straight away. Everyone else sees a box with the site's own sign-up options, which open\n     in a small window; the download starts as soon as the site confirms the sign-in, and the window is closed.\n     A browser that has completed this once is remembered, so returning employers download straight away. *\/\n  var gate = $('#cwjd-gate'), gateStatusEl = $('#cwjd-gate-status'), gateDone = $('#cwjd-gate-done'), gateLink = $('#cwjd-gate-open');\n  var gateWin = null, gateTimer = null, gateFmt = 'pdf', gateMethod = '', gateShown = false, gateOverflow = '';\n  var gateHref = '', lastProbe = 0, probing = null, confirmClicks = 0;\n  var GATE_KEY = 'is_jd_builder_gate', GATE_DAYS = 30;\n  function attr(name, fallback) { return String(root.getAttribute(name) || '').trim() || fallback; }\n  function gateParam() { var q = \/[?&]jdgate=([^&#]+)\/.exec(window.location.search); return q ? q[1] : ''; }\n  \/* 'signup' (create an Internshala account), 'form' (fill in details that go to a Google Sheet) or 'off'. *\/\n  function gateMode() {\n    var v = gateParam();\n    if (v !== 'on' && v !== 'signup' && v !== 'form') v = attr('data-gate', 'off');\n    if (v === 'on') v = 'signup';\n    return v === 'signup' || v === 'form' ? v : 'off';\n  }\n  function gateOn() { return gateMode() !== 'off'; }\n  function cookieSaysIn() {\n    var n = attr('data-login-cookie', '');\n    return !!n && ('; ' + document.cookie + ';').indexOf('; ' + n + '=') > -1;\n  }\n  function gatePassed() {\n    try {\n      var t = parseInt(window.localStorage.getItem(GATE_KEY) || '0', 10), age = Date.now() - t;\n      if (t > 0 && age >= 0 && GATE_DAYS * 86400000 > age) return true;\n    } catch (e) {}\n    return cookieSaysIn();\n  }\n  function gateRemember() { try { window.localStorage.setItem(GATE_KEY, String(Date.now())); } catch (e) {} }\n  \/* Asks the site whether this browser is signed in as an employer. Resolves true (signed in), false (not signed in)\n     or null (could not tell, e.g. offline). Signed-out visitors get a login form (a password box or a Google login link). *\/\n  function checkSignedIn() {\n    if (probing) return probing;\n    if (cookieSaysIn()) return Promise.resolve(true);\n    if (!window.fetch) return Promise.resolve(null);\n    lastProbe = Date.now();\n    probing = window.fetch(attr('data-login-check', '\/employer\/dashboard'), { credentials: 'same-origin', cache: 'no-store' }).then(function (res) {\n      if (!res.ok) return null;\n      var path = '';\n      try { path = new URL(res.url, window.location.href).pathname; } catch (e) {}\n      return res.text().then(function (html) {\n        var loginForm = html.indexOf('type=\"password\"') > -1 || html.indexOf(\"type='password'\") > -1 || html.indexOf('type=password') > -1 || html.indexOf('login\/get_google') > -1;\n        return !loginForm && path.indexOf('\/employer') === 0;\n      });\n    }).then(function (v) { probing = null; return v; }, function () { probing = null; return null; });\n    return probing;\n  }\n  function gateStatus(msg) { gateStatusEl.textContent = msg || ''; }\n  function gateFallback(msg, withLink) {\n    if (msg) gateStatus(msg);\n    gateLink.hidden = !withLink;\n    if (attr('data-gate-fallback', 'on') !== 'off' || withLink) gateDone.hidden = false;\n    $('#cwjd-gate-continue').hidden = attr('data-gate-fallback', 'on') === 'off';\n  }\n  function gateStopWatch() { if (gateTimer) { clearInterval(gateTimer); gateTimer = null; } }\n  \/* Re-checks the sign-in now (soon=true) or at most every 8 seconds; finishes the download when it is confirmed. *\/\n  function gateVerify(soon) {\n    if (!gateShown) return Promise.resolve(false);\n    if (!soon && 8000 > Date.now() - lastProbe) return Promise.resolve(false);\n    return checkSignedIn().then(function (v) {\n      if (v === true && gateShown) gateSuccess('verified');\n      return v;\n    });\n  }\n  \/* Watches the sign-up window. Each time it moves to a new page on this site (for example after the Google step or after\n     the form is sent), the sign-in is checked. Pages on other sites, such as Google's, cannot be read and are skipped. *\/\n  function gateTick() {\n    if (!gateShown) return;\n    if (cookieSaysIn()) { gateSuccess('cookie'); return; }\n    if (!gateWin) { gateVerify(false); return; }\n    var closed = true;\n    try { closed = !!gateWin.closed; } catch (e) { closed = true; }\n    if (closed) {\n      gateWin = null; gateStopWatch();\n      gateStatus('Checking your sign-in\u2026');\n      gateVerify(true).then(function (v) { if (gateShown && v !== true) gateFallback('The sign-up window was closed before sign-in finished.', false); });\n      return;\n    }\n    var href = '';\n    try { var loc = gateWin.location; if (loc && loc.origin === window.location.origin) href = String(loc.href); } catch (e2) {}\n    if (href && href !== gateHref) { gateHref = href; setTimeout(function () { gateVerify(true); }, 400); return; }\n    gateVerify(false);\n  }\n  function gateKeys(e) {\n    if (e.key === 'Escape' || e.key === 'Esc') { closeGate(true); return; }\n    if (e.key !== 'Tab') return;\n    var items = Array.prototype.slice.call(gate.querySelectorAll('button, a[href], input:not([tabindex])')).filter(function (el) { return el.offsetParent !== null; });\n    if (!items.length) return;\n    var first = items[0], last = items[items.length - 1];\n    if (e.shiftKey && document.activeElement === first) { e.preventDefault(); last.focus(); }\n    else if (!e.shiftKey && document.activeElement === last) { e.preventDefault(); first.focus(); }\n  }\n  function onGateFocus() {\n    if (!gateShown || !gateMethod) return;\n    gateVerify(true).then(function (v) { if (gateShown && v !== true && !gateWin) gateFallback('', !gateLink.hidden); });\n  }\n  function onGateMessage(e) {\n    if (!gateShown || e.origin !== window.location.origin) return;\n    if (e.data && e.data.cwjd === 'signed-in') gateSuccess('message');\n  }\n  function openGate(fmt) {\n    gateFmt = fmt; gateMethod = ''; gateShown = true; gateHref = ''; confirmClicks = 0;\n    gateStatus(''); gateDone.hidden = true; gateLink.hidden = true;\n    gate.hidden = false;\n    gateOverflow = document.documentElement.style.overflow;\n    document.documentElement.style.overflow = 'hidden';\n    document.addEventListener('keydown', gateKeys);\n    window.addEventListener('focus', onGateFocus);\n    window.addEventListener('message', onGateMessage);\n    var formMode = gateMode() === 'form';\n    $('#cwjd-gate-signup').hidden = formMode;\n    gateForm.hidden = !formMode;\n    gateFormErr('');\n    $('#cwjd-gate-title').textContent = formMode ? 'Get your job description' : 'Sign up free to download your job description';\n    $('#cwjd-gate-sub').textContent = formMode ? 'Fill in a few details and your download starts right away.' : 'Create your free Internshala employer account to download this JD, then post the job to reach candidates.';\n    $('#cwjd-gate-login-lead').textContent = formMode ? 'Already registered on Internshala?' : 'Already have an account?';\n    $('#cwjd-gate-terms-lead').textContent = formMode ? 'By submitting, you agree to be contacted by Internshala about hiring and to our' : 'By signing up, you agree to our';\n    if (formMode) {\n      if (!gateForm.elements.company.value.trim()) gateForm.elements.company.value = String(state.companyName || '').trim();\n      gateForm.elements.first_name.focus();\n    } else { $('#cwjd-gate-google').focus(); }\n    track('jd_builder_gate_open', { jd_format: fmt, jd_gate: formMode ? 'form' : 'signup' });\n  }\n  function closeGate(byUser) {\n    if (!gateShown) return;\n    gateShown = false;\n    gateStopWatch();\n    gate.hidden = true;\n    document.documentElement.style.overflow = gateOverflow;\n    document.removeEventListener('keydown', gateKeys);\n    window.removeEventListener('focus', onGateFocus);\n    window.removeEventListener('message', onGateMessage);\n    if (byUser) { track('jd_builder_gate_close', { jd_signup_started: gateMethod || 'no' }); dlBtn.focus(); }\n  }\n  function gateSuccess(how) {\n    if (!gateShown) return;\n    var w = gateWin; gateWin = null;\n    gateRemember();\n    try { if (w && !w.closed) w.close(); } catch (e) {}\n    closeGate(false);\n    track('jd_builder_signup_complete', { jd_method: gateMethod || 'unknown', jd_detect: how, jd_format: gateFmt });\n    startDownload(gateFmt);\n  }\n  function gateUrl(method) {\n    var base = method === 'google' ? attr('data-google-url', 'https:\/\/internshala.com\/login\/get_google\/employer\/employer%2Fdashboard')\n      : (method === 'login' ? attr('data-login-url', 'https:\/\/internshala.com\/login\/employer') : attr('data-cta-url', 'https:\/\/internshala.com\/hire-talent'));\n    return tagUrl(base, 'jd_builder_download');\n  }\n  function gateGo(method) {\n    var url = gateUrl(method);\n    gateMethod = method; gateHref = '';\n    saveDraft();\n    track('jd_builder_signup_click', { jd_method: method });\n    var wpx = 520, hpx = 720, sw = (window.screen && window.screen.width) || 1280, sh = (window.screen && window.screen.height) || 800;\n    var feat = 'width=' + wpx + ',height=' + hpx + ',left=' + Math.max(0, Math.round((sw - wpx) \/ 2)) + ',top=' + Math.max(0, Math.round((sh - hpx) \/ 2));\n    gateStopWatch();\n    try { gateWin = window.open(url, 'is_jd_signup', feat); } catch (e) { gateWin = null; }\n    if (!gateWin) {\n      gateLink.href = url;\n      gateFallback('Your browser blocked the sign-up window. Open it in a new tab, sign in, then come back here.', true);\n      gateTimer = setInterval(gateTick, 1000);\n      return;\n    }\n    try { gateWin.focus(); } catch (e3) {}\n    gateDone.hidden = true;\n    gateStatus('Finish signing in in the window that just opened. Your download will start here automatically.');\n    gateTimer = setInterval(gateTick, 600);\n  }\n  $('#cwjd-gate-google').addEventListener('click', function () { gateGo('google'); });\n  $('#cwjd-gate-email').addEventListener('click', function () { gateGo('email'); });\n  $('#cwjd-gate-login').addEventListener('click', function () { gateGo('login'); });\n  $('#cwjd-gate-close').addEventListener('click', function () { closeGate(true); });\n  \/* \"I've signed in\": checks with the site first. If the site can't be reached, or the visitor clicks a second time,\n     the download goes ahead, so nobody is ever left stuck. *\/\n  $('#cwjd-gate-continue').addEventListener('click', function () {\n    var btn = this;\n    confirmClicks++;\n    btn.disabled = true;\n    gateStatus('Checking your sign-in\u2026');\n    checkSignedIn().then(function (v) {\n      btn.disabled = false;\n      if (v === true) gateSuccess('verified');\n      else if (v === null || confirmClicks >= 2) gateSuccess('unverified');\n      else gateStatus(\"We can't see a sign-in yet. Finish signing in, then click the button again.\");\n    });\n  });\n  gateLink.addEventListener('click', function () { gateMethod = gateMethod || 'email'; });\n  gate.addEventListener('mousedown', function (e) { if (e.target === gate) closeGate(true); });\n  if (gateParam() === 'reset') { try { window.localStorage.removeItem(GATE_KEY); } catch (e) {} }\n  \/* ---- Details form (data-gate=\"form\") ----\n     Sends the details to the address in data-lead-url (a Google Apps Script web app that adds a row to a Google Sheet),\n     then starts the download. The download never waits more than 4 seconds for the sheet, and still happens if it fails. *\/\n  var gateForm = $('#cwjd-gate-form'), gateFormErrEl = $('#cwjd-gate-ferr');\n  function gateFormErr(msg, field) {\n    gateFormErrEl.textContent = msg || '';\n    Array.prototype.forEach.call(gateForm.querySelectorAll('input'), function (el) { el.removeAttribute('aria-invalid'); });\n    if (field) { field.setAttribute('aria-invalid', 'true'); field.focus(); }\n  }\n  function leadValues() {\n    var f = gateForm.elements;\n    return {\n      first_name: f.first_name.value.trim(), last_name: f.last_name.value.trim(), email: f.email.value.trim(),\n      mobile: f.mobile.value.replace(\/[^0-9]\/g, ''), company: f.company.value.trim(), website: f.website.value\n    };\n  }\n  function leadProblem(v) {\n    var f = gateForm.elements;\n    if (!v.first_name) return ['Please enter your first name.', f.first_name];\n    if (!v.last_name) return ['Please enter your last name.', f.last_name];\n    if (!\/^[^ @]+@[^ @]+[.][^ @]+$\/.test(v.email)) return ['Please enter a valid email address.', f.email];\n    if (v.mobile.length === 12 && v.mobile.indexOf('91') === 0) v.mobile = v.mobile.slice(2);\n    if (v.mobile.length === 11 && v.mobile.charAt(0) === '0') v.mobile = v.mobile.slice(1);\n    if (v.mobile.length !== 10) return ['Please enter a 10-digit mobile number.', f.mobile];\n    if (!v.company) return ['Please enter your company name.', f.company];\n    return null;\n  }\n  function sendLead(v) {\n    var url = attr('data-lead-url', '');\n    if (!url || !window.fetch || !window.URLSearchParams) {\n      if (!url && window.console && console.warn) console.warn('Job description builder: data-lead-url is not set, so form details are not being saved.');\n      return Promise.resolve('no');\n    }\n    var body = new URLSearchParams();\n    body.append('first_name', v.first_name); body.append('last_name', v.last_name); body.append('email', v.email);\n    body.append('mobile', '+91 ' + v.mobile); body.append('company', v.company); body.append('website', v.website);\n    body.append('job_role', currentRole); body.append('template', currentDesign); body.append('format', gateFmt);\n    body.append('blog_post', postSlug()); body.append('page_url', window.location.origin + window.location.pathname);\n    var sent = window.fetch(url, { method: 'POST', mode: 'no-cors', body: body, keepalive: true }).then(function () { return 'yes'; }, function () { return 'no'; });\n    var slow = new Promise(function (resolve) { setTimeout(function () { resolve('slow'); }, 4000); });\n    return Promise.race([sent, slow]);\n  }\n  gateForm.addEventListener('submit', function (e) {\n    e.preventDefault();\n    var v = leadValues(), problem = leadProblem(v);\n    if (problem) { gateFormErr(problem[0], problem[1]); return; }\n    gateFormErr('');\n    var btn = $('#cwjd-gate-submit');\n    btn.disabled = true;\n    gateStatus('Preparing your download\u2026');\n    if (v.website) { gateMethod = 'form'; gateSuccess('form'); btn.disabled = false; return; }\n    sendLead(v).then(function (result) {\n      btn.disabled = false;\n      gateStatus('');\n      track('jd_builder_lead_submit', { jd_lead_saved: result });\n      gateMethod = 'form';\n      gateSuccess('form');\n    });\n  });\n  function startDownload(f) { run(f, f === 'pdf' ? makePdf : (f === 'docx' ? makeDocx : makePng)); }\n  dlBtn.addEventListener('click', function () {\n    var f = fmtSel.value;\n    if (!gateOn() || gatePassed()) { startDownload(f); return; }\n    if (busy) return;\n    dlBtn.disabled = true;\n    setStatus('Checking your sign-in\u2026');\n    checkSignedIn().then(function (v) {\n      dlBtn.disabled = false;\n      setStatus('');\n      if (v === true) { gateRemember(); track('jd_builder_already_signed_in', { jd_format: f }); startDownload(f); }\n      else openGate(f);\n    });\n  });\n  $$('[data-field]').forEach(function (el) {\n    el.addEventListener('input', function () {\n      state[el.getAttribute('data-field')] = el.value; render();\n      if (!edited) { edited = true; track('jd_builder_edit', { jd_field: el.getAttribute('data-field') }); }\n    });\n    el.addEventListener('change', function () { state[el.getAttribute('data-field')] = el.value; render(); });\n  });\n  $$('.cwjd-swatch').forEach(function (b) {\n    b.addEventListener('click', function () { state.accent = b.getAttribute('data-color'); render(); });\n  });\n  $('#cwjd-color').addEventListener('input', function () { state.accent = this.value; render(); });\n  $('#cwjd-logo').addEventListener('change', function () {\n    var file = this.files && this.files[0];\n    if (!file) return;\n    if (['image\/png', 'image\/jpeg', 'image\/webp', 'image\/svg+xml'].indexOf(file.type) === -1) { setStatus('Please choose a PNG, JPG, WebP or SVG image.', true); this.value = ''; return; }\n    if (file.size > 3 * 1024 * 1024) { setStatus('That logo is over 3 MB. Please use a smaller file.', true); this.value = ''; return; }\n    var reader = new FileReader();\n    reader.onload = function () { logoData = String(reader.result); setStatus(''); render(); };\n    reader.readAsDataURL(file);\n  });\n  $('#cwjd-logo-remove').addEventListener('click', function () { logoData = ''; $('#cwjd-logo').value = ''; render(); });\n  var designSel = $('#cwjd-design');\n  function pickDesign() {\n    var q = \/[?&]jddesign=([^&#]+)\/.exec(window.location.search);\n    if (q && DESIGNS.indexOf(decodeURIComponent(q[1])) > -1) return decodeURIComponent(q[1]);\n    var attr = String(root.getAttribute('data-design') || '').trim();\n    return DESIGNS.indexOf(attr) > -1 ? attr : 'classic';\n  }\n  function setDesign(id) {\n    currentDesign = DESIGNS.indexOf(id) > -1 ? id : 'classic';\n    sheets.forEach(function (sh) {\n      var on = sh.getAttribute('data-design') === currentDesign;\n      sh.hidden = !on;\n      if (on) sheet = sh;\n    });\n    designSel.value = currentDesign;\n    fit();\n  }\n  designSel.addEventListener('change', function () {\n    var from = currentDesign;\n    setDesign(designSel.value);\n    track('jd_builder_design_change', { jd_from_design: from });\n  });\n  var roleSel = $('#cwjd-role');\n  (function buildRoleOptions() {\n    var groups = {};\n    ROLES.forEach(function (r) {\n      if (!groups[r.group]) { groups[r.group] = document.createElement('optgroup'); groups[r.group].label = r.group; roleSel.appendChild(groups[r.group]); }\n      var o = document.createElement('option'); o.value = r.id; o.textContent = r.label || r.title; groups[r.group].appendChild(o);\n    });\n  })();\n  function roleEdited() {\n    var base = roleValues(currentRole);\n    return ROLE_FIELDS.some(function (k) { return String(state[k] || '').trim() !== String(base[k] || '').trim(); });\n  }\n  function applyRole(id) {\n    var vals = roleValues(id), ben = String(state.benList || '').trim();\n    var benUntouched = ben === benFor(currentRole).trim() || ben === COMMON.benList.trim();\n    currentRole = byId(id) ? id : DEFAULT_ROLE;\n    ROLE_FIELDS.forEach(function (k) { state[k] = vals[k]; });\n    if (benUntouched) state.benList = benFor(currentRole);\n    roleSel.value = currentRole;\n    fillForm(); setStatus(''); render(); updateCta();\n  }\n  roleSel.addEventListener('change', function () {\n    var next = roleSel.value, r = byId(next);\n    if (roleEdited() && !window.confirm('Switch to the ' + (r.label || r.title) + ' template? This replaces the job title, details, role summary, responsibilities and qualifications you edited. Your company details stay.')) {\n      roleSel.value = currentRole; return;\n    }\n    var from = currentRole;\n    applyRole(next);\n    track('jd_builder_role_change', { jd_from_role: from });\n  });\n  $('#cwjd-reset').addEventListener('click', function () {\n    if (!window.confirm('Reset every field back to the original template? Your changes will be lost.')) return;\n    state = copy(COMMON); logoData = ''; $('#cwjd-logo').value = ''; applyRole(currentRole);\n  });\n  $('#cwjd-clear').addEventListener('click', function () {\n    var next = {}, all = copy(COMMON);\n    ROLE_FIELDS.forEach(function (k) { all[k] = ''; });\n    for (var k in all) next[k] = KEEP_ON_CLEAR.indexOf(k) > -1 ? state[k] : '';\n    state = next; fillForm(); setStatus(''); render();\n  });\n  if (window.name === 'is_jd_signup' && window.opener) { try { window.opener.postMessage({ cwjd: 'signed-in' }, window.location.origin); } catch (e) {} }\n  state = copy(COMMON);\n  var initial = roleValues(pickRole());\n  currentRole = pickRole();\n  ROLE_FIELDS.forEach(function (k) { state[k] = initial[k]; });\n  state.benList = benFor(currentRole);\n  roleSel.value = currentRole;\n  fillForm();\n  updateCta();\n  render();\n  setDesign(pickDesign());\n  layout();\n  \/* Counts a view once, the first time the builder actually scrolls into sight. *\/\n  if (window.IntersectionObserver) {\n    var seen = new IntersectionObserver(function (entries) {\n      for (var i = 0; entries.length > i; i++) {\n        if (entries[i].isIntersecting) { seen.disconnect(); track('jd_builder_view'); break; }\n      }\n    }, { threshold: 0.5 });\n    seen.observe(root.querySelector('.cwjd-formhead') || root);\n  } else { track('jd_builder_view'); }\n  if (window.ResizeObserver) {\n    new ResizeObserver(layout).observe(root);\n    var sheetWatch = new ResizeObserver(function () { fit(); });\n    sheets.forEach(function (sh) { sheetWatch.observe(sh); });\n  }\n  window.addEventListener('resize', layout);\n  window.addEventListener('scroll', onScroll, { passive: true });\n  if (document.fonts && document.fonts.ready) document.fonts.ready.then(fit);\n  }\n})();\n<\/script>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Sample_Computer_Operator_Job_Description\"><\/span>Sample Computer Operator Job Description<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The following sample shows how employers can turn the components above into a complete computer operator job description. The example includes the computer operator responsibilities, qualifications, technical skills, soft skills, salary and benefits, and application instructions needed for a standard full-time role:&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>About the Company<\/strong><br><br>XYZ Solutions is a business support and technology services company that provides data management, administrative support, and digital solutions to organizations across different industries. Our team helps clients maintain accurate records, efficient workflows, and reliable computer-based operations. We value accuracy, teamwork, accountability, and continuous learning.<br><br><strong>Job Title: <\/strong>Computer Operator<br><br><strong>Job Overview: <\/strong>We are seeking a reliable, detail-oriented Computer Operator to join our operations team. The selected candidate will operate computer systems, enter and maintain data, organize digital records, prepare reports, and monitor routine computer operations. The ideal candidate should have good knowledge of computer applications, strong attention to detail, and the ability to manage data accurately while meeting deadlines.<br><br><strong>Key Responsibilities<\/strong><br><br>Enter, update, verify, and maintain company data in relevant systems<br>Assist employees with basic computer and application-related issues<br>Ensure that confidential company information is handled securely<br>Follow company procedures for data entry, documentation, and system access<br>Coordinate with other departments to complete computer-based administrative tasks<br>Keep assigned computer equipment and work areas organized<br><br><strong>Educational Qualifications and Work Experience Required<\/strong><br><br>Diploma, bachelor&#8217;s degree, or equivalent qualification in Computer Science, Information Technology, Computer Applications, or a related field&nbsp;<br>1-2 years of experience in computer operations, data entry, administration, or a similar role<br>Experience working with Microsoft Office applications<br>Relevant computer certification or training is preferred<br><br><strong>Technical Skills<\/strong><br><br>Proficiency in Microsoft Word, Excel, and PowerPoint<br>Good typing and data entry skills<br>Basic knowledge of computer hardware and software<br>Familiarity with databases and digital record management<br>Basic troubleshooting skills<br>Familiarity with email and online communication tools<br><br><strong>Soft Skills<\/strong><br><br>Strong attention to detail<br>Good written and verbal communication skills<br>Strong organizational and time management skills<br>Ability to work independently and with minimal supervision<br>Good <a href=\"https:\/\/internshala.com\/blog\/problem-solving-skills\/\" target=\"_blank\" rel=\"noreferrer noopener\">problem-solving skills<\/a><br>Ability to handle repetitive tasks accurately<br>Strong teamwork and collaboration skills<br>Willingness to learn new software and systems<br><br><strong>Salary and Benefits<\/strong><br><br>Competitive salary based on qualifications and experience<br>Health insurance<br>Paid time off<br>Performance-based incentives&#8217;<br>Professional training and development opportunities<br>Career growth opportunities<br><br><strong>How to Apply: <\/strong>Interested candidates can submit their updated resume and relevant certifications to careers@abceesolutions.com with the subject line \u2018Application for Computer Operator\u2019. Please include details of your relevant computer operations or data management experience. Shortlisted candidates will be contacted for the next stage of the recruitment process.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Computer_Operator_Job_Description_Essential_Components\"><\/span>Computer Operator Job Description: Essential Components<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>A well-written computer operator <a href=\"https:\/\/internshala.com\/blog\/what-is-job-description\/\" target=\"_blank\" rel=\"noreferrer noopener\">job description<\/a> should clearly explain the role, daily duties, required qualifications, and skills candidates need to perform the job effectively. A structured description also provides candidates with enough information to determine whether the position aligns with their experience and career goals. When preparing a JD for a computer operator, include the following essential components:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Company Overview<\/h3>\n\n\n\n<p>The company overview introduces your organization and gives candidates some context about the workplace they may join. Keep this section brief and focus on information that helps candidates understand your business, work environment, and values. You can include:<\/p>\n\n\n\n<ul>\n<li>A brief introduction to the organization<\/li>\n\n\n\n<li>The products or services your company provides or builds<\/li>\n\n\n\n<li>The industry or sector in which you operate<\/li>\n\n\n\n<li>Your company\u2019s mission and values<\/li>\n\n\n\n<li>The size or location of the organization, where relevant<\/li>\n\n\n\n<li>Information about the team or department the computer operator will join<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Sample:&nbsp;<\/strong><br>ABC Technologies is an IT services company providing computer support, data management, and digital solutions to businesses across India. We value accuracy, teamwork, data security, and continuous learning.&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">2. Job Title<\/h3>\n\n\n\n<p>The job title should clearly state the role being advertised. Use a simple, commonly recognized title so candidates can understand the role at a glance. If the job has a specific focus, you can make the title more descriptive. For example, you may use Data Entry and Computer Operator or Computer Operations Assistant, depending on the actual duties involved.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Sample:<\/strong><br><strong>Job Title:<\/strong> Computer Operator<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">3. Job Overview<\/h3>\n\n\n\n<p>Summarize the purpose of the role in two or three sentences. Mention the main responsibilities, team, and systems the employee will work with.&nbsp; A strong job overview can mention the following:<\/p>\n\n\n\n<ul>\n<li>Primary purpose of the role<\/li>\n\n\n\n<li>Department or team the computer operator will work with<\/li>\n\n\n\n<li>Main systems or software they may handle<\/li>\n\n\n\n<li>Level of experience expected<\/li>\n\n\n\n<li>Type of support the role provides to daily operations<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Sample:<\/strong><br>ABC Technologies is looking for a detail-oriented Computer Operator to support its daily computer and data processing operations. The selected candidate will enter and maintain data, manage digital records, run routine computer operations, prepare reports, and report technical issues when required. The role will work closely with the administration and IT teams.&nbsp;<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">4. Job Roles &amp; Responsibilities<\/h3>\n\n\n\n<p>This is one of the most important sections of the JD. List the tasks the employee will actually perform rather than using broad statements such as \u2018manage computer operations.\u2019 Based on the role, computer operator duties may include:<\/p>\n\n\n\n<ul>\n<li>Monitor and operate computer systems in accordance with established procedures<\/li>\n\n\n\n<li>Enter, update, and process data accurately using computer systems<\/li>\n\n\n\n<li>Maintain digital files, records, and databases<\/li>\n\n\n\n<li>Run scheduled programs, reports, and routine system operations<\/li>\n\n\n\n<li>Monitor systems for errors, interruptions, or unusual activity<\/li>\n\n\n\n<li>Perform regular data backups and maintain backup records<\/li>\n\n\n\n<li>Check computer equipment and report hardware or software problems<\/li>\n\n\n\n<li>Install or update basic software and applications when required<\/li>\n\n\n\n<li>Prepare and maintain computer-generated reports<\/li>\n\n\n\n<li>Organize and retrieve digital records when requested<\/li>\n\n\n\n<li>Follow data security and confidentiality procedures<\/li>\n\n\n\n<li>Assist employees with basic computer-related issues<\/li>\n\n\n\n<li>Coordinate with IT staff when technical problems require further support<\/li>\n\n\n\n<li>Maintain accurate records of system activities and completed tasks<\/li>\n\n\n\n<li>Follow company policies for computer use, data handling, and system access<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5. Education &amp; Work Experience Required<\/h3>\n\n\n\n<p>Set requirements according to the complexity of the job role. Avoid making a degree or prior experience mandatory if candidates with relevant training and computer skills can reasonably perform the role. You can include the following requirements in the computer operator job description:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Educational Qualifications<\/strong><br><br>Diploma or bachelor\u2019s degree in Computer Science, Information Technology, Computer Applications, or a related field<br>Certification in computer applications or office productivity tools is an advantage<br>Relevant computer training or vocational certification may be considered for entry-level positions<br><br><strong>Work Experience Required&nbsp;<\/strong><br><br>Previous experience as a computer operator, data entry operator, or in a similar role<br>Experience with computer systems, databases, or digital records<br>Experience in data entry or routine computer operations<br>Relevant internships, training, or projects for entry-level roles<br>Freshers may be considered for positions that do not require prior experience<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">6. Technical Skills<\/h3>\n\n\n\n<p>List the important technical skills required for the computer operator role. Avoid adding advanced IT skills such as programming, network administration, or software development unless those tasks are genuinely part of the role.<\/p>\n\n\n\n<p>Some of the key skills that you should look for in a candidate are:<\/p>\n\n\n\n<ul>\n<li>Microsoft Word and Excel<\/li>\n\n\n\n<li>Data entry and typing<\/li>\n\n\n\n<li>Basic database management<\/li>\n\n\n\n<li>Digital file and record management<\/li>\n\n\n\n<li>Windows or Linux operating systems, where applicable<\/li>\n\n\n\n<li>Basic hardware and software troubleshooting<\/li>\n\n\n\n<li>Data backup procedures<\/li>\n\n\n\n<li>Email and online communication tools<\/li>\n\n\n\n<li>Organization-specific software<\/li>\n\n\n\n<li>Ability to identify and report basic system errors<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7. Soft Skills<\/h3>\n\n\n\n<p>Computer operators need more than technical knowledge to perform their responsibilities effectively. Since the role often involves handling data, following procedures, and supporting other employees, include <a href=\"https:\/\/internshala.com\/blog\/what-are-soft-skills-and-how-to-develop-them\/\">soft skills<\/a> that align with the position&#8217;s day-to-day requirements.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Sample soft skills include:<br><\/strong><br>Strong attention to detail.<br>Good communication skills.<br>Accuracy in data entry and record-keeping.<br>Good time management skills.<br>Ability to follow instructions and established procedures.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">8. Salary and Benefits<\/h3>\n\n\n\n<p>The salary and <a href=\"https:\/\/internshala.com\/blog\/employee-benefits\/\" target=\"_blank\" rel=\"noreferrer noopener\">employee benefits<\/a> section provides candidates with information about the compensation package offered for the computer operator role. Providing a salary range can help set clear expectations and attract candidates whose requirements match the position.<\/p>\n\n\n\n<p>Depending on your organization, you can include:<\/p>\n\n\n\n<ul>\n<li>Monthly or annual salary range<\/li>\n\n\n\n<li>Performance-based incentives<\/li>\n\n\n\n<li>Health insurance<\/li>\n\n\n\n<li>Paid leave<\/li>\n\n\n\n<li>Retirement or provident fund benefits<\/li>\n\n\n\n<li>Flexible or remote work options, where applicable<\/li>\n\n\n\n<li>Training and professional development opportunities<\/li>\n\n\n\n<li>Employee discounts or other company-specific benefits<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Sample:<\/strong><br>Salary: \u20b915,000 to \u20b925,000 per month, depending on experience and skills.<br>Performance-based incentives.<br>Health insurance.<br>Paid leave.<br>Training and professional development opportunities.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">9. How to Apply<\/h3>\n\n\n\n<p>The final section should explain how interested candidates can apply for the computer operator position. Keep the instructions simple and specify the documents or information candidates need to submit.<\/p>\n\n\n\n<p>You can include:<\/p>\n\n\n\n<ul>\n<li>Application email address or online application link.<\/li>\n\n\n\n<li>Documents candidates need to submit, such as a resume and cover letter.<\/li>\n\n\n\n<li>Work samples or certifications, if relevant.<\/li>\n\n\n\n<li>Application deadline.<\/li>\n\n\n\n<li>Subject line candidates should use when applying by email.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td><strong>Sample:<\/strong><br>Interested candidates can send their updated resume and relevant certifications to careers@abctech.com with the subject line \u2018Application for Computer Operator\u2019. Applications will be accepted until September 25, 2026.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Common_Mistakes_to_Avoid_When_Drafting_a_JD_for_Computer_Operator\"><\/span>Common Mistakes to Avoid When Drafting a JD for Computer Operator<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>A computer operator job description should provide candidates with enough information to understand the position and decide whether they are a good fit. Missing or unclear details can attract unsuitable applications and make the recruitment process more difficult. Avoid these common mistakes when preparing a JD for a computer operator:&nbsp;<\/p>\n\n\n\n<ul>\n<li><strong>Failing to Mention Required Technical Skills: <\/strong>Candidates need to know which technical abilities they will use in the role. Mention relevant skills, such as Microsoft <a href=\"https:\/\/trainings.internshala.com\/blog\/what-is-excel\/\" target=\"_blank\" rel=\"noreferrer noopener\">Excel<\/a>, data entry, and <a href=\"https:\/\/trainings.internshala.com\/blog\/what-is-database\/\" target=\"_blank\" rel=\"noreferrer noopener\">database<\/a> management. This gives candidates a clearer idea of the technical requirements.<\/li>\n\n\n\n<li><strong>Setting Unclear Qualification Requirements: <\/strong>Avoid vague requirements such as \u2018must be highly educated\u2019 and state the required educational background, certifications, and experience level clearly. If you are open to freshers, mention this rather than making previous experience appear mandatory.<\/li>\n\n\n\n<li><strong>Leaving Out Work Schedule and Location: <\/strong>Candidates should know where and when they are expected to work before applying. Include the office location and whether the position is on-site, remote, or hybrid. You should also specify the working days, expected hours, or shift requirements.<\/li>\n\n\n\n<li><strong>Listing Too Many Unrelated Duties: <\/strong>Avoid combining computer operator responsibilities with duties that belong to unrelated positions. For example, asking a computer operator to manage social media, handle recruitment, maintain networks, and develop software can make the role confusing.&nbsp;<\/li>\n\n\n\n<li><strong>Not Mentioning Salary and Benefits: <\/strong>Leaving compensation unspecified can make the job posting less informative. If possible, provide a salary range and mention relevant benefits, and if the final salary depends on experience, state this clearly.<\/li>\n\n\n\n<li><strong>Making the Application Process Unclear: <\/strong>A candidate should not have to guess how to apply. Clearly state where applications should be submitted, which documents are required, the application deadline, and any instructions for the email subject line.&nbsp;<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large desktop-image\"><a href=\"https:\/\/internshala.com\/post-job\/?utm_source=is_blog&amp;utm_medium=employer-computer-operator-job-description\u200b&amp;utm_campaign=employer-web-banner\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"203\" src=\"https:\/\/internshala.com\/blog\/wp-content\/uploads\/2024\/08\/Post-your-job-nowweb-1024x203.jpg\" alt=\"Post your job now(web)\" class=\"wp-image-24468\" srcset=\"https:\/\/internshala.com\/blog\/wp-content\/uploads\/2024\/08\/Post-your-job-nowweb-1024x203.jpg 1024w, https:\/\/internshala.com\/blog\/wp-content\/uploads\/2024\/08\/Post-your-job-nowweb-672x133.jpg 672w, https:\/\/internshala.com\/blog\/wp-content\/uploads\/2024\/08\/Post-your-job-nowweb-1536x305.jpg 1536w, https:\/\/internshala.com\/blog\/wp-content\/uploads\/2024\/08\/Post-your-job-nowweb-2048x406.jpg 2048w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full mobile-image\"><a href=\"https:\/\/internshala.com\/post-job\/?utm_source=is_blog&amp;utm_medium=employer-computer-operator-job-description\u200b&amp;utm_campaign=employer-mobile-banner\" target=\"_blank\" rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"356\" height=\"256\" src=\"https:\/\/internshala.com\/blog\/wp-content\/uploads\/2024\/08\/Post-your-job-nowmobile.jpg\" alt=\"Post your job now (mobile)\" class=\"wp-image-24469\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>A clear computer operator job description helps candidates understand the role, daily expectations, qualifications, and skills required for the position. When writing the JD, include the company overview, job title, job overview, computer operator duties and responsibilities, education and experience, technical skills, soft skills, salary and benefits, and application process. You can also use the templates provided above and adjust the requirements to align with the systems, workload, and level of experience associated with your position.<\/p>\n\n\n\n<p>Once you have prepared your JD, the next step is to reach candidates who match your requirements. Explore our guide on <a href=\"https:\/\/internshala.com\/blog\/employer-how-to-hire-employees\/\">how to hire employees<\/a> to learn how to attract, evaluate, and select suitable talent for your organization.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"FAQs\"><\/span>FAQs<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<div class=\"schema-faq wp-block-yoast-faq-block\"><div class=\"schema-faq-section\" id=\"faq-question-1789902272923\"><strong class=\"schema-faq-question\">Q<strong>1. Should I include every computer task in the job description?<\/strong><\/strong> <p class=\"schema-faq-answer\">No. Focus on tasks that form a regular or important part of the position. Including every minor computer-related activity can make the JD unnecessarily long and obscure the main responsibilities. Prioritize duties the employee will perform regularly and responsibilities that require specific skills.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1789902292236\"><strong class=\"schema-faq-question\">Q<strong>2. Should a computer operator job description require IT experience?<\/strong><\/strong> <p class=\"schema-faq-answer\">Not always. The requirement should depend on the role&#8217;s complexity. If the position mainly involves data entry, record management, and routine computer operations, strong computer proficiency may be sufficient. If the role involves system monitoring, troubleshooting, backups, or specialized software, previous IT or computer operations experience may be more appropriate.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1789902310097\"><strong class=\"schema-faq-question\">Q<strong>3. Can freshers apply for a computer operator position?<\/strong><\/strong> <p class=\"schema-faq-answer\">Yes, if the role mainly involves routine computer operations and the organization can provide on-the-job training. For an entry-level position, you can focus on basic computer proficiency, typing accuracy, attention to detail, and willingness to learn rather than requiring several years of experience.<\/p> <\/div> <\/div>\n<aside class=\"mashsb-container mashsb-main \"><div class=\"mashsb-box\"><div class=\"mashsb-count mash-medium\" style=\"float:left\"><div class=\"counts mashsbcount\">0<\/div><span class=\"mashsb-sharetext\">SHARES<\/span><\/div><div class=\"mashsb-buttons\"><a class=\"mashicon-facebook mash-medium mashsb-noshadow\" href=\"https:\/\/www.facebook.com\/sharer.php?u=https%3A%2F%2Finternshala.com%2Fblog%2Femployer-computer-operator-job-description%2F\" target=\"_top\" rel=\"nofollow\"><span class=\"icon\"><\/span><span class=\"text\">Share&nbsp;on&nbsp;Facebook<\/span><\/a><a class=\"mashicon-subscribe mash-medium mashsb-noshadow\" href=\"#\" target=\"_top\" rel=\"nofollow\"><span class=\"icon\"><\/span><span class=\"text\">Get&nbsp;Your&nbsp;Dream&nbsp;Internship<\/span><\/a><div class=\"onoffswitch2 mash-medium mashsb-noshadow\" style=\"display:none\"><\/div><\/div>\n            <\/div>\n                <div style=\"clear:both\"><\/div><\/aside>\n            <!-- Share buttons by mashshare.net - Version: 4.0.42-->","protected":false},"excerpt":{"rendered":"<p>Summary: A clear computer operator JD can reduce unsuitable applications by defining the required technical skills, experience, work conditions, and responsibilities. Include the essential components and structure the job description<\/p>\n","protected":false},"author":6502,"featured_media":30422,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[4319],"tags":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Computer Operator Job Description with Template (2026)<\/title>\n<meta name=\"description\" content=\"Learn how to write a computer operator job description with key duties, skills, qualifications, salary details, templates, and common mistakes to avoid.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Computer Operator Job Description with Template (2026)\" \/>\n<meta property=\"og:description\" content=\"Learn how to write a computer operator job description with key duties, skills, qualifications, salary details, templates, and common mistakes to avoid.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/\" \/>\n<meta property=\"og:site_name\" content=\"Internshala blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-21T11:15:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-13T10:56:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/internshala.com\/blog\/wp-content\/uploads\/2026\/09\/computer-operator-job-description_.png\" \/>\n\t<meta property=\"og:image:width\" content=\"450\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Shobha Saini\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Shobha Saini\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/\"},\"author\":{\"name\":\"Shobha Saini\",\"@id\":\"https:\/\/internshala.com\/blog\/#\/schema\/person\/c220799e53244b6b0da150e24591978f\"},\"headline\":\"Computer Operator Job Description: Customisable Template\",\"datePublished\":\"2026-09-21T11:15:41+00:00\",\"dateModified\":\"2026-10-13T10:56:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/\"},\"wordCount\":2634,\"publisher\":{\"@id\":\"https:\/\/internshala.com\/blog\/#organization\"},\"articleSection\":[\"HR Resources\"],\"inLanguage\":\"en-US\"},{\"@type\":[\"WebPage\",\"FAQPage\"],\"@id\":\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/\",\"url\":\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/\",\"name\":\"Computer Operator Job Description with Template (2026)\",\"isPartOf\":{\"@id\":\"https:\/\/internshala.com\/blog\/#website\"},\"datePublished\":\"2026-09-21T11:15:41+00:00\",\"dateModified\":\"2026-10-13T10:56:11+00:00\",\"description\":\"Learn how to write a computer operator job description with key duties, skills, qualifications, salary details, templates, and common mistakes to avoid.\",\"breadcrumb\":{\"@id\":\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#breadcrumb\"},\"mainEntity\":[{\"@id\":\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#faq-question-1789902272923\"},{\"@id\":\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#faq-question-1789902292236\"},{\"@id\":\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#faq-question-1789902310097\"}],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/internshala.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Employer Resources\",\"item\":\"https:\/\/internshala.com\/blog\/employer-resources\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"HR Resources\",\"item\":\"https:\/\/internshala.com\/blog\/employer-resources\/hr-resources\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Computer Operator Job Description\u200b\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/internshala.com\/blog\/#website\",\"url\":\"https:\/\/internshala.com\/blog\/\",\"name\":\"Internshala blog\",\"description\":\"Your favourite senior outside college\",\"publisher\":{\"@id\":\"https:\/\/internshala.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/internshala.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/internshala.com\/blog\/#organization\",\"name\":\"Internshala blog\",\"url\":\"https:\/\/internshala.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/internshala.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/internshala.com\/blog\/wp-content\/uploads\/2023\/08\/LOGO-1.png\",\"contentUrl\":\"https:\/\/internshala.com\/blog\/wp-content\/uploads\/2023\/08\/LOGO-1.png\",\"width\":112,\"height\":31,\"caption\":\"Internshala blog\"},\"image\":{\"@id\":\"https:\/\/internshala.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/internshala.com\/blog\/#\/schema\/person\/c220799e53244b6b0da150e24591978f\",\"name\":\"Shobha Saini\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/internshala.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/internshala.com\/blog\/wp-content\/uploads\/2023\/12\/Shobha-96x96.jpg\",\"contentUrl\":\"https:\/\/internshala.com\/blog\/wp-content\/uploads\/2023\/12\/Shobha-96x96.jpg\",\"caption\":\"Shobha Saini\"},\"description\":\"Shobha Saini is the Head of Human Resources at Internshala with over eight years of experience in employee relations and talent acquisition. She has led strategic HR initiatives and built effective people practices across the organization. She specializes in strategic planning, policy-making, and performance management. A multi-talented professional, she has played a key role in shaping HR strategies at Internshala.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/shobha-saini-she-her-7a95131a\/\"],\"url\":\"https:\/\/internshala.com\/blog\/author\/shobha-saini\/\"},{\"@type\":\"Question\",\"@id\":\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#faq-question-1789902272923\",\"position\":1,\"url\":\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#faq-question-1789902272923\",\"name\":\"Q1. Should I include every computer task in the job description?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No. Focus on tasks that form a regular or important part of the position. Including every minor computer-related activity can make the JD unnecessarily long and obscure the main responsibilities. Prioritize duties the employee will perform regularly and responsibilities that require specific skills.\",\"inLanguage\":\"en-US\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Question\",\"@id\":\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#faq-question-1789902292236\",\"position\":2,\"url\":\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#faq-question-1789902292236\",\"name\":\"Q2. Should a computer operator job description require IT experience?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Not always. The requirement should depend on the role's complexity. If the position mainly involves data entry, record management, and routine computer operations, strong computer proficiency may be sufficient. If the role involves system monitoring, troubleshooting, backups, or specialized software, previous IT or computer operations experience may be more appropriate.\",\"inLanguage\":\"en-US\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Question\",\"@id\":\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#faq-question-1789902310097\",\"position\":3,\"url\":\"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#faq-question-1789902310097\",\"name\":\"Q3. Can freshers apply for a computer operator position?\",\"answerCount\":1,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes, if the role mainly involves routine computer operations and the organization can provide on-the-job training. For an entry-level position, you can focus on basic computer proficiency, typing accuracy, attention to detail, and willingness to learn rather than requiring several years of experience.\",\"inLanguage\":\"en-US\"},\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Computer Operator Job Description with Template (2026)","description":"Learn how to write a computer operator job description with key duties, skills, qualifications, salary details, templates, and common mistakes to avoid.","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:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/","og_locale":"en_US","og_type":"article","og_title":"Computer Operator Job Description with Template (2026)","og_description":"Learn how to write a computer operator job description with key duties, skills, qualifications, salary details, templates, and common mistakes to avoid.","og_url":"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/","og_site_name":"Internshala blog","article_published_time":"2026-09-21T11:15:41+00:00","article_modified_time":"2026-10-13T10:56:11+00:00","og_image":[{"width":450,"height":300,"url":"https:\/\/internshala.com\/blog\/wp-content\/uploads\/2026\/09\/computer-operator-job-description_.png","type":"image\/png"}],"author":"Shobha Saini","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Shobha Saini","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#article","isPartOf":{"@id":"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/"},"author":{"name":"Shobha Saini","@id":"https:\/\/internshala.com\/blog\/#\/schema\/person\/c220799e53244b6b0da150e24591978f"},"headline":"Computer Operator Job Description: Customisable Template","datePublished":"2026-09-21T11:15:41+00:00","dateModified":"2026-10-13T10:56:11+00:00","mainEntityOfPage":{"@id":"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/"},"wordCount":2634,"publisher":{"@id":"https:\/\/internshala.com\/blog\/#organization"},"articleSection":["HR Resources"],"inLanguage":"en-US"},{"@type":["WebPage","FAQPage"],"@id":"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/","url":"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/","name":"Computer Operator Job Description with Template (2026)","isPartOf":{"@id":"https:\/\/internshala.com\/blog\/#website"},"datePublished":"2026-09-21T11:15:41+00:00","dateModified":"2026-10-13T10:56:11+00:00","description":"Learn how to write a computer operator job description with key duties, skills, qualifications, salary details, templates, and common mistakes to avoid.","breadcrumb":{"@id":"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#breadcrumb"},"mainEntity":[{"@id":"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#faq-question-1789902272923"},{"@id":"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#faq-question-1789902292236"},{"@id":"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#faq-question-1789902310097"}],"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/internshala.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Employer Resources","item":"https:\/\/internshala.com\/blog\/employer-resources\/"},{"@type":"ListItem","position":3,"name":"HR Resources","item":"https:\/\/internshala.com\/blog\/employer-resources\/hr-resources\/"},{"@type":"ListItem","position":4,"name":"Computer Operator Job Description\u200b"}]},{"@type":"WebSite","@id":"https:\/\/internshala.com\/blog\/#website","url":"https:\/\/internshala.com\/blog\/","name":"Internshala blog","description":"Your favourite senior outside college","publisher":{"@id":"https:\/\/internshala.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/internshala.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/internshala.com\/blog\/#organization","name":"Internshala blog","url":"https:\/\/internshala.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/internshala.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/internshala.com\/blog\/wp-content\/uploads\/2023\/08\/LOGO-1.png","contentUrl":"https:\/\/internshala.com\/blog\/wp-content\/uploads\/2023\/08\/LOGO-1.png","width":112,"height":31,"caption":"Internshala blog"},"image":{"@id":"https:\/\/internshala.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/internshala.com\/blog\/#\/schema\/person\/c220799e53244b6b0da150e24591978f","name":"Shobha Saini","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/internshala.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/internshala.com\/blog\/wp-content\/uploads\/2023\/12\/Shobha-96x96.jpg","contentUrl":"https:\/\/internshala.com\/blog\/wp-content\/uploads\/2023\/12\/Shobha-96x96.jpg","caption":"Shobha Saini"},"description":"Shobha Saini is the Head of Human Resources at Internshala with over eight years of experience in employee relations and talent acquisition. She has led strategic HR initiatives and built effective people practices across the organization. She specializes in strategic planning, policy-making, and performance management. A multi-talented professional, she has played a key role in shaping HR strategies at Internshala.","sameAs":["https:\/\/www.linkedin.com\/in\/shobha-saini-she-her-7a95131a\/"],"url":"https:\/\/internshala.com\/blog\/author\/shobha-saini\/"},{"@type":"Question","@id":"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#faq-question-1789902272923","position":1,"url":"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#faq-question-1789902272923","name":"Q1. Should I include every computer task in the job description?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"No. Focus on tasks that form a regular or important part of the position. Including every minor computer-related activity can make the JD unnecessarily long and obscure the main responsibilities. Prioritize duties the employee will perform regularly and responsibilities that require specific skills.","inLanguage":"en-US"},"inLanguage":"en-US"},{"@type":"Question","@id":"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#faq-question-1789902292236","position":2,"url":"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#faq-question-1789902292236","name":"Q2. Should a computer operator job description require IT experience?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"Not always. The requirement should depend on the role's complexity. If the position mainly involves data entry, record management, and routine computer operations, strong computer proficiency may be sufficient. If the role involves system monitoring, troubleshooting, backups, or specialized software, previous IT or computer operations experience may be more appropriate.","inLanguage":"en-US"},"inLanguage":"en-US"},{"@type":"Question","@id":"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#faq-question-1789902310097","position":3,"url":"https:\/\/internshala.com\/blog\/employer-computer-operator-job-description\/#faq-question-1789902310097","name":"Q3. Can freshers apply for a computer operator position?","answerCount":1,"acceptedAnswer":{"@type":"Answer","text":"Yes, if the role mainly involves routine computer operations and the organization can provide on-the-job training. For an entry-level position, you can focus on basic computer proficiency, typing accuracy, attention to detail, and willingness to learn rather than requiring several years of experience.","inLanguage":"en-US"},"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/internshala.com\/blog\/wp-json\/wp\/v2\/posts\/30420"}],"collection":[{"href":"https:\/\/internshala.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/internshala.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/internshala.com\/blog\/wp-json\/wp\/v2\/users\/6502"}],"replies":[{"embeddable":true,"href":"https:\/\/internshala.com\/blog\/wp-json\/wp\/v2\/comments?post=30420"}],"version-history":[{"count":0,"href":"https:\/\/internshala.com\/blog\/wp-json\/wp\/v2\/posts\/30420\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/internshala.com\/blog\/wp-json\/wp\/v2\/media\/30422"}],"wp:attachment":[{"href":"https:\/\/internshala.com\/blog\/wp-json\/wp\/v2\/media?parent=30420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/internshala.com\/blog\/wp-json\/wp\/v2\/categories?post=30420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/internshala.com\/blog\/wp-json\/wp\/v2\/tags?post=30420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}