Back to portfolio

LinkedInsanity

JavaScriptBrowser Automation
Preview of LinkedInsanity

Automated LinkedIn Easy Applier with customazible settings

Overview

LinkedInsanity is a desktop automation tool that helps job seekers apply to large numbers of LinkedIn “Easy Apply” jobs without manually clicking through each form. It wraps a fairly sophisticated browser automation core in a UI that non‑technical users can actually run.

My role & scope

I built both sides: the Node.js + Playwright automation core and the Electron + React client. The project took around 4–6 weeks from initial spike to a working tool that can log in, discover jobs, and submit applications at scale.

Under the hood

  • Node.js + Playwright to control a real Chromium instance, navigate LinkedIn, and behave like a human: scrolling, waiting, and interacting with job cards.
  • Electron + React + TypeScript to ship a cross‑platform desktop app that wraps the automation in a friendly UI.
  • SQLite for lightweight persistence of job IDs and application history, making sure the tool never re‑applies to the same position twice.

Interesting challenges

The hardest problem was orchestrating the full “discover → parse form → submit” loop safely. I split the core into focused modules: fetching job cards, resolving LinkedIn tracking IDs, interpreting dynamic application forms, and finally constructing the exact payloads LinkedIn expects. That separation makes it much easier to adapt when LinkedIn changes a single piece of the flow.

What I’d improve next

Longer term, I’d migrate the Node core to TypeScript, move all user data into a proper configuration layer, and add tests around the form‑parsing and tracking‑ID logic to catch LinkedIn changes early.