LIDR

  • mar 27, 2025

Having just finished watching Severance season 2 and being more than a little disappointed by the arbitrary and sudden ending (I don’t watch enough shows to be used to cliffhangers), I wanted to do something with the strange feeling the abruptness of the ending gave me.

Unfortunately rather than exploring the thought provoking themes of the show, the modern reality of work and criticisms of late stage capitalism, my brain went back to the place at which I have spent so much of my time working recently - LinkedIn. I felt there was some similarity on the abstract and futile seeming process of searching for and applying to jobs on platforms such as LinkedIn and Indeed, and the iconic macro data refinement procedure in the show.

Ranting

A perfect representation of the absurd disconnect experienced in modern work, where most people are so many degrees of separation from the end user of the product - the MDR procedure will persist in the cultural zeitgeist until the next great postmodern criticism of capitalism. It will probably be produced by Apple TV. It almost makes these companies feel more connected to us by putting their names on media that explores these themes.

“When it comes time to hang the capitalists, they will vie with each other for the rope contract” - a quote commonly attributed to Lenin, seems apt, but I would argue it is more just a symptom of data mining of our viewing habits. While there is certainly irony in one of the largest companies in the world producing such a show, it is truly just about keeping people paying for their services, rather than anyone high up in the approval process thinking deeply about what the masses want being shows critical of the system they toil under.

Anyway I made LinkedIn Data Refinement in a few hours to represent my dwindling motivation to keep applying for junior software roles at a time of mass layoffs, ghosting, and an AI war between automated application processing systems and AI generated applications. While it is tech job themed, and uses UK place names, it is universally understood by anyone who has been or is currently in a similar place to me. Maybe I will come back to toil away at it when AI-2 starts the next round of layoffs a few years down the line.

Technical details

If you are interested in how I built it, then firstly thanks for reading the above. vite is the framework because its super lightweight and took no configuration. I don’t need this app to do anything complex, so it was ideal. The job listing and job category bin components are react functional components without state. The main app component manages the state and updates the job listing and category bin components with a useMemo.

First the gibberish job data is generated by choosing letters from an alphabet with Math.random for job title and company name, location from a list of places in the uk at random with half being remote, and finally the time posted is also chosen at random within the last month using date-fns. This is all stored in an array for easy referencing.

Next the job listing components are created from the gibberish data via a simple map to the LIJob component, setting all the properties from the job data. The job category bins are created in the same way.

Finally a useEffect chooses a special job at random from a json file bundled with the app, and a random job listing component to swap it into. This special job and which component has been swapped are kept track of so the component can be reset and the special job not used again. The useEffect triggers whenever a job is placed in a category, hence choosing the next job to display.

There are a few more complexities in order to make the game work without errors, but that’s the gist of the app.

A few more details
  • The company logos come from dummyimage.com with the colour and text based on the char code of the first few letters of the company name.

  • The number of jobs on screen is controlled by a simple calculation of how many can fit within the screen, with some padding on top.

  • The completion percentage goes up by reducing amounts each time a job is categorised, sorry if you pushed through to get 100%, but it was not intended to be completed.