featured

AI is exposing the many flaws of the broken education system

AI tools are showing us just how broken the education system really is.

I recently stumbled upon this article talking about the AI double standard in education.

Teachers are using AI to grade school papers and prepare learning plans — yet they’re banning students from using it.

ChatGPT getting banned in schools and universities tells you everything you need to know about the education system.

School doesn’t prepare anyone for the real world.

If they did then none of these tools clearly used in the real-world would be banned.

All most schools do is feed you with unnecessary or esoteric knowledge you wouldn’t need to use in the vast majority of cases.

In university they box you into a cage of specialization to meet the requirements for a job.

And for most of the jobs, you didn’t even need to know half of the things they made you learn to get the certificate.

Assignments and exams for the most part only test how much you can recall information.

They test your memory retrieval ability. They don’t test your thinking process.

They don’t test how sharp your mental models for solving problems are.

So of course if they allowed AI tools like ChatGPT, everyone would get a perfect score in every exam.

Because all the knowledge is already out there.

Actually, AI is making it pretty clear that assignments and exams shouldn’t even really exist.

If school was really about learning, then the focus would be on personalized, hands-on, interactive practice.

It wouldn’t be about knowing the “right” answers and getting a terrible grade if you don’t.

Grades wouldn’t even be a thing, at least in their current form.

School wouldn’t be about getting the correct solution if you want to “pass”, it would be about becoming someone who can solve problems — especially big picture problems that really matter in life — or at least should really matter.

And using powerful tools to help us solve the problems even easier and faster.

And what if AI could eventually solve the problem entirely without us even having to think about it?

Would it be so wrong to have AI “think” for us, especially for irrelevant problems we’d rather not handle ourselves?

Relatively boring, repetitive problems?

Problems that already have well-established and predictable methods for solving them that today’s AI’s could easily internalize and replicate.

Problems like coding, for the most part.

But sadly most schools mainly exist to take your money and produce certified drones.

They’re not about big-picture, original thinking or the pursuit of happiness.

Too idealistic, right?

OpenAI’s o3 and o4-mini models are bigger than you think

This is incredible.

o3 and o4-mini are massive leaps towards a versatile general purpose AI.

This is insane — the model intelligently knew exactly what the person wrote here — actually figured out it was upside down and rotated it.

They are taking things to a whole new level with complex multimodal reasoning.

This one is even more insane — it easily solved a complicated maze and accurately drew the path it took from start to finish.

With perfectly accurate code to draw the path.

Multimodal reasoning is a major step towards an AI that could understand and interact with the entire virtual or physical world in every possible way.

Imagine how much more powerful it would be when they start thinking with audio and video.

It’s a major step towards a general purpose AI that can work with any kind of data in any situation.

o3: Powerful multimodal reasoning model — deeper analysis, problem-solving, decision-making.

o4-mini: Smaller sibling of o4 — efficient but still pretty impressive.

The possibilities are endless:

  • Solve complex visual puzzles — like we saw for the maze
  • Navigate charts, graphs, and infographics
  • Perform spatial and logical reasoning grounded in visuals
  • Blend information from images and text to make better decisions

Multimodal reasoning AI isn’t just gonna write code or help you decide where to go on your next holiday.

It’ll be able to work directly with:

  • Blueprints and maps
  • Body language
  • Scientific diagrams

This will be huge for AIs that interact with the physical world.

Imagine your personal AI assistant that could infer your desires without you even having to tell it anything.

Now we mostly talk to assistants in just text format…

But with multimodal AI’s they could use input from so many other things other than the words you’re actually saying:

  • The tone of your voice (audio)
  • Your facial expression (visual)
  • Your body language (visual)

And of course still using context from your previous messages and conversations.

It could understand you at such a deep level and give ultra-personalized suggestions for whatever you ask.

OpenAI’s new GPT 4.1 coding model is insane — even destroys 4.5

Wow this is incredible.

OpenAI’s new GPT 4.1 model blows almost every other model out of the water — including GPT 4.5 (terrible naming I know).

It’s not even close — just look at what GPT 4o and GPT 4.1 produced for the exact same prompt:

❌ Before: GPT 4o

Prompt:

Make a flashcard web application.
The user should be able to create flashcards, search through their existing flashcards, review flashcards, and see statistics on flashcards reviewed.
Preload ten cards containing a Hindi word or phrase and its English translation.
Review interface: In the review interface, clicking or pressing Space should flip the card with a smooth 3-D animation to reveal the translation. Pressing the arrow keys should navigate through cards.
Search interface: The search bar should dynamically provide a list of results as the user types in a query.
Statistics interface: The stats page should show a graph of the number of cards the user has reviewed, and the percentage they have gotten correct.
Create cards interface: The create cards page should allow the user to specify the front and back of a flashcard and add to the user’s collection. Each of these interfaces should be accessible in the sidebar. Generate a single page React app (put all styles inline).

✅ Now look at what GPT 4.1 produced for the same prompt:

The 4.1 version is just way better in every way:

  • ✅ Cleaner and more intuitive inputs
  • ✅ Better feedback with the user
  • ✅ Polished UI with icons and color

It’s a massive improvement — which is why IDEs like Windsurf and Cursor quickly added GPT 4.1 support just a few hours after its release.

Major GPT-4.1 enhancements

1 million

GPT 4.1 has a breakthrough 1 million token context window.

Way higher than the previous 128,000 token limit GPT 4o could handle.

So now the model can process and understand much larger inputs:

  • Extensive documents
  • Complex codebases — leading to even more powerful coding agents

GPT 4.1 will digest the content well enough to focus on the relevant information and disregard any distractions.

Just better in every way

GPT-4.1 has proven to be better than 4o and 4.5 in just about every benchmark

How great at coding?

54.6% on SWE-bench Verified Benchmark

  • 21.4% absolute improvement over GPT-4o
  • 26.6% absolute improvement over GPT-4.5.​

Instruction following

Scored 38.3% on the Scale’s MultiChallenge benchmark

  • 10.5% absolute increase over GPT-4o

Long-context comprehension

Sets a new state-of-the-art with a 72.0% score on the Video-MME benchmark’s long, no subtitles category.

  • 6.7% absolute increase over GPT-4o

Cheaper too

Greater intelligence for a fraction of the cost. GPT-4.1 is also 26% more cost-effective than GPT-4o.

A significant decrease — which you’ll definitely feel in an AI app with many thousands of users bombarding the API every minute.

Not like most of us will ever get to such levels of scale, ha ha.

Meet Mini and Nano

OpenAI also released two streamlined versions of GPT-4.1:​

GPT-4.1 Mini

Mini still gives GPT-4o a run for its money, but better:

  • 50% less latency
  • 83% cheaper

GPT-4.1 Nano

The smallest, fastest, and most affordable model.

Perfect at low-latency tasks like classification and autocompletion.

And despite being so small, it still achieves impressive scores and outperforms GPT-4o Mini:

  • 80.1% on MMLU
  • 50.3% on GPQA
  • 9.8% on Aider polyglot coding

Evolution doesn’t stop

GPT-4 was once the talk of the town — but today it’s on its way out.

With GPT-4.1, OpenAI OpenAI plans to phase out older models:​

  • GPT-4: Scheduled to be retired from ChatGPT by April 30, 2025.​
  • GPT-4.5 Preview: Set to be deprecated in the API by July 14, 2025.​

Yes even GPT-4.5 that just came out a few weeks ago is going away soon.

Right now GPT-4.1 is only available in the API for developers and enterprise users.

GPT-5 might be delayed but OpenAI isn’t slowing down.

GPT-4.1 is a big step up—smarter, faster, cheaper, and able to handle way more context. It sets a fresh standard and opens the door for what’s coming next.

VS Code’s new AI agent mode is an absolute game changer

Wow.

VS Code’s new agentic editing mode is simply amazing. I think I might have to make it my main IDE again.

It’s your tireless autonomous coding companion with total understanding of your entire codebase — performing complex multi-step tasks at your command.

Competitors like Windsurf and Cursor have been stealing the show for weeks now, but it looks like VS Code and Copilot are finally fighting back.

It’s like to Cursor Composer and Windsurf Cascade but with massive advantages.

This is the real deal

Forget autocomplete, this is the real deal.

With agent mode you tell VS Code what to do with simple English and immediately it gets to work:

  • Analyzes your codebase
  • Plans out what needs to be done
  • Creates and edit files, run terminal commands…

Look what happened in this demo:

She just told Copilot:

“add the ability to reorder tasks by dragging”

Literally a single sentence and that was all it took. She didn’t need to create a single UI component, didn’t edit a single line of code.

This isn’t code completion, this is project completion. This is the coding partner you always wanted.

Pretty similar UI to Cascade and Composer btw.

It’s developing for you at a high level and freeing you from all the mundane + repetitive + low-level work.

No sneak changes

You’re still in control…

Agent mode drastically upgrades your development efficiency without taking away the power from you.

For every action it takes it’ll check with you when:

  • It wants to run non-default tools or terminal commands.
  • It’s about to make edits — you can review, accept, tweak, or undo them.
  • You want to pause or stop its suggestions anytime.

You’re the driver. It’s just doing the heavy lifting.

Supports that MCP stuff too

Model Context Protocol standardizes how applications provide context to language models.

Agent Mode can interact with MCP servers to perform tasks like:

  • AI web debugging
  • Database interaction
  • Integration with design systems.

You can even enhance the Agent Mode’s power by installing extensions that provide tools for the agent can use.

You have all the flexibility to select which tools you want for any particular agent action flow.

You can try it now

Agent Mode is free for all VS Code / GitHub Copilot users.

Mhmm I wonder if this would have been the case if they never had the serious competition they do now?

So here’s how to turn it on:

  1. Open your VS Code settings and set "chat.agent.enabled" to true (you’ll need version 1.99+).
  2. Open the Chat view (Ctrl+Alt+I or ⌃⌘I on Mac).
  3. Switch the chat mode to “Agent.”
  4. Give it a prompt — something high-level like:
    “Create a blog homepage with a sticky header and dark mode toggle.”

Then just watch it get to work.

When should you use it?

Agent Mode shines when:

  • You’re doing multi-step tasks that would normally take a while.
  • You don’t want to micromanage every file or dependency.
  • You’re building from scratch or doing big codebase changes.

For small edits here and there I’d still go with inline suggestions.

Final thoughts

Agent Mode turns VS Code into more than just an editor. It’s a proper assistant — the kind that can actually build, fix, and think through problems with you.

You bring the vision and it brings it life.

People are using ChatGPT to create these amazing new action figures

Wow this is incredible. People are using AI to generate insane action figures now.

Incredibly real and detailed with spot-on 3d depth and lighting.

All you need to do:

  • Go to ChatGPT 4o
  • Upload a close image of a person

Like for this one:

We’d use a prompt like this:

“Create image. Create a toy of the person in the photo. Let it be an action figure. Next to the figure, there should be the toy’s equipment, each in its individual blisters.
1) a book called “Tecnoforma”.
2) a 3-headed dog with a tag that says “Troika” and a bone at its feet with word “austerity” written on it.
3) a three-headed Hydra with a tag called “Geringonça”.
4) a book titled “D. Sebastião”.
Don’t repeat the equipment under any circumstances. The card holding the blister should be a strong orange. Also, on top of the box, write ‘Pedro Passos Coelho’ and underneath it, ‘PSD action figure’. The figure and equipment must all be inside blisters. Visualize this in a realistic way”

You don’t even need to use a photo.

For example to generate the Albert Einstein action figure at the beginning:

Create an action figure toy of Albert Einstein. Next to the figure, there should be toy’s equipment, like things associated with the toy in pop culture.
On top of the box, write the name of the person, and underneath it, a popular nickname.
Don’t repeat the equipment under any circumstances.
The figure and equipment must all be inside blisters.
Visualize this in a realistic way.

Replace Albert Einstein with any famous name and see what pop’s out.

This could be a mini-revolution in the world of toy design and collectibles.

Designing unique and custom action figures from scratch — without ever learning complex design or 3d modelling tools.

You describe your dream action figure character in simple language and within seconds you get a high-quality and detailed image.

The possibilities are endless:

Superheroes from scratch with unique powers, costumes, and lore — oh but you may have copyright issues there…

Fantasy warriors inspired by games like Dungeons & Dragons or Elden Ring

Sci-fi cyborgs and aliens designed for custom tabletop campaigns

Anime-style fighters for manga or animation projects

Personal avatars that reflect your identity or alter egos

You can tweak details in the prompts—like armor style, weapons, colors, body type, or aesthetic to get the exact look you want.

You can even turn a group of people into action figures:

As AI gets better at turning 2D to 3D and 3D printing becomes more accessible, we’re heading toward a future where anyone can:

  • Generate a toy line overnight
  • Print and ship action figures on-demand
  • Remix characters based on culture, story, or emotion

Turning imagination into real-life products and having powerful impacts on the physical world.

7 amazing new features in the Windsurf Wave 6 IDE update

Finally! I’ve been waiting for this since forever.

Automatic Git commit messages are finally here in Windsurf — just one of the many amazing new AI features they’ve added in the new Wave 6 update that I’ll show you.

Incredible one-click deployment from your IDE, intelligent memory… these are huge jumps forward in Windsurf’s software dev capabilities.

1. One-click deployment with Netlify — super easy now

Okay this is a game changer.

They’ve teamed up with Netlify so you can literally deploy your front-end stuff with just one click right from Windsurf.

Literally no context switching. Everything stays in your editor.

Here we’re claiming the deployment to associating it with our Netlify account.

No more messing with all those settings and manual uploads.

With Wave 6 you just build your app, tell Windsurf to deploy, and it’s live instantly.

Just imagine the flow: you whip up a quick landing page with HTML, CSS, and JavaScript and instantly you reveal it to the world without even switching from your browser.

Your productivity and QOL just went up with this for real.

2. Conversation table of contents

Quickly jump back to earlier suggestions or code versions.

Super handy for those longer coding chat sessions.

3. Better Tab

They’ve upgraded Windsurf Tab inline suggestions once again to work with even more context.

Now it remembers what you searched for to give you even smarter suggestions.

And it works with Jupyter notebook now too:

4. Smarter memory

Windsurf already remembers past stuff but they’ve made it even better.

Now you can easily search, edit, and manage what it remembers — so you have more control over how the AI understands your project and what you like.

5. Automatic commit messages

Yes like I was saying — Windsurf can now write your Git commit messages for you based on the code changes.

One click, and it gives you a decent summary. Saves a bunch of time and helps keep your commit history clean.

6. Better MCP support

If you’re working in a bigger company, they’ve improved how Windsurf works with those Managed Code Providers.

7. New icons and much more

Just a little update among others — they’ve got some new Windsurf icons for you to personalize things up.

Also the ability to edit suggested terminal commands and much more.

This new one-click deployment could really shake things up for front-end development. — making getting your work out there so much faster and lets you focus on the actual coding.

As AI keeps getting better, tools like Windsurf are going to become even more important in how we build software.

Wave 6 shows they’re serious about making things simpler and giving developers smart tools to be more productive and creative. This new update could be a real game changer for AI-assisted development.

OpenAI’s new GPT-4o image generation is an absolute game changer

GPT-4o’s new image generation is destroying industries in real-time.

Not even up to a week and it’s been absolutely insane — even Sam Altman can’t understand what’s going on right now.

Things are definitely not looking too good for apps like Photoshop.

Look how amazing the layering is. Notice the before & after — it didn’t just copy and paste the girl image onto the room image, like Photoshop would do.

It’s no longer sending prompts to DALL-E behind-the-scenes — it understands the images at a deep level.

Notice how the 3d angle and lighting in the after image is slightly different — it knows it’s the same room. And the same thing for the girl image.

These are not just a bunch of pixels or a simple internal text representation to GPT-4o. It “understands” what it’s seeing.

So of course refining images is going to so much more accurate and precise now.

The prompt adherence and creativity is insane.

What are the odds that something even remotely close to this was in the training data?

It’s not just spitting out something it’s seen before — not like it ever really was like some claimed. How much it understands your prompt has improved drastically.

And yes it can now draw a full glass of wine now.

Another huge huge upgrade is how insanely good it is at understanding & generating text now.

This edit right here is incredible on so many levels…

1. Understanding the images well enough to recreate them so accurately in a completely different image style with facial expressions.

2. It understand the entire context of the comic conversation well enough to create matching body language.
Notice how the 4th girl now has her left hand pointing — which matches the fact that she’s ordering something from the bar boy.
A gesture that arguably matches the situation even better than in the previous image.
And I bet it would be able to replicate her original hand placement if the prompt explicitly asked it to.

3. And then the text generation — this is something AI image generators have been struggling with since forever — and now see how easily GPT-4o recreated the text in the bubbles.

And not only that — notice how the last girl’s speech bubble now has an exclamation point — to perfect match her facial expression and this particular situation.

And yes it can integrate text directly into images too — perfect for posters & social media graphics.

If this isn’t a total disruptor in the realm of graphics design and photoshopping and everything to do with image creation, then you better tell me what is.

It’s really exciting and that’s why we’ve been seeing so many of this type of images flood the social media — images in the style of the creative studio, Ghibli.

And also part of why they’ve had to limit to only paid ChatGPT users with support for the free tier coming soon.

They’ve got to scale the technology and make sure everyone has a smooth experience.

All in all GPT-4o image gen is a major step forward that looks set to deal a major blow to traditional image editing & graphic design tool like Photoshop & illustrator.

Greater things are coming.

The new Gemini 2.5 Pro is an absolute game changer

Never underestimate Google!

The new Gemini 2.5 Pro model just changed everything in the AI race.

Look at what it created with just a few sentences of prompt:

Google is no longer playing catch-up in the LLM race. They’re ahead now.

After many of you had been looking down on Gemini for so long, now look…

Back to the #1 spot they undisputedly were only a few years ago, before what happened in 2022.

Aider LLM coding evaluation

Not like Gemini 2.0 was even bad, but this is a massive massive step-up from that.

Reason, math, coding… it’s either better or seriously competing with the others at almost everything.

Everybody was praising Grok just a while ago but this Gemini 2.5 has already surpassed it in major areas.

1 million context window and 2 million coming very soon — and as always with multimodal processing for text, images, audio, and video…

Complex multi-step thinking is here…

Look at a puzzle someone used to find out just how good this new model is:

How many of us can even figure out this pattern in less than a minute?

This is complex reasoning stuff that would destroy regular models like GPT 4.5 — but Gemini took just 15 seconds to figure this out. Correctly.

Meanwhile rivals like Claude 3.7 Thinking and Grok spent well over a minute before they could get the answer.

At this point we’ve now clearly got beyond the traditional next-token prediction models — already “traditional” in 2025.

It’s also apparently insanely good at generative the perfect SVG icon for you with high precision.

And all this for immensely generous prices.

In OpenAI Playground you pay for token usage — completely free in Gemini AI Studio.

And there’s still a free trial for actual API usage.

The paid tier is already looking like it would be much cheaper than OpenAI’s o3-mini — and lightyears cheaper than the o3 monster.

Gemini 2.0 is already around 10 times cheaper than o3-mini and I doubt 2.5 would have a price that would be significantly higher.

With everything we’ve been seing in recent months it’s just so clear that OpenAI is no longer miles ahead of the rest anymore.

They will never again get the sort of undisputed dominance they got when ChatGPT first came out.

Now Google’s showing us that they were never really out — and unlike OpenAI they won’t be struggling nearly as much with losses and fundraising. Whatever losses from AI gets massively offset with the avalanche of billions from Ad money.

Way easier for them to keep prices ridiculously cheap and generous like they’ve been doing. A massive long-term financial advantage.

The relatively underwhelming release of GPT 4.5 also didn’t help matters for OpenAI. Maybe it was even supposed to be the ultimate GPT 5, but it would have a massive failure to call it that.

Once again we continue to see the shift from “raw” LLMs to thinking agents with chain-of-thought prompting.

Google is back, Gemini 2.5 is fast, and once again a major change in the dynamics of the AI race.

Redefining what’s possible and setting new expectations for the future.

Windsurf IDE just got a massive AI upgrade that changes everything

The new Windsurf IDE just got a massive new upgrade to finally silence the AI doubters.

The Wave 5 upgrade is here and it’s packed with several game changing AI features to make coding easier and faster.

So ever since Windsurf first came out, they’ve been releasing massive upgrades in something they call Waves.

Like in Wave 3 they brought tis intelligent new tab-to-jump feature that I’ve really been enjoying so far,

Just like you get inline code suggestions that you accept with Tab, now you get suggestions to jump to the place in the file where you’re most likely to continue making changes.

So like now it’s not just predicting your next line — it’s predicting your overall intent in the file and codebase at large. The context and ability grew way beyond just the code surrounding your cursor.

And things have been no different with Wave 4 and now 5 — huge huge context upgrades…

With Wave 5 Windsurf now uses your clipboard as context for code completions.

Just look at this:

It’s incredible.

We literally copied pseudocode and once we went back to start typing in the editor — it saw the Python file and function we were creating — it started making suggestions to implement the function.

And it would intelligently do the exact same thing for any other language.

It’ll be really handy when copying answers from ChatGPT or StackOverflow that you can’t just paste to drop into your codebase.

Instead of having to paste and format/edit, Windsurf automatically integrates what you copied into your codebase.

But Wave 5 goes way beyond basic copy and paste.

With this new update Windsurf now uses your conversation history with Cascade chat as context for all your code completions.

Look at this.

Cascade didn’t even give us any code snippets — but still the Tab feature understood the chat message to realize what you’re most likely to do next in the codebase.

So you see, we’re getting even more ways to edit our code from chatting with Cascade — depending on the use case.

You can make Windsurf edit the code directly with Cascade Write mode — auto-pilot vibe coding.

You can chat with Cascade and get snippets of changes that can be made — which you can accept one at a time, based on what you think is best.

Or now, you can use Cascade to get guidelines on what you need to do, then write the code yourself for fine-grained control — using insanely sophisticated Tab completions along the way to move faster than ever.

I know some of you still don’t want trust the auto-edits from vibe coding tools — this update is certainly for you.

Which ever level of control you want, Windsurf can handle it.

And it still doesn’t stop there with Wave 5 — your terminal isn’t getting left behind…

Context from the IDE terminal include all your past commands:

These AI IDEs just keep getting better and better.

The gap between between devs who use these tools and those acting like they’re irrelevant just keeps growing wider everyday.

Now, even more updates to help you spent less time on grunt coding and develop with lightning speed — while still having precise control of everything when you choose too.

Now with Wave 5 — a smarter coding companion with even more context to better predict thoughts and save you from lifting much of a finger — apart from the one to press Tab.

He used AI to apply to 1,000+ jobs and got flooded with interviews

His AI bot made thousands of job applications automatically while he slept — only for him to wake up an interview request in the morning.

Over the course of 1 month he got dozens of job interviews — over 50.

And of course he’s not the only one — we now have several services out there that can do this.

But we can build it ourselves and start getting interviews on autopilot.

Mhmm

Looking at this demo already confirms my expectation that the service would be best as a browser extension.

No not best — the only way it can work.

Lol of course no way LinkedIn’s gonna let you get all that juicy job data with a public API.

So scraping and web automation is the only way.

So now if we want to set it up for LinkedIn like it is here.

Of course we can just go ahead and start the automation — we need some important input.

Looking at the input and their data types

Skills — list of text so string array/list

Job location — string of course, even though they could be an geolocation feature to automate this away.

Number of jobs to apply — too easy

Experience level and job type – string

If I’m building my own personal bot then I can just use hardcoded variables for all these instead of creating a full-blown UI.

So once you click the button it’s going to go straight to a LinkedIn URL from the Chrome extension page

Look at the URL format:

JavaScript
linkedin.com/jobs/search/?f_AL=true&keywords=product%20management%20&f_JT=F&start=0

So it’s using some basic string interpolation to search the LinkedIn Jobs page with one of the skills from the input.

And we can rapidly go through the list with start query that paginates the items

And now this is where we start the web scraping.

We’d need to start parsing the list and items to get useful information for our application goals.

Like looking for jobs with low applications to boost our chances.

You can get a selector for the list first.

JavaScript
const listEl = document.querySelector('.scaffold-layout__list');

Now we’d need selectors to uniquely identify a particular list item.

So each list item is going to be a <li> in the <ul> in the .scaffold-layout__list list.

And we can use the data-occludable-job-id attribute as the unique identifier.

Now we can process this li to get info on the job from the list item.

JavaScript
const listEl = document.querySelector( ".scaffold-layout__list ul" ); const listItems = listEl.children; for (const item of listItems) { // ... }

Like to find jobs that have that “Be an early applicant” stuff:

JavaScript
for (const item of listItems) { const isEarlyApplicant = item.textContent.includes( "Be an early applicant" ); }

Also crucial to only find jobs with “Easy Apply” that let us apply directly on LinkedIn instead of a custom site, so we can have a consistent UI for automation.

JavaScript
for (const item of listItems) { // ... const isEasyApply = item.textContent.includes("Easy Apply"); }

We can keep querying like this for whatever specific thing we’re looking for.

And when it matches we click to go ahead with applying.

JavaScript
for (const item of listItems) { // ... if (isEarlyApplicant && isEasyApply) { item.click(); } }

Find a selector for the Easy Apply button to auto-click:

JavaScript
for (const item of listItems) { // ... if (isEarlyApplicant && isEasyApply) { item.click(); const easyApplyButton = document.querySelector( "button[data-live-test-job-apply-button]" ); // delay here with setTimeout or something easyApplyButton.click(); } }

Do the same for the Next button here:

And then again.

Now in this late stage things get a bit more interesting.

How would we automate this?

The questions are not all from a pre-existing list — they could be anything.

And looks like service I’ve been showing demos of didn’t even do this step properly — it just put in default values — 0 years of experience for everything — like really?

Using an LLM would be a great idea — for each field I’ll extract the question and the expected answer format and give this to the LLM.

So that means I’ll also need to provide resume-ish data to the LLM — so

I’ll use our normal UI inspection to get the title.

JavaScript
function processFreeformFields() { const modal = document.querySelector( ".jobs-easy-apply-modal" ); const fieldset = modal.querySelector( "fieldset[data-test-form-builder-radio-button-form-component]" ); const questionEl = fieldset.querySelector( "span[data-test-form-builder-radio-button-form-component__title] span" ); const question = questionEl.textContent; }
JavaScript
function processFreeformFields() { // ... const options = fieldset.querySelectorAll( "div[data-test-text-selectable-option]" ); const labels = []; for (const option of options) { labels.push(option.textContent); } }

Now we have all the data for the LLM:

JavaScript
async function processFreeformFields() { // ... const questionEl = fieldset.querySelector( "span[data-test-form-builder-radio-button-form-component__title] span" ); const question = questionEl.textContent; const options = fieldset.querySelectorAll( "div[data-test-text-selectable-option]" ); const labels = []; for (const option of options) { labels.push(option.textContent); } const { answers } = await sendQuestionsToLLM([ { question, options: labels, type: "select" }, ]); const answer = answers[0]; const answerIndex = labels.indexOf(answer); const option = options[answerIndex]; option?.click(); }

So we can do something like this for all the fields to populate the input object we’ll send to the LLM in the prompt.

And with this all that’s left is clicking the button to submit the application

I could also do some parsing to detect when this success dialog shows.

I could use a JavaScript API like Mutation Observer to detect when this element’s visibility property changes — like the display property changing from 'none' to 'block'.

But with this I’d have successfully auto-applied for the job and I can move on to the next item in the jobs list.

JavaScript
const listEl = document.querySelector( ".scaffold-layout__list ul" ); const listItems = listEl.children; for (const item of listItems) { // ... }

Or the next page of jobs

JavaScript
const page = 1; // 0 -> 25 to go to next page const nextPage = `linkedin.com/jobs/search/?f_AL=true&keywords=${skills[0]}&f_JT=F&start=${page * 25}`