Reclaiming Time: Why (and How) I Built Job Share Hub for Students
#PLATFORM ENGINEERINGMar 10, 202610 min read

Reclaiming Time: Why (and How) I Built Job Share Hub for Students

The Motivation

In my early student days, the hardest part of breaking into tech was not coding itself. It was the exhausting job hunt. I watched peers spend hours every day scrolling LinkedIn, filtering irrelevant posts, and manually tracking opportunities.

That time should have gone into learning, building projects, and interview prep. I wanted to automate the most tedious parts of discovery so students could reclaim time and focus.

That idea became Job Share Hub: a centralized, automated platform that surfaces relevant opportunities in a clean and distraction-free interface.

Daily Active Users

60+

Time Saved

10+ hrs/week

Jobs Curated

1,000+

Maintenance

100% Automated

How I Built It

Data Engine

Python scripts such as collect_job_urls_unique.py and fetch_job_details.py use Selenium + BeautifulSoup to discover opportunities, enrich details, and remove expired listings every 24 hours.

Frontend Experience

Built with Next.js and Tailwind CSS for a fast, minimal, and student-friendly interface where the value is visible immediately after login.

Secure Access

Clerk authentication and authorization secure sessions and gate access while keeping sign-in smooth and frictionless.

A Look at Job Share Hub

Job Share Hub landing page
Public landing interface designed for focused entry into the feed.
Job Share Hub job categories dashboard
Authenticated dashboard with categorized opportunities and freshness signals.

Architecture: Under the Hood

1) MCP Server Core

The scraping core is built around an MCP server (linkedin_server.py) using FastMCP. This converts tools like get_job_details and search_jobs into modular callable APIs instead of a single monolithic scraper.

It manages LinkedIn access with persistent session cookies and a dual fallback strategy: try lightweight public SEO pages first, then switch to authenticated requests.Session when needed.

2) Unidirectional Data Pipeline

Discovery - collect_job_urls_unique.py

Loops through a matrix of job keywords and locations, buckets jobs by TTL (1h/24h), and performs O(1) URL deduplication using set-based logic.

Extraction - fetch_job_details.py

Consumes deduplicated URLs, fetches raw job pages, and parses DOM structures via BeautifulSoup to extract meaningful role context.

AI Enhancement - enhance_job_roles.py

Uses LangChain + Azure OpenAI with typed Pydantic output parsing to enrich listings with clean role labels, skill tags, and stipend/salary fields.

Garbage Collection - cleanup_24h.py

Prunes stale entries every 24 hours so the feed remains lightweight, current, and fully self-maintaining.

3) Frontend + Deployment Strategy

The Next.js 16 + React 19 frontend is fully decoupled from scraping. Instead of live database queries, pipeline output is compiled into static JSON files (jobs_data.json and job_details.json) consumed by the frontend from /public.

The pipeline is orchestrated through sequential scripts and Git-based publishing, enabling fast delivery to hosted environments with minimal runtime infrastructure cost.

Why This Project Matters

  • - Demonstrates modern AI-native architecture with MCP-driven tooling.
  • - Applies practical CS depth: O(1) deduplication, DOM parsing, and stateless JWT security.
  • - Shows production tradeoff maturity: static JSON serving for low latency, low cost, and operational simplicity.

Looking Forward

Job Share Hub started from empathy for students and grew into a production-ready automation system. It keeps proving a simple idea: the best products often solve the pains your friends face every day.