Source description
About the role
Upload Resume
- { margin: 0; padding: 0; outline: 0; border: 0 }
body { font-family: "open sans","Helvetica Neue",Helvetica,Arial,sans-serif; background-color: #011f4b; font-size: 12px; color: #333 !important }
.full_width { width: 100%; float: left }
#uploadResumeCandidateOuter header .headerTop { padding: 1em 5em 1em 2.5em; background: #fff; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-transition: all .3s ease-in-out; transition: all .3s ease-in-out; -webkit-box-align: center; -ms-flex-align: center; align-items: center; box-shadow: 0 1px 5px rgba(0,0,0,.2) }
#uploadResumeCandidateOuter .logo { float: left; font-size: 0; position: relative; z-index: 2 }
#uploadResumeCandidateOuter header .logo img, #uploadResumeCandidateOuter header .logo svg { -webkit-transition: all .3s ease-in-out; transition: all .3s ease-in-out; height: 60px }
#jobdetailsContent { background: #fff }
.jobDetailsWrapper { max-width: 1134px; margin: 0 auto }
.jobDetailsWrapper h2 { font-size: 2.3em; color: #002d69; font-weight: 600; margin-bottom: 30px; margin-top: 30px }
.jobDetailsWrapper .buttonFooter { text-align: right; border: 0; padding-top: 25px }
.btn.btn-nursedeck.back { color: #646464 !important; border: 2px solid #646464 !important }
.btn.btn-nursedeck.back:active, .btn.btn-nursedeck.back:focus, .btn.btn-nursedeck.back:hover { background-color: #646464; color: #fff !important }
.btn.slpback { background-color: #646464 }
.btn.slpback:active, .btn.slpback:focus, .btn.slpback:hover { background-color: #646464 }
.jobdetail h3 { margin-top: 5px; font-size: 16px; font-weight: 600 }
.jobDetailsWrapper .submitResumeSec { border: 1px solid #e5e6e7; box-shadow: inset 0 1px 1px rgba(0,0,0,.075) }
.jobDetailsWrapper .col-md-5.control-label { text-align: left; font-weight: 400; margin: 0; margin-top: 5px }
.form-group { margin-bottom: 15px }
.jobDetailsWrapper .col-md-5.control-label span { color: red }
.p-h-md { padding: 25px 0 }
.submitCandi_list li .fa.fa-circle { color: #19967d }
.submitResumeSec > ul { padding: 20px 1.5em; list-style: none; margin-bottom: 10px; }
.submitResumeSec > ul > li { padding-left: 10px; }
.submitResumeSec .descHeight { height: auto !important; }
.jobDetailsWrapper .col-md-3.control-label { text-align: left; font-weight: 400; margin: 0; margin-top: 5px; width: 20% }
.jobDetailsWrapper .col-md-9 { width: 80% }
.upLoadResumeWindow { padding-top: 15px; margin-top: 15px; border-top: 1px solid #e5e6e7 }
.submitCandi_header { width: 100%; float: left; padding-bottom: 0 }
.submitCandi_header h3 { color: #0c7cba; font-size: 2em; margin: 0; display: block; line-height: normal }
.submitCandi_header span { font-size: 1.3em; margin: 0; display: block; line-height: normal }
.submitCandi_list { width: 100%; float: left; padding: 1em 0; text-align: left; max-width: 56em }
.submitCandi_list li { display: inline-block; margin-right: 3em; margin-bottom: 2em }
.submitCandi_list li:last-child { margin-right: 0 }
.submitCandi_list li i { display: inline-block; font-size: 1.15em }
.submitCandi_list li p { display: inline-block; margin: 0 0 0 .1em; vertical-align: top; font-size: 1.1em; line-height: 1.3em }
.submitCandi_list li p span { font-size: .9em }
.submitCandi_list li p label { font-weight: 600 }
.submitCandi_list li .fa.fa-circle { color: #19967d }
.submitCandi_list li .fa.fa-circle.InactiveStage { color: red }
.submitCandi_list li .fa.fa-circle.HoldStage { color: orange }
.page-heading .buttonFooter { border-top: none; margin-top: 20px }
.buttonFooter .btn { width: 102px; padding: 6px 12px; margin-right: 5px; font-size: 14px; border: 1px solid transparent; display: inline-block; font-weight: 400; line-height: 1.42857143; text-align: center; white-space: nowrap; vertical-align: middle; background-color: #144991; touch-action: manipulation; cursor: pointer; user-select: none; color: #fff !important; background-image: none; border-radius: 4px }
.buttonFooter .btn.close_btn { border: 1px solid #d2d2d2 }
.btn.slpback { background-color: #646464 }
.fixedBTN { z-index: 99 }
.btnFixed { width: 96%; padding: 5px 15px; width: calc(100% - 70px); display: block; right: 0 }
.form-control, .single-line { background-color: #fff; background-image: none; border: 1px solid #e5e6e7; border-radius: 4px; color: inherit; display: block; padding: 4px 5px; transition: border-color .15s ease-in-out 0s,box-shadow .15s ease-in-out 0s; width: 100%; font-size: 12px; height: 28px; transition: all .3s }
.form-control[disabled]:focus, .form-control[disabled]:hover, .form-control[readonly]:focus, .form-control[readonly]:hover, fieldset[disabled] .form-control:focus, fieldset[disabled] .form-control:hover { border: 1px solid #e5e6e7 }
.has-success .form-control { border-color: #1ab394 }
.has-warning .form-control { border-color: #f8ac59 }
.has-error .form-control { border-color: #ed5565 !important }
.valError { color: #ed5565; font-size: 10px; display: block; text-align: left }
.loaderSection { background: rgba(51,51,51,.35); height: 100%; position: fixed; top: 0; width: 100%; left: 0; display: none; z-index: 99999 }
.container { padding: 15px 25px; max-width: 330px; border-radius: 8px; -webkit-border-radius: 8px; position: fixed; margin: 10px 0; top: 4px; right: 13px !important; z-index: 99999; display: none }
.container p { color: #fff; font: normal 16px/18px Arial,Helvetica,sans-serif }
.container b { border-radius: 50%; -webkit-border-radius: 50%; background: #479248; width: 33px; height: 34px; position: absolute; padding: 5px 0 0 5px; left: -15px; top: 16%; bottom: 30%; border: 2px solid #fff }
.cross { background: #cc3633; display: none }
.cross b { background: #bd3927; top: 18%; cursor: pointer }
.warning { background: #f8ac59 }
.warning b { background: #ddd; top: 18% }
.rightcontainer { background: #479248 }
Submit Resume
Back Submit
Senior Tableau Dashboard Developer ( Tableau Certified )
Texas, Austin
07/22/2026
Contract
Active
Job Description:
JOB SUMMARY As a Tableau Dashboard Developer, the candidate must have a strong background in developing and implementing advanced/innovative analytical dashboards in Tableau based on functional specifications from a user, group and/or organization. This position will work as part of project team interacting with Product Owners, internal/external stakeholders, application development, and other BI/Data Warehouse staff to ensure analytical dashboards needs are assessed, documented, designed, developed, and implemented. Cross training and knowledge transfer to current CPA staff will be an important task that the candidate will perform.
Key Responsibilities Migrating legacy BI platforms from Business Objects and QlikView to Tableau. Modernization and dashboard migration. SSRS Migration to Tableau. Data modeling. SQL optimization. Assessing, documenting, designing, developing, and implementing analytical dashboards needs. Performing cross training and knowledge transfer to current CPA staff. Working with the cross-functional business team to understand the business problem and design the best reporting solution. Analyzing requirements and specifications. Developing, designing, and coordinating the implementation of business intelligence reports and/or visualizations. Working with business customers, managers, analysts, and subject matter experts professionally and collaboratively to gather requirements/strategies for report development. Translating requirements into advanced database and business intelligence components design. Working with relational databases including SQL Server, Oracle, DB2, and others. Addressing and resolving complex technical issues with internal/external customers. Building good communication protocols. Updating the management team with weekly/monthly status. Performing extensive code reviews and analysis. Adhering to software development lifecycle processes. Preparing detailed documentation. Transitioning knowledge to current staff. Presenting and demonstrating business intelligence reports and visualizations to business customers and managers. Ensuring reports comply with standards and all data modeling artifacts are prepared accurately in a timely fashion. Ensuring quality in delivering superior products on time and within budget.
Required Qualifications Must Need Tableau, Tableau Cloud, QlikView, Qlik sense. Experience in working with Advanced SQL. Experience in Business Intelligence Report development and implementation in Tableau, including use of Tableau Prep. Experience with Business/System/Data Analysis and improvement. Extensive knowledge of/experience with data integration, data quality, multi-dimensional design and ETL tools, processes, and methodology. Experience with BI visualization development tools such as Qlik, Tableau, SSRS. Extensive experience with highly complex application security requirements. Proficient in multiple database technologies such as Oracle, DB2 and MS SQL. Experience with Agile framework both in Kanban and Scrum to track various assignments and projects. Experience with Python. Experience with TFS, Bitbucket, Git. Public sector experience (Federal, State or Local Government). Proficient with the Microsoft Office products, including Outlook, TEAMS, Microsoft Project, Word, Visio, Excel and PowerPoint. Expertise with Advanced SQL. Working knowledge of Python. Ability to work with the cross-functional business team to understand business problem and design best reporting solution. Ability to analyze requirements and specifications, develop, design, and coordinate the implementation of business intelligence reports and/or visualizations. Ability to work with business customers, managers, analysts, and subject matter experts professionally and collaboratively to gather requirements/strategies for report development. Ability to translate requirements into advanced database and business intelligence components design. Ability to work with relational databases including SQL Server, Oracle, DB2, and others. Ability to address and resolve complex technical issues with internal/external customers, build good communication protocols and update management team with weekly/monthly status. Ability to perform extensive code reviews and analysis. Required to adhere to software development lifecycle processes. Required to prepare detailed documentation and transition knowledge to current staff. Ability to present and demonstrate business intelligence reports and visualizations to business customers and managers. Must have worked with modern BI and Data Warehouse technologies to ensure reports comply with standards and all data modeling artifacts are prepared accurately in a timely fashion. Must also be quality conscious and be dedicated to delivering superior products on time and within budget.
Preferred Qualifications
-
Preferred knowledge of Qlik, SSSRS and Tableau or other similar Business Intelligence (BI) tools.
-
Certifications Tableau Certified is Must.
-
Email ID *
-
This field is required Please enter valid emailId.
-
Cell phone *
-
This field is required Please enter valid cell phone.
-
First Name *
-
This field is required Please enter valid first name.
-
Last Name *
-
This field is required Please enter valid last name.
-
Upload Resume
-
Resume Title *
-
This field is required
-
Comments for Recruiter
-
This field is required
-
.
-
.
-
.
-
$(document).ready(function () { var JobId = '5840969'; if (JobId == '') { $(".jobdetail").hide(); $("#headertext").html('Upload Resume'); } else { $("#headertext").html('Submit Resume'); } });
function fillEmailId() { if ($.trim($("#txtEmailIdtoSearch").val()) == "") { showvalidation($("#txtEmailIdtoSearch")); $(".loaderSection").hide(); return false; } else { var Reg = new RegExp("^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)@[A-Za-z0-9]+(\.[A-Za-z0-9]+)(\.[A-Za-z]{2,})$"); var matches = $.trim($("#txtEmailIdtoSearch").val()).match(Reg); if (!matches) { hidevalidation($("#txtEmailIdtoSearch")); showRegExpvalidation($("#txtEmailIdtoSearch")); return false; } else { hideRegExpvalidation($("#txtEmailIdtoSearch")); hidevalidation($("#txtEmailIdtoSearch")); } } } function fillFirstName() { if ($.trim($("#txtFirstName").val()) == "") { showvalidation($("#txtFirstName")); $(".loaderSection").hide(); return false; } else { var Reg = new RegExp("^[a-zA-Z][0-9a-zA-Z .,'-]$"); if (!Reg.test($.trim($("#txtFirstName").val()))) { hidevalidation($("#txtFirstName")); showRegExpvalidation($("#txtFirstName")); return false; } else { hideRegExpvalidation($("#txtFirstName")); hidevalidation($("#txtFirstName")); } } } function fillLastName() { if ($.trim($("#txtLastName").val()) == "") { showvalidation($("#txtLastName")); $(".loaderSection").hide(); return false; } else { var Reg = new RegExp("^[a-zA-Z][0-9a-zA-Z .,'-]$"); if (!Reg.test($.trim($("#txtLastName").val()))) { hidevalidation($("#txtLastName")); showRegExpvalidation($("#txtLastName")); return false; } else { hideRegExpvalidation($("#txtLastName")); hidevalidation($("#txtLastName")); } } } function fillCandidateComments() { if ($.trim($("#txtCandidateComments").val()) == "") { showvalidation($("#txtCandidateComments")); $(".loaderSection").hide(); return false; } else { hidevalidation($("#txtCandidateComments")); } } function fillPhone() { if ($.trim($("#txtPhone").val()) == "") { showvalidation($("#txtPhone")); $(".loaderSection").hide(); return false; } else { var Reg = /(?\d{3})?-? *\d{3}-? *-?\d{4}/g; var matches = $.trim($("#txtPhone").val()).match(Reg); if (!matches) { hidevalidation($("#txtPhone")); showRegExpvalidation($("#txtPhone")); return false; } else { hideRegExpvalidation($("#txtPhone")); hidevalidation($("#txtPhone")); } } } function fillResumeTitle() { if ($.trim($("#txtDefDocTitle").val()) == "") { showvalidation($("#txtDefDocTitle")); $(".loaderSection").hide(); return false; } else { hidevalidation($("#txtDefDocTitle")); } } function showRegExpvalidation(ctrl) { $(ctrl).parent().addClass("has-error"); $(ctrl).parent().find("span.freg").show(); $(".loaderSection").hide(); } function hideRegExpvalidation(ctrl) { $(ctrl).parent().removeClass("has-error"); $(ctrl).parent().find("span.freg").hide(); $(".loaderSection").hide(); } function showvalidation(ctrl) { $(ctrl).parent().addClass("has-error"); $(ctrl).parent().find("span.freq").show(); $(".loaderSection").hide(); } function hidevalidation(ctrl) { $(ctrl).parent().removeClass("has-error"); $(ctrl).parent().find("span.freq").hide(); $(".loaderSection").hide(); } function ValidateData() { var isProceedToSave = true; $(".loaderSection").show();
if ($.trim($("#txtEmailIdtoSearch").val()) == "") { showvalidation($("#txtEmailIdtoSearch")); isProceedToSave = false; } if ($.trim($("#txtFirstName").val()) == "") { showvalidation($("#txtFirstName")); isProceedToSave = false; } else { var Reg = new RegExp("^[a-zA-Z][0-9a-zA-Z .,'-]$"); if (!Reg.test($.trim($("#txtFirstName").val()))) { hidevalidation($("#txtFirstName")); showRegExpvalidation($("#txtFirstName")); isProceedToSave = false; } } if ($.trim($("#txtLastName").val()) == "") { showvalidation($("#txtLastName")); isProceedToSave = false; } else { var Reg = new RegExp("^[a-zA-Z][0-9a-zA-Z .,'-]$"); if (!Reg.test($.trim($("#txtLastName").val()))) { hidevalidation($("#txtLastName")); showRegExpvalidation($("#txtLastName")); isProceedToSave = false; } } if ($.trim($("#txtPhone").val()) == "") { showvalidation($("#txtPhone")); isProceedToSave = false; } if (isProceedToSave) { var fileUpload = $("#FileUpload2").get(0); var files = fileUpload.files; if (files.length == 0) { ShowErrorNotification("Please attach a resume."); $(".loaderSection").hide(); isProceedToSave = false; } return isProceedToSave; } else { ShowErrorNotification("Whoops! Looks like you've missed entering some data. Please enter data in the highlighted fields."); $(".loaderSection").hide(); window.scrollTo(10, 10); return isProceedToSave; } }
function SubmitResume() { if (ValidateData()) { var FileName = ''; var JobId = '0';
if ('5840969' != '') JobId = '5840969';
var txtemailid = $("#txtEmailIdtoSearch").val(); $.ajax({ url: '/Support/GetCandidateDetailByEmailId', type: "GET", dataType: "JSON", data: { CandidateEmail: txtemailid, JobId: JobId }, success: function (data) { if (data == "exists") { $(".loaderSection").hide(); ShowErrorNotification("You are already submitted to this position."); return false; } else //If email does not exist { if (data.Resume_Id != undefined && data.Resume_Id != null && parseInt(data.Resume_Id) > 0) { SubmitDocument(data.Resume_Id, 0, 1); } else { UploadDocUsingAPI(); } } } }); } else $(".loaderSection").hide(); } function UploadDocUsingAPI() { var fileUpload = $("#FileUpload2").get(0); var files = fileUpload.files; if (files.length == 0) { ShowErrorNotification("Please attach a resume."); $(".loaderSection").hide(); return false; }
if (files.length > 0) { if (window.FormData !== undefined) { var data = new FormData(); for (var i = 0; i 0) { SubmitDocument(data.candidateId, 1, 0); // $(".loaderSection").hide(); } else { ShowErrorNotification(data.EventStatusStatus); $(".loaderSection").hide(); } //callback(data.UploadedFileName); }, error: function (err) { ShowErrorNotification(err.statusText); $(".loaderSection").hide(); window.scrollTo(10, 10); return false; } }); } else { alert("This browser doesn't support HTML5 file uploads!"); } } } async function SubmitDocument(Resume_Id, Datafrom, IsExist) { var FileName = ''; var JobId = '0'; var RecId = '0'; var Source = '4414'; var EntityGroup = '2321'; var SubSource = '13304';
if ('5840969' != '') JobId = '5840969';
if ('0' != '') RecId = '0';
if (Datafrom == 0) { // Wait for the document upload to complete FileName = await UploadCandidateDoc(); if (!FileName) { ShowErrorNotification("Whoops! Looks like some issues in uploading resume. Please try again."); return; // Exit if upload failed } } var ResumeDetails = $.param({ Email_Id: $("#txtEmailIdtoSearch").val(), FirstName: $("#txtFirstName").val(), LastName: $("#txtLastName").val(), Phone: $("#txtPhone").val(), CandidateComments: $("#txtCandidateComments").val(), JobId: JobId, UploadedFileName: FileName, ResumeId: Resume_Id, Datafrom: Datafrom, RecId: RecId, IsExist: IsExist, Source: Source, EntityGroup: EntityGroup, ResumeFromJobPortal: 1, UploadedDocName: $.trim($("#txtDefDocTitle").val()), SubSource: SubSource }); $.ajax({ url: '/Support/UploadResumeForJobPortal', type: "POST", dataType: "JSON", data: ResumeDetails, success: function (data) { if (data.headerCode == "20001") { ShowSaveNotification(data.EventStatusStatus); $(".loaderSection").hide(); window.scrollTo(10, 10); } else if (data.headerCode == "10001") { ShowErrorNotification(data.data.errorDetail); $(".loaderSection").hide(); window.scrollTo(10, 10); } else if (data.headerCode == "20003") { ShowErrorNotification(data.EventStatusStatus); $(".loaderSection").hide(); window.scrollTo(10, 10); } else { ShowErrorNotification(data.PortalJob_Status); $(".loaderSection").hide(); window.scrollTo(10, 10); } } }); }
// Function to convert a file to base64 async function fileToBase64(file) { var base64String; const createPromise = new Promise((resolve, reject) => { const reader = new FileReader(); reader.readAsDataURL(file); reader.onload = () => resolve(reader.result); reader.onerror = (error) => reject(error); });
await createPromise.then((promisedata) => { base64String = promisedata; });
return base64String; }
function getFileExtension(filename) { if (!filename || !filename.includes('.')) { return ''; } return filename.split('.').pop(); }
function getFileName(filename) { if (!filename || !filename.includes('.')) { return filename; } return filename.split('.').slice(0, -1).join('.'); }
//Upload Document - Returns Promise async function UploadCandidateDoc() { var fileUpload = $("#FileUpload2").get(0); var files = fileUpload.files;
if (files.length == 0) { ShowErrorNotification("Please attach a resume."); $(".loaderSection").hide(); return null; }
if (files.length > 0) { if (window.FormData !== undefined) { var strFileNameWithoutExt = getFileName(files[0].name); var strFileExt = getFileExtension(files[0].name); var strNewFileName = strFileNameWithoutExt.replace("//", "").replace("+", "").replace("*", "").replace(" ", "").replace(":", "").replace(".", "") + "_" + "7" + "24" + "2026" + "17" + "18" + "30" + "." + strFileExt;
var fileBase64String; if (files[0]) { fileBase64String = await fileToBase64(files[0]); } var data = JSON.stringify({ docType: 9001, fileName: strNewFileName, encodedData: fileBase64String.split(',')[1], pjEmployeeId: null, placementTrackerId: null, employeeDetailsId: null });
var encodedData = btoa(data);
// Return a Promise instead of using callback return new Promise((resolve, reject) => { $.ajax({ type: "POST", url: 'https://stafflineapi.compunnel.com/' + "document/upload", contentType: "application/json; charset=utf-8", data: JSON.stringify({ data: encodedData }), timeout: 30000, json: true, headers: { "Authorization": 'qwerty~!@', }, success: function (result) { resolve(strNewFileName); }, error: function (err) { ShowErrorNotification(err.statusText); $(".loaderSection").hide(); window.scrollTo(10, 10); reject(null); } }); }); } else { alert("This browser doesn't support HTML5 file uploads!"); return null; } } return null; } $(function () { if ($('.formSection').offset() != undefined) { var stickyHeaderTop = $('.formSection').offset().top; $(window).scroll(function () { if ($(window).scrollTop() > stickyHeaderTop - 100) { $('.fixedBTN').addClass('btnFixed').css({ position: 'fixed', top: '65px', margin: '0px' });
} else { $('.fixedBTN').removeClass('btnFixed').css({ position: 'static', top: '0px', 'margin-top': '20px' });
} }); }; });
function ShowSaveNotification(strText) { $('.rightcontainer').find('p').text(strText); $('.rightcontainer').css({ 'opacity': '0', top: "50px" }).show(); $('.rightcontainer').stop().animate({ 'opacity': '1', top: "-=50px" }, 1000, function () { $(this).delay(3000).fadeOut(900); }); }
function ShowErrorNotification(strText) { $('.cross').find('p').html(strText); $('.cross').css({ 'opacity': '0', top: "50px" }).show(); $('.cross').stop().animate({ 'opacity': '1', top: "-=50px" }, 1000, function () { $(this).delay(3000).fadeOut(900); }); //$('.cross').show(); }
function ShowWarningNotification(strText) { $('.warning').find('p').html(strText); $('.warning').css({ 'opacity': '0', top: "50px" }).show(); $('.warning').stop().animate({ 'opacity': '1', top: "-=50px" }, 000, function () { $(this).delay(4000).fadeOut(900); }); }
More at Compunnel