mirror of https://github.com/Bunsly/JobSpy
updated py and yml dynamic
parent
6a326b7dd4
commit
89a40dc3e3
|
@ -32,7 +32,6 @@ permissions:
|
||||||
jobs:
|
jobs:
|
||||||
scrape_jobs:
|
scrape_jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
@ -47,36 +46,41 @@ jobs:
|
||||||
python -m pip install --upgrade pip
|
python -m pip install --upgrade pip
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
|
|
||||||
- name: Write user config.json
|
- name: Set environment variables
|
||||||
run: |
|
run: |
|
||||||
echo "{
|
echo "USER_EMAIL=${{ github.event.inputs.user_email }}" >> $GITHUB_ENV
|
||||||
\"user_email\": \"${{ github.event.inputs.user_email }}\",
|
echo "SEARCH_TERMS=${{ github.event.inputs.search_terms }}" >> $GITHUB_ENV
|
||||||
\"search_terms\": \"${{ github.event.inputs.search_terms }}\",
|
echo "RESULTS_WANTED=${{ github.event.inputs.results_wanted }}" >> $GITHUB_ENV
|
||||||
\"results_wanted\": ${{ github.event.inputs.results_wanted }},
|
echo "MAX_DAYS_OLD=${{ github.event.inputs.max_days_old }}" >> $GITHUB_ENV
|
||||||
\"max_days_old\": ${{ github.event.inputs.max_days_old }},
|
echo "TARGET_STATE=${{ github.event.inputs.target_state }}" >> $GITHUB_ENV
|
||||||
\"target_state\": \"${{ github.event.inputs.target_state }}\"
|
|
||||||
}" > config.json
|
|
||||||
|
|
||||||
- name: Run JobSpy Scraper Dynamic
|
|
||||||
run: python job_scraper_dynamic.py
|
|
||||||
|
|
||||||
- name: Sanitize email for filename
|
- name: Sanitize email for filename
|
||||||
id: sanitize
|
id: sanitize
|
||||||
run: |
|
run: |
|
||||||
safe_name=$(echo "${{ github.event.inputs.user_email }}" | sed 's/@/_at_/g; s/\./_/g')
|
safe_name=$(echo "${{ github.event.inputs.user_email }}" | sed 's/@/_at_/g; s/\./_/g')
|
||||||
echo "::set-output name=safe_name::$safe_name"
|
echo "safe_name=$safe_name" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Verify user-specific CSV exists
|
- name: Run JobSpy Scraper Dynamic
|
||||||
run: |
|
run: |
|
||||||
if [ ! -f "jobspy_output_dynamic_${{ steps.sanitize.outputs.safe_name }}.csv" ]; then
|
python job_scraper_dynamic.py \
|
||||||
echo "❌ ERROR: jobspy_output_dynamic_${{ steps.sanitize.outputs.safe_name }}.csv not found!"
|
"${{ env.SEARCH_TERMS }}" \
|
||||||
|
"${{ env.RESULTS_WANTED }}" \
|
||||||
|
"${{ env.MAX_DAYS_OLD }}" \
|
||||||
|
"${{ env.TARGET_STATE }}" \
|
||||||
|
"${{ steps.sanitize.outputs.safe_name }}"
|
||||||
|
|
||||||
|
- name: Verify jobspy_output_dynamic file exists
|
||||||
|
run: |
|
||||||
|
file="jobspy_output_dynamic_${{ steps.sanitize.outputs.safe_name }}.csv"
|
||||||
|
if [ ! -f "$file" ]; then
|
||||||
|
echo "❌ ERROR: $file not found!"
|
||||||
exit 1
|
exit 1
|
||||||
else
|
else
|
||||||
echo "✅ Found: jobspy_output_dynamic_${{ steps.sanitize.outputs.safe_name }}.csv"
|
echo "✅ Output found: $file"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Upload jobspy output
|
- name: Upload JobSpy Output as Artifact
|
||||||
uses: actions/upload-artifact@v4
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: jobspy-output-${{ steps.sanitize.outputs.safe_name }}
|
name: jobspy-results-dynamic-${{ steps.sanitize.outputs.safe_name }}
|
||||||
path: jobspy_output_dynamic_${{ steps.sanitize.outputs.safe_name }}.csv
|
path: jobspy_output_dynamic_${{ steps.sanitize.outputs.safe_name }}.csv
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import csv
|
import csv
|
||||||
import datetime
|
import datetime
|
||||||
import json
|
|
||||||
import os
|
import os
|
||||||
import re
|
import sys
|
||||||
|
import json
|
||||||
from jobspy.google import Google
|
from jobspy.google import Google
|
||||||
from jobspy.linkedin import LinkedIn
|
from jobspy.linkedin import LinkedIn
|
||||||
from jobspy.indeed import Indeed
|
from jobspy.indeed import Indeed
|
||||||
|
@ -15,39 +15,36 @@ sources = {
|
||||||
"indeed": Indeed,
|
"indeed": Indeed,
|
||||||
}
|
}
|
||||||
|
|
||||||
# Load user config
|
def sanitize_email(email):
|
||||||
with open("config.json", "r") as file:
|
return email.replace("@", "_at_").replace(".", "_")
|
||||||
config = json.load(file)
|
|
||||||
|
|
||||||
user_email = config.get("user_email")
|
def scrape_jobs(search_terms, results_wanted, max_days_old, target_state):
|
||||||
search_terms = [term.strip() for term in config.get("search_terms", "").split(",")]
|
|
||||||
results_wanted = int(config.get("results_wanted", 100))
|
|
||||||
max_days_old = int(config.get("max_days_old", 2))
|
|
||||||
target_state = config.get("target_state", "NY")
|
|
||||||
|
|
||||||
# Sanitize email for filename
|
|
||||||
safe_email = re.sub(r'[@.]', lambda x: '_at_' if x.group() == '@' else '_', user_email)
|
|
||||||
output_filename = f"jobspy_output_dynamic_{safe_email}.csv"
|
|
||||||
|
|
||||||
def scrape_jobs():
|
|
||||||
all_jobs = []
|
all_jobs = []
|
||||||
today = datetime.date.today()
|
today = datetime.date.today()
|
||||||
|
|
||||||
print(f"\n🔎 Fetching jobs for: {search_terms}")
|
print("\n🔎 Fetching jobs for search terms:", search_terms)
|
||||||
|
|
||||||
for search_term in search_terms:
|
for search_term in search_terms:
|
||||||
for source_name, source_class in sources.items():
|
for source_name, source_class in sources.items():
|
||||||
print(f"🚀 Scraping {search_term} from {source_name}...")
|
print(f"\n🚀 Scraping '{search_term}' from {source_name}...")
|
||||||
|
|
||||||
scraper = source_class()
|
scraper = source_class()
|
||||||
input_params = ScraperInput(
|
search_criteria = ScraperInput(
|
||||||
site_type=[source_name],
|
site_type=[source_name],
|
||||||
search_term=search_term,
|
search_term=search_term,
|
||||||
results_wanted=results_wanted,
|
results_wanted=results_wanted,
|
||||||
)
|
)
|
||||||
results = scraper.scrape(input_params)
|
|
||||||
|
|
||||||
for job in results.jobs:
|
job_response = scraper.scrape(search_criteria)
|
||||||
location_state = job.location.state.strip().upper() if job.location and job.location.state else "Unknown"
|
|
||||||
|
for job in job_response.jobs:
|
||||||
|
location_city = job.location.city.strip() if job.location.city else "Unknown"
|
||||||
|
location_state = job.location.state.strip().upper() if job.location.state else "Unknown"
|
||||||
|
location_country = str(job.location.country) if job.location.country else "Unknown"
|
||||||
|
|
||||||
|
if not any(term.lower() in job.title.lower() for term in search_terms):
|
||||||
|
continue
|
||||||
|
|
||||||
if job.date_posted and (today - job.date_posted).days <= max_days_old:
|
if job.date_posted and (today - job.date_posted).days <= max_days_old:
|
||||||
if location_state == target_state or job.is_remote:
|
if location_state == target_state or job.is_remote:
|
||||||
all_jobs.append({
|
all_jobs.append({
|
||||||
|
@ -62,35 +59,76 @@ def scrape_jobs():
|
||||||
"Salary Min": job.compensation.min_amount if job.compensation else "",
|
"Salary Min": job.compensation.min_amount if job.compensation else "",
|
||||||
"Salary Max": job.compensation.max_amount if job.compensation else "",
|
"Salary Max": job.compensation.max_amount if job.compensation else "",
|
||||||
"Date Posted": job.date_posted.strftime("%Y-%m-%d") if job.date_posted else "Not Provided",
|
"Date Posted": job.date_posted.strftime("%Y-%m-%d") if job.date_posted else "Not Provided",
|
||||||
"Location City": job.location.city if job.location and job.location.city else "Unknown",
|
"Location City": location_city,
|
||||||
"Location State": location_state,
|
"Location State": location_state,
|
||||||
"Location Country": str(job.location.country) if job.location and job.location.country else "Unknown",
|
"Location Country": location_country,
|
||||||
"Job URL": job.job_url,
|
"Job URL": job.job_url,
|
||||||
"Job Description": job.description.replace(",", "") if job.description else "No description",
|
"Job Description": job.description.replace(",", "") if job.description else "No description available",
|
||||||
"Job Source": source_name
|
"Job Source": source_name
|
||||||
})
|
})
|
||||||
|
|
||||||
|
print(f"\n✅ {len(all_jobs)} jobs retrieved")
|
||||||
return all_jobs
|
return all_jobs
|
||||||
|
|
||||||
def save_jobs_to_csv(jobs, filename):
|
def save_jobs_to_csv(jobs, filename):
|
||||||
if not jobs:
|
if not jobs:
|
||||||
print("⚠️ No jobs found.")
|
print("⚠️ No jobs found matching criteria.")
|
||||||
return
|
return
|
||||||
|
|
||||||
fieldnames = list(jobs[0].keys())
|
if os.path.exists(filename):
|
||||||
header = "|~|".join(fieldnames)
|
os.remove(filename)
|
||||||
records = [header]
|
|
||||||
|
fieldnames = [
|
||||||
|
"Job ID", "Job Title (Primary)", "Company Name", "Industry",
|
||||||
|
"Experience Level", "Job Type", "Is Remote", "Currency",
|
||||||
|
"Salary Min", "Salary Max", "Date Posted", "Location City",
|
||||||
|
"Location State", "Location Country", "Job URL", "Job Description",
|
||||||
|
"Job Source"
|
||||||
|
]
|
||||||
|
|
||||||
|
header_record = "|~|".join(fieldnames)
|
||||||
|
records = [header_record]
|
||||||
|
|
||||||
for job in jobs:
|
for job in jobs:
|
||||||
row = [str(job.get(field, "Not Provided")).replace(",", "") for field in fieldnames]
|
row = []
|
||||||
records.append("|~|".join(row))
|
for field in fieldnames:
|
||||||
|
value = str(job.get(field, "")).strip()
|
||||||
|
if not value:
|
||||||
|
value = "Not Provided"
|
||||||
|
value = value.replace(",", "")
|
||||||
|
row.append(value)
|
||||||
|
record = "|~|".join(row)
|
||||||
|
records.append(record)
|
||||||
|
|
||||||
output = ",".join(records)
|
output = ",".join(records)
|
||||||
with open(filename, "w", encoding="utf-8") as f:
|
with open(filename, "w", encoding="utf-8") as file:
|
||||||
f.write(output)
|
file.write(output)
|
||||||
|
|
||||||
print(f"✅ Saved {len(jobs)} jobs to {filename}")
|
print(f"✅ Jobs saved to {filename} ({len(jobs)} entries)")
|
||||||
|
|
||||||
# Run
|
# MAIN
|
||||||
scraped_jobs = scrape_jobs()
|
if __name__ == "__main__":
|
||||||
save_jobs_to_csv(scraped_jobs, output_filename)
|
if len(sys.argv) < 6:
|
||||||
|
print("ℹ️ CLI arguments not provided. Falling back to config.json")
|
||||||
|
|
||||||
|
with open("config.json", "r") as f:
|
||||||
|
config = json.load(f)
|
||||||
|
|
||||||
|
search_terms_str = ",".join(config["search_terms"])
|
||||||
|
results_wanted = config["results_wanted"]
|
||||||
|
max_days_old = config["max_days_old"]
|
||||||
|
target_state = config["target_state"]
|
||||||
|
user_email = config["user_email"]
|
||||||
|
else:
|
||||||
|
search_terms_str = sys.argv[1]
|
||||||
|
results_wanted = int(sys.argv[2])
|
||||||
|
max_days_old = int(sys.argv[3])
|
||||||
|
target_state = sys.argv[4]
|
||||||
|
user_email = sys.argv[5]
|
||||||
|
|
||||||
|
safe_email = sanitize_email(user_email)
|
||||||
|
search_terms = [term.strip() for term in search_terms_str.split(",")]
|
||||||
|
|
||||||
|
job_data = scrape_jobs(search_terms, results_wanted, max_days_old, target_state)
|
||||||
|
filename = f"jobspy_output_dynamic_{safe_email}.csv"
|
||||||
|
save_jobs_to_csv(job_data, filename)
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
Job ID|Job Title (Primary)|Company Name|Industry|Experience Level|Job Type|Is Remote|Currency|Salary Min|Salary Max|Date Posted|Location City|Location State|Location Country|Job URL|Job Description|Job Source|User Email
|
Job ID|~|Job Title (Primary)|~|Company Name|~|Industry|~|Experience Level|~|Job Type|~|Is Remote|~|Currency|~|Salary Min|~|Salary Max|~|Date Posted|~|Location City|~|Location State|~|Location Country|~|Job URL|~|Job Description|~|Job Source,in-748fcd06c48d9977|~|IT Support Engineer|~|HALO|~|Not Provided|~|Not Provided|~|FULL_TIME|~|True|~|USD|~|59000.0|~|83000.0|~|2025-04-14|~|Unknown|~|IL|~|US|~|https://www.indeed.com/viewjob?jk=748fcd06c48d9977|~|Description:
|
||||||
in-748fcd06c48d9977|IT Support Engineer|HALO|Not Provided|Not Provided|FULL_TIME|True|USD|59000.0|83000.0|2025-04-14|Unknown|IL|US|https://www.indeed.com/viewjob?jk=748fcd06c48d9977|"Description:
|
|
||||||
|
|
||||||
We are HALO! We connect people and brands to create unforgettable meaningful and lasting experiences that build brand engagement and loyalty for our over 60000 clients globally including over 100 of the Fortune 500\. Our nearly 2000 employees and 1000 Account Executives located in 40\+ sales offices across the United States are the reason HALO is \#1 in our $25B industry.
|
We are HALO! We connect people and brands to create unforgettable meaningful and lasting experiences that build brand engagement and loyalty for our over 60000 clients globally including over 100 of the Fortune 500\. Our nearly 2000 employees and 1000 Account Executives located in 40\+ sales offices across the United States are the reason HALO is \#1 in our $25B industry.
|
||||||
|
|
||||||
|
@ -70,77 +69,7 @@ HALO is an equal opportunity employer. We celebrate diversity and are committed
|
||||||
|
|
||||||
HALO participates in E\-Verify. Please see the following notices in English and Spanish for important information: E\-Verify Participation and Right to Work.
|
HALO participates in E\-Verify. Please see the following notices in English and Spanish for important information: E\-Verify Participation and Right to Work.
|
||||||
|
|
||||||
*HALO is committed to working with and providing reasonable accommodations to individuals with disabilities. If you need reasonable accommodation because of a disability for any part of the employment process – including the online application and/or overall selection process – you may email us at hr@halo.com. Please do not use this as an alternative method for general inquiries or status on applications as you will not receive a response. Reasonable requests will be reviewed and responded to on a case\-by\-case basis.*"|indeed|branden@autoemployme.onmicrosoft.com
|
*HALO is committed to working with and providing reasonable accommodations to individuals with disabilities. If you need reasonable accommodation because of a disability for any part of the employment process – including the online application and/or overall selection process – you may email us at hr@halo.com. Please do not use this as an alternative method for general inquiries or status on applications as you will not receive a response. Reasonable requests will be reviewed and responded to on a case\-by\-case basis.*|~|indeed,go-W0Tmb9QGOz3Lib5hAAAAAA==|~|Product Manager CRM Marketing & Data Cloud|~|PPG|~|Not Provided|~|Not Provided|~|Not Provided|~|True|~|Not Provided|~|Not Provided|~|Not Provided|~|2025-04-12|~|Pittsburgh|~|PA|~|Unknown|~|https://careers.ppg.com/us/en/job/PIIPIIUSJR2433940EXTERNALENUS/Product-Manager-CRM-Marketing-Data-Cloud?utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic|~|As the Digital Product Manager CRM Marketing & Data Cloud you will play a pivotal role in shaping and executing our strategy to optimize customer engagement retention and acquisition. In order to unlock financial impact you will lead a cross functional cross business unit team through delivery of Salesforce Marketing Cloud Account Engagement & Salesforce Data Cloud and collaborate closely with cross-functional teams including Marketing Sales Commercial Excellence and IT to drive the development implementation and process improvement of CRM solutions.
|
||||||
in-1f62da3108b481fc|IT Support Specialist|Scanning Sherpas|Not Provided|Not Provided|CONTRACT|True||||2025-04-14|Unknown|UT|US|https://www.indeed.com/viewjob?jk=1f62da3108b481fc|"**About the Job**
|
|
||||||
|
|
||||||
Scanning Sherpas is a trusted medical record retrieval company with over a decade of experience. A Sherpa is a guide who wisely and expertly leads explorers through the most challenging and difficult terrains on earth. Likewise IT Support Specialists helps their fellow Sherpas navigate the complexities and pitfalls of technical issues.
|
|
||||||
|
|
||||||
As an IT Support Specialist you will play a crucial role in ensuring our team can work efficiently and securely from anywhere. You will be responsible for troubleshooting technical issues assisting the security team and managing various administrative tasks. Your expertise in remote work technologies security protocols and IT administration will be essential in maintaining our high standards of service.
|
|
||||||
|
|
||||||
We are seeking a highly skilled IT Support Specialist to join our team as a 1099 contractor. The ideal candidate will be responsible for providing technical support to a 100% remote workforce assisting the security team and managing various administrative and compliance tasks. This role requires a strong understanding of remote work technologies security protocols and IT administration.
|
|
||||||
|
|
||||||
As Sherpas Our Principles Guide Us: Integrity Honesty Reliability Respect Patience Consistency Resourcefulness
|
|
||||||
|
|
||||||
**Job Duties**
|
|
||||||
|
|
||||||
* Provide technical support to remote employees troubleshooting hardware and software issues.
|
|
||||||
* Assist the security team in implementing and maintaining security protocols and measures.
|
|
||||||
* Manage user accounts permissions and access controls.
|
|
||||||
* Manage computer hardware inventory preparing and shipping replacement systems as needed.
|
|
||||||
* Administer and support remote work tools and platforms.
|
|
||||||
* Assist in the development and implementation of IT policies and procedures.
|
|
||||||
* Provide training and support to employees on IT\-related topics.
|
|
||||||
* Collaborate with other IT team members to resolve complex technical issues.
|
|
||||||
* Maintain accurate documentation of IT processes and procedures.
|
|
||||||
* Other duties as assigned.
|
|
||||||
|
|
||||||
**Job Requirements**
|
|
||||||
|
|
||||||
* High School Diploma/GED is required.
|
|
||||||
* Proven experience in IT support preferably in a remote work environment.
|
|
||||||
* Ability to patiently provide training and support to remote employees.
|
|
||||||
* Strong understanding of security protocols and best practices.
|
|
||||||
* Proficiency in remote work tools and platforms especially VPN and remote desktop.
|
|
||||||
* Familiarity with IT administration and management.
|
|
||||||
* Excellent problem\-solving and troubleshooting skills especially on Windows.
|
|
||||||
* Strong communication and interpersonal skills.
|
|
||||||
* Ability to work independently and as part of a team.
|
|
||||||
|
|
||||||
**Job Requirements (Preferred)**
|
|
||||||
|
|
||||||
* Bachelor's degree in IT Computer Science or a related field is preferred.
|
|
||||||
* Knowledge of HIPAA standards and AICPA SOC2 is preferred.
|
|
||||||
* Familiarity with Microsoft Intune and Google Workspace administration.
|
|
||||||
* Strong organizational and documentation skills.
|
|
||||||
* Healthcare industry experience.
|
|
||||||
* Certifications: CompTIA A\+ CompTIA Security\+ Certified Information Systems Security Professional (CISSP)
|
|
||||||
|
|
||||||
**Job Classification \& Compensation**
|
|
||||||
|
|
||||||
**Job Type:** 1099 Contractor
|
|
||||||
|
|
||||||
**Pay Range:** TBD
|
|
||||||
|
|
||||||
**Schedule:** Monday to Friday
|
|
||||||
|
|
||||||
Job Type: Contract
|
|
||||||
|
|
||||||
Pay: $1\.00 \- $30\.00 per hour
|
|
||||||
|
|
||||||
Education:
|
|
||||||
|
|
||||||
* Bachelor's (Preferred)
|
|
||||||
|
|
||||||
Experience:
|
|
||||||
|
|
||||||
* IT support: 3 years (Required)
|
|
||||||
|
|
||||||
Location:
|
|
||||||
|
|
||||||
* Utah (Required)
|
|
||||||
|
|
||||||
Work Location: Remote"|indeed|branden@autoemployme.onmicrosoft.com
|
|
||||||
go-W0Tmb9QGOz3Lib5hAAAAAA==|Product Manager, CRM Marketing & Data Cloud|PPG|Not Provided|Not Provided|Not Provided|True||||2025-04-12|Pittsburgh|PA|Unknown|https://careers.ppg.com/us/en/job/PIIPIIUSJR2433940EXTERNALENUS/Product-Manager-CRM-Marketing-Data-Cloud?utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic|"As the Digital Product Manager CRM Marketing & Data Cloud you will play a pivotal role in shaping and executing our strategy to optimize customer engagement retention and acquisition. In order to unlock financial impact you will lead a cross functional cross business unit team through delivery of Salesforce Marketing Cloud Account Engagement & Salesforce Data Cloud and collaborate closely with cross-functional teams including Marketing Sales Commercial Excellence and IT to drive the development implementation and process improvement of CRM solutions.
|
|
||||||
|
|
||||||
This is a role will require 20-30% travel. It is based in Pittsburgh PA (USA) or Remote. Relocation assistance available.
|
This is a role will require 20-30% travel. It is based in Pittsburgh PA (USA) or Remote. Relocation assistance available.
|
||||||
|
|
||||||
|
@ -197,169 +126,4 @@ PPG provides equal opportunity to all candidates and employees. We offer an oppo
|
||||||
|
|
||||||
PPG values your feedback on our recruiting process. We encourage you to visit Glassdoor.com and provide feedback on the process so that we can do better today than yesterday.
|
PPG values your feedback on our recruiting process. We encourage you to visit Glassdoor.com and provide feedback on the process so that we can do better today than yesterday.
|
||||||
|
|
||||||
Benefits will be discussed with you by your recruiter during the hiring process."|google|branden@autoemployme.onmicrosoft.com
|
Benefits will be discussed with you by your recruiter during the hiring process.|~|google
|
||||||
go-YinELSTXGom9gJNnAAAAAA==|CRM and Loyalty Manager (Healthcare) - Full-time|Nestle|Not Provided|Not Provided|Not Provided|True||||2025-04-13|Bridgewater|NJ|Unknown|https://www.snagajob.com/jobs/1066851347?utm_campaign=google_jobs_apply&utm_source=google_jobs_apply&utm_medium=organic|"At Nestlé Health Science we believe that nutrition science and wellness must merge not collide. Here we embrace the intrinsic connections of these three pillars harnessing their collective strength to empower healthier lives. Our broad product portfolio includes renowned brands like Garden of Life® Nature's Bounty® Vital Proteins® Orgain® Nuun® BOOST® Carnation Breakfast Essentials® Peptamen® Compleat Organic Blends® and more. We also have extensive pharmaceutical expertise offering innovative medicines that aim to prevent manage and treat gastrointestinal and metabolic-related diseases.
|
|
||||||
|
|
||||||
At Nestlé Health Science we bring our best for better lives. Our people are challenged to bring fresh diverse views and make bold moves to empower healthier lives through nutrition. We know brilliant ideas can come from anyone anywhere. Here we embrace the entrepreneurial spirit and collaborate with teams that champion focused and forward thinking. We are committed to fostering professional growth and celebrating the achievements of our people along the way. We offer dynamic career paths robust development opportunities to learn from talented colleagues around the globe and benefits that support physical financial and emotional wellbeing.
|
|
||||||
|
|
||||||
Join us to innovate for impact and reimagine the future of health and nutrition for patients and consumers.
|
|
||||||
• *POSITION SUMMARY:**
|
|
||||||
|
|
||||||
The healthcare marketing landscape is changing fast. Healthcare professionals are increasingly expecting their engagements with companies and brands to be more digital going forward. Nestlé Health Science recognizes the importance of finding and reaching our customers where they are and that means increasing our commitment to transforming our marketing strategy and focusing on healthcare professionals (HCP) Omnichannel.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The CRM & Loyalty Manager (Healthcare) is responsible for developing and executing data-driven CRM strategies to enhance healthcare professionals customer engagement retention and lifetime value. This person will own the end-to-end management of customer email & SMS campaigns and journeys from creation to optimization and drive innovation through testing and continuous improvement. This role requires a strategic thinker with hands-on experience in CRM tools and a passion for creating an effective HCP Omnichannel experience. This is a remote opportunity with quarterly travel anticipated.
|
|
||||||
• *KEY RESPONSIBILITIES:**
|
|
||||||
|
|
||||||
+ Oversight of email & SMS marketing as well as a loyalty program focused on reaching Healthcare Professionals for Nestlé Health Science Professional Health Brands to drive customer acquisition engagement retention and loyalty.
|
|
||||||
|
|
||||||
+ Create email and SMS campaigns including calendar management briefing routing QA audience segmentation and scheduling.
|
|
||||||
|
|
||||||
+ Build new automated journeys including creative process and creation of flow structure.
|
|
||||||
|
|
||||||
+ Optimize existing email & SMS through continuous analysis and improvements.
|
|
||||||
|
|
||||||
+ Manage CRM marketing zero & first-party data including incoming leads audiences lists and supplemental profile data.
|
|
||||||
|
|
||||||
+ Develop and maintain a testing roadmap including A/B and multi-variate tests to improve engagement and conversion metrics.
|
|
||||||
|
|
||||||
+ Manage HCP loyalty program.
|
|
||||||
|
|
||||||
+ Measure and report performance of all email SMS and loyalty activations. Lead monthly and quarterly reports internal stakeholders and leadership.
|
|
||||||
|
|
||||||
+ Establish relationships and collaborate cross-functionally with Brand Creative & Development Marketing Technology Medical/Legal/Regulatory and Sales partners.
|
|
||||||
|
|
||||||
+ Own HCP loyalty program including earning methods rewards referrals tiering and corresponding promotions.
|
|
||||||
|
|
||||||
+ Understand each brand’s target audience overall business goals and strategic marketing objectives.
|
|
||||||
|
|
||||||
+ Facilitate HCP Omnichannel strategy and execution to ensure consistency across online and offline touchpoints such as conferences educational webinars media etc.
|
|
||||||
|
|
||||||
+ Thought Leadership: Maintain and share expert knowledge of key HCP engagement tactics and the latest industry and market trends along with a POV on what/how we can leverage for our own brand.
|
|
||||||
• *EXPERIENCE AND EDUCATION REQUIREMENTS:**
|
|
||||||
|
|
||||||
+ Bachelor's Degree in Marketing Communications or similar field is required.
|
|
||||||
|
|
||||||
+ At least 5 years of experience with CRM & loyalty strategy and hands-on program execution ideally in the healthcare space with 2+ years of Healthcare Professional CRM experience.
|
|
||||||
|
|
||||||
+ Experience leveraging marketing automation/ESP systems like Salesforce Marketing Cloud Salesforce Account Engagement or Klaviyo required.
|
|
||||||
|
|
||||||
+ Experience using loyalty platforms like Yotpo or Salesforce Loyalty Management preferred.
|
|
||||||
|
|
||||||
+ Expertise in customer segmentation list management deliverability and CAN-SPAM laws.
|
|
||||||
|
|
||||||
+ Experience with data-driven marketing and building programs that drive incremental results.
|
|
||||||
|
|
||||||
+ Ability to handle multiple parallel projects across a large portfolio of products.
|
|
||||||
• *PREFERRED SKILLS:**
|
|
||||||
|
|
||||||
+ Communication skills.
|
|
||||||
|
|
||||||
+ Ability to build strong working relationships both internally and externally.
|
|
||||||
|
|
||||||
+ Project management skills.
|
|
||||||
|
|
||||||
+ Analytical skills and understanding of KPI's for CRM and loyalty.
|
|
||||||
|
|
||||||
+ Comfortable with learning new technologies.
|
|
||||||
• *This position will be either a remote or hybrid role based on the selected candidate’s geographic location. Preference will be given to applicants who live within a commutable distance of Bridgewater NJ Chicago IL Palm Beach Gardens FL or Long Island NY.**
|
|
||||||
|
|
||||||
The approximate pay range for this position is $110000 to $130000. Please note that the pay range provided is a good faith estimate for the position at the time of posting. Final compensation may vary based on factors including but not limited to knowledge skills and abilities as well as geographic location.
|
|
||||||
|
|
||||||
Nestlé offers performance-based incentives and a competitive total rewards package which includes a 401k with company match healthcare coverage and a broad range of other benefits. Incentives and/or benefit packages may vary depending on the position. Learn more at About Us | Nestlé Careers (nestlejobs.com (https://www.nestlejobs.com/nestle-in-the-us-benefits?\_ga=2.125317066.1960119700.1733792577-1548146364.1721143580) ).
|
|
||||||
|
|
||||||
Requisition ID: 338994
|
|
||||||
|
|
||||||
It is our business imperative to remain a very inclusive workplace.
|
|
||||||
|
|
||||||
To our veterans and separated service members you're at the forefront of our minds as we recruit top talent to join Nestlé. The skills you've gained while serving our country such as flexibility agility and leadership are much like the skills that will make you successful in this role. In addition with our commitment to an inclusive work environment we recognize the exceptional engagement and innovation displayed by individuals with disabilities. Nestlé seeks such skilled and qualified individuals to share our mission where you’ll join a cohort of others who have chosen to call Nestlé home.
|
|
||||||
|
|
||||||
The Nestlé Companies are equal employment opportunity employers. All applicants will receive consideration for employment without regard to race color religion sex sexual orientation gender identity national origin disability or veteran status or any other characteristic protected by applicable law. Prior to the next step in the recruiting process we welcome you to inform us confidentially if you may require any special accommodations in order to participate fully in our recruitment experience. Contact us at accommodations@nestle.com or please dial 711 and provide this number to the operator: 1-800-321-6467.
|
|
||||||
|
|
||||||
This position is not eligible for Visa Sponsorship.
|
|
||||||
|
|
||||||
Review our applicant privacy notice before applying at https://www.nestlejobs.com/privacy.
|
|
||||||
|
|
||||||
At Nestlé Health Science we believe that nutrition science and wellness must merge not collide. Here we embrace the intrinsic connections of these three pillars harnessing their collective strength to empower healthier lives. Our broad product portfolio includes renowned brands like Garden of Life® Nature's Bounty® Vital Proteins® Orgain® Nuun® BOOST® Carnation Breakfast Essentials® Peptamen® Compleat Organic Blends® and more. We also have extensive pharmaceutical expertise offering innovative medicines that aim to prevent manage and treat gastrointestinal and metabolic-related diseases.
|
|
||||||
|
|
||||||
At Nestlé Health Science we bring our best for better lives. Our people are challenged to bring fresh diverse views and make bold moves to empower healthier lives through nutrition. We know brilliant ideas can come from anyone anywhere. Here we embrace the entrepreneurial spirit and collaborate with teams that champion focused and forward thinking. We are committed to fostering professional growth and celebrating the achievements of our people along the way. We offer dynamic career paths robust development opportunities to learn from talented colleagues around the globe and benefits that support physical financial and emotional wellbeing.
|
|
||||||
|
|
||||||
Join us to innovate for impact and reimagine the future of health and nutrition for patients and consumers.
|
|
||||||
• *POSITION SUMMARY:**
|
|
||||||
|
|
||||||
The healthcare marketing landscape is changing fast. Healthcare professionals are increasingly expecting their engagements with companies and brands to be more digital going forward. Nestlé Health Science recognizes the importance of finding and reaching our customers where they are and that means increasing our commitment to transforming our marketing strategy and focusing on healthcare professionals (HCP) Omnichannel.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The CRM & Loyalty Manager (Healthcare) is responsible for developing and executing data-driven CRM strategies to enhance healthcare professionals customer engagement retention and lifetime value. This person will own the end-to-end management of customer email & SMS campaigns and journeys from creation to optimization and drive innovation through testing and continuous improvement. This role requires a strategic thinker with hands-on experience in CRM tools and a passion for creating an effective HCP Omnichannel experience. This is a remote opportunity with quarterly travel anticipated.
|
|
||||||
• *KEY RESPONSIBILITIES:**
|
|
||||||
|
|
||||||
+ Oversight of email & SMS marketing as well as a loyalty program focused on reaching Healthcare Professionals for Nestlé Health Science Professional Health Brands to drive customer acquisition engagement retention and loyalty.
|
|
||||||
|
|
||||||
+ Create email and SMS campaigns including calendar management briefing routing QA audience segmentation and scheduling.
|
|
||||||
|
|
||||||
+ Build new automated journeys including creative process and creation of flow structure.
|
|
||||||
|
|
||||||
+ Optimize existing email & SMS through continuous analysis and improvements.
|
|
||||||
|
|
||||||
+ Manage CRM marketing zero & first-party data including incoming leads audiences lists and supplemental profile data.
|
|
||||||
|
|
||||||
+ Develop and maintain a testing roadmap including A/B and multi-variate tests to improve engagement and conversion metrics.
|
|
||||||
|
|
||||||
+ Manage HCP loyalty program.
|
|
||||||
|
|
||||||
+ Measure and report performance of all email SMS and loyalty activations. Lead monthly and quarterly reports internal stakeholders and leadership.
|
|
||||||
|
|
||||||
+ Establish relationships and collaborate cross-functionally with Brand Creative & Development Marketing Technology Medical/Legal/Regulatory and Sales partners.
|
|
||||||
|
|
||||||
+ Own HCP loyalty program including earning methods rewards referrals tiering and corresponding promotions.
|
|
||||||
|
|
||||||
+ Understand each brand’s target audience overall business goals and strategic marketing objectives.
|
|
||||||
|
|
||||||
+ Facilitate HCP Omnichannel strategy and execution to ensure consistency across online and offline touchpoints such as conferences educational webinars media etc.
|
|
||||||
|
|
||||||
+ Thought Leadership: Maintain and share expert knowledge of key HCP engagement tactics and the latest industry and market trends along with a POV on what/how we can leverage for our own brand.
|
|
||||||
• *EXPERIENCE AND EDUCATION REQUIREMENTS:**
|
|
||||||
|
|
||||||
+ Bachelor's Degree in Marketing Communications or similar field is required.
|
|
||||||
|
|
||||||
+ At least 5 years of experience with CRM & loyalty strategy and hands-on program execution ideally in the healthcare space with 2+ years of Healthcare Professional CRM experience.
|
|
||||||
|
|
||||||
+ Experience leveraging marketing automation/ESP systems like Salesforce Marketing Cloud Salesforce Account Engagement or Klaviyo required.
|
|
||||||
|
|
||||||
+ Experience using loyalty platforms like Yotpo or Salesforce Loyalty Management preferred.
|
|
||||||
|
|
||||||
+ Expertise in customer segmentation list management deliverability and CAN-SPAM laws.
|
|
||||||
|
|
||||||
+ Experience with data-driven marketing and building programs that drive incremental results.
|
|
||||||
|
|
||||||
+ Ability to handle multiple parallel projects across a large portfolio of products.
|
|
||||||
• *PREFERRED SKILLS:**
|
|
||||||
|
|
||||||
+ Communication skills.
|
|
||||||
|
|
||||||
+ Ability to build strong working relationships both internally and externally.
|
|
||||||
|
|
||||||
+ Project management skills.
|
|
||||||
|
|
||||||
+ Analytical skills and understanding of KPI's for CRM and loyalty.
|
|
||||||
|
|
||||||
+ Comfortable with learning new technologies.
|
|
||||||
• *This position will be either a remote or hybrid role based on the selected candidate’s geographic location. Preference will be given to applicants who live within a commutable distance of Bridgewater NJ Chicago IL Palm Beach Gardens FL or Long Island NY.**
|
|
||||||
|
|
||||||
The approximate pay range for this position is $110000 to $130000. Please note that the pay range provided is a good faith estimate for the position at the time of posting. Final compensation may vary based on factors including but not limited to knowledge skills and abilities as well as geographic location.
|
|
||||||
|
|
||||||
Nestlé offers performance-based incentives and a competitive total rewards package which includes a 401k with company match healthcare coverage and a broad range of other benefits. Incentives and/or benefit packages may vary depending on the position. Learn more at About Us | Nestlé Careers (nestlejobs.com (https://www.nestlejobs.com/nestle-in-the-us-benefits?\_ga=2.125317066.1960119700.1733792577-1548146364.1721143580) ).
|
|
||||||
|
|
||||||
Requisition ID: 338994
|
|
||||||
|
|
||||||
It is our business imperative to remain a very inclusive workplace.
|
|
||||||
|
|
||||||
To our veterans and separated service members you're at the forefront of our minds as we recruit top talent to join Nestlé. The skills you've gained while serving our country such as flexibility agility and leadership are much like the skills that will make you successful in this role. In addition with our commitment to an inclusive work environment we recognize the exceptional engagement and innovation displayed by individuals with disabilities. Nestlé seeks such skilled and qualified individuals to share our mission where you’ll join a cohort of others who have chosen to call Nestlé home.
|
|
||||||
|
|
||||||
The Nestlé Companies are equal employment opportunity employers. All applicants will receive consideration for employment without regard to race color religion sex sexual orientation gender identity national origin disability or veteran status or any other characteristic protected by applicable law. Prior to the next step in the recruiting process we welcome you to inform us confidentially if you may require any special accommodations in order to participate fully in our recruitment experience. Contact us at accommodations@nestle.com or please dial 711 and provide this number to the operator: 1-800-321-6467.
|
|
||||||
|
|
||||||
This position is not eligible for Visa Sponsorship.
|
|
||||||
|
|
||||||
Review our applicant privacy notice before applying at https://www.nestlejobs.com/privacy."|google|branden@autoemployme.onmicrosoft.com
|
|
|
Loading…
Reference in New Issue