<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Guy Ruvio</title>
    <description>The latest articles on DEV Community by Guy Ruvio (@guyruvio).</description>
    <link>https://dev.to/guyruvio</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3844279%2Fc635cd8e-2528-4a74-a276-6a26f8150e56.png</url>
      <title>DEV Community: Guy Ruvio</title>
      <link>https://dev.to/guyruvio</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/guyruvio"/>
    <language>en</language>
    <item>
      <title>How I Built an AI Job Board That Auto-Updates from 164+ Companies</title>
      <dc:creator>Guy Ruvio</dc:creator>
      <pubDate>Wed, 15 Apr 2026 07:36:11 +0000</pubDate>
      <link>https://dev.to/guyruvio/how-i-built-an-ai-job-board-that-auto-updates-from-164-companies-23lo</link>
      <guid>https://dev.to/guyruvio/how-i-built-an-ai-job-board-that-auto-updates-from-164-companies-23lo</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;If you're looking for an AI engineering role in 2026, you're probably checking 10-20 individual career pages. Anthropic's Greenhouse page, OpenAI's careers site, DeepMind's jobs board, Cohere's Lever page...&lt;/p&gt;

&lt;p&gt;General job boards like LinkedIn and Indeed have AI roles, but the filtering is terrible. Search "AI engineer" and you get results for "AI-powered customer service" and "engineer at an AI startup doing nothing related to AI."&lt;/p&gt;

&lt;p&gt;I wanted a single page with every AI/ML/LLM role from every major AI company, updated automatically. So I built &lt;a href="https://llmhire.com" rel="noopener noreferrer"&gt;LLMHire&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt; Next.js 14 (App Router) + Supabase (PostgreSQL) + Vercel (hosting + crons)&lt;/p&gt;

&lt;p&gt;The core idea is simple: most tech companies use one of three ATS platforms — Greenhouse, Ashby, or Lever. Each exposes a public API for their job listings. I built adapters for each.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Fetcher Pattern
&lt;/h3&gt;

&lt;p&gt;Each ATS has a fetcher module:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Greenhouse:&lt;/strong&gt; &lt;code&gt;GET https://boards-api.greenhouse.io/v1/boards/{company}/jobs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ashby:&lt;/strong&gt; &lt;code&gt;POST https://jobs.ashbyhq.com/api/non-auth-job-posting&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lever:&lt;/strong&gt; &lt;code&gt;GET https://api.lever.co/v0/postings/{company}&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each fetcher normalizes the response into a common schema:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;title, company, location, department&lt;/li&gt;
&lt;li&gt;remote/hybrid/onsite classification&lt;/li&gt;
&lt;li&gt;role type (ML Engineer, LLM Engineer, Research Scientist, etc.)&lt;/li&gt;
&lt;li&gt;posting date, description, apply URL&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Auto-Categorization
&lt;/h3&gt;

&lt;p&gt;Job title → role type mapping uses pattern matching:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Contains "LLM" or "NLP" or "language model" → LLM Engineer&lt;/li&gt;
&lt;li&gt;Contains "ML" or "machine learning" → ML Engineer&lt;/li&gt;
&lt;li&gt;Contains "research" + "scientist" → AI Research&lt;/li&gt;
&lt;li&gt;Contains "infrastructure" or "platform" → AI Infrastructure&lt;/li&gt;
&lt;li&gt;Contains "prompt" → Prompt Engineer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gets ~90% accuracy. Edge cases get manually reviewed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cron Jobs
&lt;/h3&gt;

&lt;p&gt;Vercel cron jobs run every 4 hours (6x/day):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fetch all jobs from all companies&lt;/li&gt;
&lt;li&gt;Deduplicate against existing listings (by company + title + location hash)&lt;/li&gt;
&lt;li&gt;Mark stale listings (&amp;gt;30 days without refresh) for review&lt;/li&gt;
&lt;li&gt;Update search index&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Numbers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;130+ companies tracked&lt;/li&gt;
&lt;li&gt;670+ active positions&lt;/li&gt;
&lt;li&gt;~50-100 new/updated listings per day&lt;/li&gt;
&lt;li&gt;Average fetch cycle: ~45 seconds for all companies&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What the Data Shows
&lt;/h2&gt;

&lt;p&gt;After tracking the AI job market for a few weeks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;"LLM Engineer" is a real role now&lt;/strong&gt; — distinct from ML Engineer, with different skill requirements&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remote is declining&lt;/strong&gt; — major labs want hybrid/onsite&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Infrastructure is booming&lt;/strong&gt; — fastest growing subcategory&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt Engineering peaked&lt;/strong&gt; — being absorbed into broader roles&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Workable integration (another ATS with significant AI company coverage)&lt;/li&gt;
&lt;li&gt;Salary data aggregation&lt;/li&gt;
&lt;li&gt;Weekly AI jobs newsletter&lt;/li&gt;
&lt;li&gt;Blog with hiring market analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://llmhire.com" rel="noopener noreferrer"&gt;LLMHire&lt;/a&gt; is completely free. No accounts, no fees, no signup required to browse.&lt;/p&gt;

&lt;p&gt;If you have feedback or companies I should add, drop a comment.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>nextjs</category>
      <category>webdev</category>
      <category>ai</category>
    </item>
    <item>
      <title>Anthropic Accidentally Published 513K Lines of Claude Code Source on npm — What Developers Need to Know</title>
      <dc:creator>Guy Ruvio</dc:creator>
      <pubDate>Thu, 09 Apr 2026 23:06:37 +0000</pubDate>
      <link>https://dev.to/guyruvio/anthropic-accidentally-published-513k-lines-of-claude-code-source-on-npm-what-developers-need-to-16ha</link>
      <guid>https://dev.to/guyruvio/anthropic-accidentally-published-513k-lines-of-claude-code-source-on-npm-what-developers-need-to-16ha</guid>
      <description>&lt;p&gt;On March 31, 2026, a 59.8 MB JavaScript source map shipped inside the npm package &lt;code&gt;@anthropic-ai/claude-code&lt;/code&gt; version 2.1.88. It contained 513,000 lines of unobfuscated TypeScript across 1,906 files — Anthropic's full Claude Code agent architecture, published by accident.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Happened
&lt;/h2&gt;

&lt;p&gt;A Bun packaging error combined with a missing &lt;code&gt;.npmignore&lt;/code&gt; file caused the source map to be included in the published npm package. Security researcher Chaofan Shou discovered and posted about it on X. Within hours, the source was mirrored to GitHub and forked tens of thousands of times.&lt;/p&gt;

&lt;h2&gt;
  
  
  The CVEs
&lt;/h2&gt;

&lt;p&gt;Two CVEs were assigned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2025-59536&lt;/strong&gt; — Remote code execution via malicious repository configs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CVE-2026-21852&lt;/strong&gt; — API key exfiltration through hooks and MCP (Model Context Protocol) servers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The leak exposed exact orchestration logic, making these exploits trivially reproducible by attackers who studied the source.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Same-Day Supply Chain Attack
&lt;/h2&gt;

&lt;p&gt;In a coincidence that made an already bad day worse, the &lt;code&gt;axios&lt;/code&gt; npm package was trojaned with a Remote Access Trojan (RAT) between 00:21 and 03:29 UTC on March 31 — hours before the Claude Code leak became public. If your CI/CD ran &lt;code&gt;npm install&lt;/code&gt; during that window, you may have pulled a compromised version of axios alongside Claude Code.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You Should Do Now
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Audit your npm install logs for March 31&lt;/strong&gt; — check what versions were pulled&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check for axios RAT indicators&lt;/strong&gt; — the trojaned version was active for ~3 hours&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scan repos used with Claude Code&lt;/strong&gt; — hooks and MCP server configurations are the primary attack surface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Update to the latest Claude Code version&lt;/strong&gt; — the source map has been removed&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Video Breakdown
&lt;/h2&gt;

&lt;p&gt;I put together a detailed breakdown covering the full timeline, what was inside the leaked source, and specific steps for developers:&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/KdhTEqt0n5k"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The Hacker News — Claude Code leak via npm (April 2026)&lt;/li&gt;
&lt;li&gt;Zscaler ThreatLabz analysis&lt;/li&gt;
&lt;li&gt;Bloomberg, April 1, 2026&lt;/li&gt;
&lt;li&gt;Axios RAT supply chain attack report&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://endofcoding.com" rel="noopener noreferrer"&gt;EndOfCoding.com&lt;/a&gt;. Follow &lt;a href="https://x.com/endofcoding" rel="noopener noreferrer"&gt;@endofcoding&lt;/a&gt; for more AI security analysis.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>npm</category>
      <category>ai</category>
      <category>devops</category>
    </item>
    <item>
      <title>How I Built an AI Job Board That Auto-Updates from 164+ Companies</title>
      <dc:creator>Guy Ruvio</dc:creator>
      <pubDate>Thu, 26 Mar 2026 10:54:59 +0000</pubDate>
      <link>https://dev.to/guyruvio/how-i-built-an-ai-job-board-that-auto-updates-from-164-companies-3o94</link>
      <guid>https://dev.to/guyruvio/how-i-built-an-ai-job-board-that-auto-updates-from-164-companies-3o94</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;If you're looking for an AI engineering role in 2026, you're probably checking 10-20 individual career pages. Anthropic's Greenhouse page, OpenAI's careers site, DeepMind's jobs board, Cohere's Lever page...&lt;/p&gt;

&lt;p&gt;General job boards like LinkedIn and Indeed have AI roles, but the filtering is terrible. Search "AI engineer" and you get results for "AI-powered customer service" and "engineer at an AI startup doing nothing related to AI."&lt;/p&gt;

&lt;p&gt;I wanted a single page with every AI/ML/LLM role from every major AI company, updated automatically.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://llmhire.com" rel="noopener noreferrer"&gt;LLMHire&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Stack:&lt;/strong&gt; Next.js 14 (App Router) + Supabase (PostgreSQL) + Vercel (hosting + crons)&lt;/p&gt;

&lt;p&gt;The core idea is simple: most tech companies use one of three ATS platforms — Greenhouse, Ashby, or Lever. Each exposes a public API for their job listings. I built adapters for each.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Fetcher Pattern
&lt;/h3&gt;

&lt;p&gt;Each ATS has a fetcher module:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Greenhouse:&lt;/strong&gt; &lt;code&gt;GET https://boards-api.greenhouse.io/v1/boards/{company}/jobs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ashby:&lt;/strong&gt; &lt;code&gt;POST https://jobs.ashbyhq.com/api/non-auth-job-posting&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lever:&lt;/strong&gt; &lt;code&gt;GET https://api.lever.co/v0/postings/{company}&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each fetcher normalizes the response into a common schema:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;title, company, location, department&lt;/li&gt;
&lt;li&gt;remote/hybrid/onsite classification&lt;/li&gt;
&lt;li&gt;role type (ML Engineer, LLM Engineer, Research Scientist, etc.)&lt;/li&gt;
&lt;li&gt;posting date, description, apply URL&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Auto-Categorization
&lt;/h3&gt;

&lt;p&gt;Job title → role type mapping uses pattern matching:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Contains "LLM" or "NLP" or "language model" → LLM Engineer&lt;/li&gt;
&lt;li&gt;Contains "ML" or "machine learning" → ML Engineer&lt;/li&gt;
&lt;li&gt;Contains "research" + "scientist" → AI Research&lt;/li&gt;
&lt;li&gt;Contains "infrastructure" or "platform" → AI Infrastructure&lt;/li&gt;
&lt;li&gt;Contains "prompt" → Prompt Engineer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gets ~90% accuracy. Edge cases get manually reviewed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cron Jobs
&lt;/h3&gt;

&lt;p&gt;Vercel cron jobs run every 4 hours (6x/day):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fetch all jobs from all companies&lt;/li&gt;
&lt;li&gt;Deduplicate against existing listings (by company + title + location hash)&lt;/li&gt;
&lt;li&gt;Mark stale listings (&amp;gt;30 days without refresh) for review&lt;/li&gt;
&lt;li&gt;Update search index&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Numbers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;130+ companies tracked&lt;/li&gt;
&lt;li&gt;670+ active positions&lt;/li&gt;
&lt;li&gt;~50-100 new/updated listings per day&lt;/li&gt;
&lt;li&gt;Average fetch cycle: ~45 seconds for all companies&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What the Data Shows
&lt;/h2&gt;

&lt;p&gt;After tracking the AI job market for a few weeks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;"LLM Engineer" is a real role now&lt;/strong&gt; — distinct from ML Engineer, with different skill requirements&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Remote is declining&lt;/strong&gt; — major labs want hybrid/onsite&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Infrastructure is booming&lt;/strong&gt; — fastest growing subcategory&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Prompt Engineering peaked&lt;/strong&gt; — being absorbed into broader roles&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Workable integration (another ATS with significant AI company coverage)&lt;/li&gt;
&lt;li&gt;Salary data aggregation&lt;/li&gt;
&lt;li&gt;Weekly AI jobs newsletter&lt;/li&gt;
&lt;li&gt;Blog with hiring market analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://llmhire.com" rel="noopener noreferrer"&gt;LLMHire&lt;/a&gt; is completely free. No accounts, no fees, no signup required to browse. If you have feedback or companies I should add, drop a comment.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>nextjs</category>
      <category>webdev</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
