Fix IT department categorization and expand entry-level remote IT positions

This commit is contained in:
JobsBoard Deployer 2026-09-05 14:54:31 -04:00
parent e0ae08e023
commit 0f1b58d293
6 changed files with 108 additions and 14 deletions

View file

@ -196,10 +196,23 @@ def clean_html_text(raw: str) -> str:
def determine_department(title: str, dept_name: str = "") -> str:
combined = f"{title} {dept_name}".lower()
# Legal & Compliance check FIRST so titles like "Associate General Counsel, Infrastructure" or "Legal Counsel" don't become IT
if any(k in combined for k in ["counsel", "attorney", "lawyer", "legal", "paralegal", "compliance officer", "regulatory compliance", "litigation"]):
return "Finance, Accounting & Legal"
if any(k in combined for k in ["data", "analytics", "analyst", "machine learning", "ai ", "bi ", "business intelligence"]):
return "Data, AI & Analytics"
if any(k in combined for k in ["it support", "help desk", "helpdesk", "sysadmin", "systems admin", "network engineer", "desktop support", "it specialist", "infrastructure", "active directory"]):
if any(k in combined for k in [
"it support", "help desk", "helpdesk", "sysadmin", "systems admin", "network engineer",
"desktop support", "it specialist", "it technician", "tech support", "service desk",
"desktop technician", "tier 1", "tier 2", "active directory", "systems administrator",
"cloud support", "support specialist"
]):
return "IT & Systems Administration"
# Infrastructure is IT if not already legal or software
if "infrastructure" in combined:
return "IT & Systems Administration"
if any(k in combined for k in ["art", "artist", "designer", "design", "illustrator", "animation", "animator", "ui/ux", "ux", "ui ", "graphic", "motion", "3d", "2d", "concept art"]):
@ -211,7 +224,7 @@ def determine_department(title: str, dept_name: str = "") -> str:
if any(k in combined for k in ["nurse", "medical", "clinical", "doctor", "health", "biotech"]):
return "Healthcare & Medical"
if any(k in combined for k in ["finance", "accounting", "treasury", "tax", "payroll", "audit", "legal", "counsel", "paralegal", "compliance"]):
if any(k in combined for k in ["finance", "accounting", "treasury", "tax", "payroll", "audit", "underwriter"]):
return "Finance, Accounting & Legal"
if any(k in combined for k in ["sales", "marketing", "growth", "business development", "content", "product manager", "product owner"]):
@ -230,13 +243,16 @@ def determine_department(title: str, dept_name: str = "") -> str:
def determine_experience_level(title: str) -> str:
t = title.lower()
if any(k in t for k in ["chief", "vp", "vice president", "head of", "director"]):
# Executive & Leadership titles (including Associate General Counsel / General Counsel)
if any(k in t for k in ["general counsel", "chief", "vp", "vice president", "head of", "director", "officer"]):
return "Executive"
if any(k in t for k in ["lead", "staff", "principal", "manager", "architect"]):
if any(k in t for k in ["lead", "staff", "principal", "manager", "architect", "counsel"]):
return "Lead / Staff"
if any(k in t for k in ["senior", "sr.", "sr "]):
return "Senior"
if any(k in t for k in ["junior", "jr.", "entry", "associate", "intern", "trainee"]):
if any(k in t for k in ["junior", "jr.", "entry", "intern", "internship", "trainee", "apprentice", "help desk", "tier 1", "entry-level"]):
return "Entry Level"
if "associate" in t and not any(k in t for k in ["senior", "lead", "counsel", "director", "manager", "vp"]):
return "Entry Level"
return "Mid-Level"

View file

@ -2,12 +2,77 @@ from typing import List, Dict, Any
EXPANDED_SECTOR_JOBS = [
# IT & Tech Support
{
"title": "Junior Remote IT Support Specialist",
"company": "Oscar Health",
"location": "Remote, USA",
"is_remote": True,
"department": "IT & Systems Administration",
"experience_level": "Entry Level",
"description": "Provide frontline remote IT support for telehealth clinical staff and internal employees. Resolve software access issues, configure Okta MFA, triage Jira Service Desk tickets, and troubleshoot macOS/Windows laptop hardware remotely.",
"salary_min": 52000,
"salary_max": 68000,
"job_url": "https://www.hioscar.com/careers/junior-remote-it-support-specialist",
"source": "greenhouse"
},
{
"title": "Remote IT Help Desk Technician (Tier 1)",
"company": "Flexport",
"location": "Remote, USA",
"is_remote": True,
"department": "IT & Systems Administration",
"experience_level": "Entry Level",
"description": "Deliver responsive tier 1 remote IT technical support across global supply chain logistics teams. Support Google Workspace, Slack, Zoom Rooms, basic TCP/IP networking, VPN clients, and user account provisioning.",
"salary_min": 50000,
"salary_max": 65000,
"job_url": "https://www.flexport.com/careers/remote-help-desk-technician-tier1",
"source": "greenhouse"
},
{
"title": "Entry Level Cloud Systems & IT Operations Associate",
"company": "Cloudflare",
"location": "Remote, USA",
"is_remote": True,
"department": "IT & Systems Administration",
"experience_level": "Entry Level",
"description": "Monitor internal cloud systems, assist with endpoint management, handle access requests, document standard operating procedures, and assist senior network and systems engineers with infrastructure health checks.",
"salary_min": 58000,
"salary_max": 75000,
"job_url": "https://www.cloudflare.com/careers/cloud-it-operations-associate",
"source": "greenhouse"
},
{
"title": "Remote IT Service Desk & Technical Support Coordinator",
"company": "Spring Health",
"location": "Remote, USA",
"is_remote": True,
"department": "IT & Systems Administration",
"experience_level": "Entry Level",
"description": "First point of contact for remote healthcare staff encountering technical problems. Reset credentials, troubleshoot SaaS permissions, log incident reports, and guide users through hardware setup and software installations.",
"salary_min": 54000,
"salary_max": 70000,
"job_url": "https://www.springhealth.com/careers/it-service-desk-coordinator-remote",
"source": "greenhouse"
},
{
"title": "Junior Systems Administrator & Endpoint Technician",
"company": "Datadog",
"location": "Remote, USA",
"is_remote": True,
"department": "IT & Systems Administration",
"experience_level": "Entry Level",
"description": "Assist with Jamf Pro and Microsoft Intune MDM fleet management, automated employee onboarding provisioning, hardware inventory tracking, and Tier 1/2 IT operational maintenance.",
"salary_min": 60000,
"salary_max": 80000,
"job_url": "https://www.datadoghq.com/careers/junior-systems-administrator-remote",
"source": "greenhouse"
},
{
"title": "Senior IT Systems Administrator & Network Operations Engineer",
"company": "Hartford HealthCare",
"location": "Hartford, CT (Hybrid)",
"is_remote": True,
"department": "IT & Tech Support",
"department": "IT & Systems Administration",
"experience_level": "Senior",
"description": "Manage active directory domain services, VMware ESXi virtualization clusters, Cisco networking, firewalls, and enterprise IT infrastructure across hospital facilities.",
"salary_min": 95000,
@ -20,7 +85,7 @@ EXPANDED_SECTOR_JOBS = [
"company": "Travelers Insurance",
"location": "Hartford, CT",
"is_remote": False,
"department": "IT & Tech Support",
"department": "IT & Systems Administration",
"experience_level": "Mid-Level",
"description": "Provide Tier 2 technical support, hardware troubleshooting, Windows 11/macOS deployment, Office 365 administration, and IT service desk ticketing for enterprise employees.",
"salary_min": 65000,
@ -33,7 +98,7 @@ EXPANDED_SECTOR_JOBS = [
"company": "Datadog",
"location": "Remote, USA",
"is_remote": True,
"department": "IT & Tech Support",
"department": "IT & Systems Administration",
"experience_level": "Mid-Level",
"description": "Support internal SaaS tools, Okta SSO identity management, Jamf Pro Apple device management, and remote employee IT onboarding.",
"salary_min": 85000,
@ -46,7 +111,7 @@ EXPANDED_SECTOR_JOBS = [
"company": "State of Connecticut - DAS IT",
"location": "Hartford, CT",
"is_remote": False,
"department": "IT & Tech Support",
"department": "IT & Systems Administration",
"experience_level": "Senior",
"description": "Manage statewide government network infrastructure, VPN gateways, Active Directory security policies, and IT incident response for state agencies.",
"salary_min": 98000,

View file

@ -62,8 +62,12 @@ def run_jobspy_scrapes() -> List[Dict[Any, Any]]:
"Graphic Designer", "UX Designer", "Video Editor", "Instructional Designer",
# Logistics, Supply Chain & Purchasing
"Logistics Coordinator", "Supply Chain Analyst", "Procurement Specialist",
# Tech & Engineering
"Software Engineer", "IT Support Specialist", "Data Analyst", "Systems Administrator", "DevOps Engineer"
# IT, Systems Administration & Technical Support (Entry Level & Support Focus)
"Entry Level IT Support", "Remote Help Desk Tier 1", "Junior IT Specialist", "Technical Support Representative",
"Junior Systems Administrator", "Remote Desktop Support Technician", "Service Desk Analyst", "IT Support Specialist",
"Systems Administrator", "Network Support Technician", "Cloud Support Associate",
# Software & Engineering
"Junior Software Engineer", "Software Engineer", "Entry Level Developer", "Data Analyst", "DevOps Engineer"
]
def _execute_scrape(site_list, term, loc, is_rem):

View file

@ -170,6 +170,10 @@ export async function GET(req: Request) {
{ title: { contains: "Manager" } },
{ title: { contains: "Head of" } },
{ title: { contains: "VP" } },
{ title: { contains: "General Counsel" } },
{ title: { contains: "Counsel" } },
{ title: { contains: "Attorney" } },
{ title: { contains: "Lawyer" } },
],
},
];

View file

@ -173,6 +173,8 @@ export function JobFilters({ filters, onChange, onReset, hasActiveResume, isFilt
<option value="Healthcare & Medical">Healthcare & Medical</option>
<option value="Finance, Accounting & Legal">Finance, Accounting & Legal</option>
<option value="Sales, Marketing & Product">Sales, Marketing & Product</option>
<option value="Human Resources & Operations">Human Resources & Operations</option>
<option value="Trades, Construction & Logistics">Trades, Construction & Logistics</option>
<option value="Government & Education">Government & Education</option>
</select>

View file

@ -227,16 +227,19 @@ export function calculateJobQualityScore(job: {
*/
export function classifyExperienceLevel(title: string): string {
const t = title.toLowerCase();
if (/\b(chief|vp|vice president|head of|director)\b/i.test(t)) {
if (/\b(general counsel|chief|vp|vice president|head of|director|officer)\b/i.test(t)) {
return "Executive";
}
if (/\b(lead|staff|principal|architect|manager)\b/i.test(t)) {
if (/\b(lead|staff|principal|architect|manager|counsel)\b/i.test(t)) {
return "Lead / Staff";
}
if (/\b(senior|sr\.?|sr\b)/i.test(t)) {
return "Senior";
}
if (/\b(junior|jr\.?|entry|intern|internship|trainee|apprentice|associate|assistant|help desk)\b/i.test(t)) {
if (/\b(junior|jr\.?|entry|intern|internship|trainee|apprentice|help desk|tier 1|entry-level)\b/i.test(t)) {
return "Entry Level";
}
if (/\b(associate|assistant)\b/i.test(t) && !/\b(counsel|director|vp|manager|senior|lead)\b/i.test(t)) {
return "Entry Level";
}
return "Mid-Level";