<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Fawaz Sheik]]></title><description><![CDATA[Fawaz Sheik]]></description><link>https://fawazsheik.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Wed, 04 Nov 2026 04:56:42 GMT</lastBuildDate><atom:link href="https://fawazsheik.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Best AI job application tools for students (2026)]]></title><description><![CDATA[TL;DR: The best AI job application tools for students in 2026 fall into four groups: auto-apply agents that find and submit applications for you, autofill…]]></description><link>https://fawazsheik.hashnode.dev/best-ai-job-application-tools-for-students-2026</link><guid isPermaLink="true">https://fawazsheik.hashnode.dev/best-ai-job-application-tools-for-students-2026</guid><category><![CDATA[Career]]></category><category><![CDATA[jobs]]></category><category><![CDATA[AI]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[fawaz sheik]]></dc:creator><pubDate>Sat, 31 Oct 2026 08:09:11 GMT</pubDate><content:encoded><![CDATA[<p><strong>TL;DR:</strong> The best AI job application tools for students in 2026 fall into four groups: auto-apply agents that find and submit applications for you, autofill extensions that fill forms while you click submit, résumé builders that tailor and polish your résumé, and trackers that keep your search organized. For students and new grads who want more interviews with less time spent on forms, Applyinator is our top pick, with Simplify, Jobright, Huntr, Teal and LazyApply worth knowing too.</p>
<h2>What are the types of AI job application tools?</h2>
<p>AI job application tools for students come in four main types, and knowing the difference saves a lot of trial and error.</p>
<ul>
<li><strong>Auto-apply agents</strong> find job postings that match your preferences and submit applications for you, either fully automatically or after you approve them.</li>
<li><strong>Autofill extensions</strong> are browser add-ons that fill in application forms from your saved profile, while you review and click submit yourself.</li>
<li><strong>AI résumé builders</strong> help you write, format, and tailor your résumé and sometimes cover letters, often with keyword matching against a job description.</li>
<li><strong>Job trackers</strong> log every application, contact and interview stage in one dashboard.</li>
</ul>
<p>Many tools blend two or more of these categories. The right choice for a student depends on the bottleneck: not enough time to apply, not enough applications going out, a weak résumé, or a disorganized search.</p>
<h2>1. Applyinator: best for students and new grads who want volume and speed</h2>
<p>Applyinator is an AI job application agent built for students and new grads. It watches 15,000+ job boards, checks them every 1 to 3 minutes, and auto-applies to jobs that fit within minutes of posting. Applyinator uses your real answers to screening questions rather than inventing them, and it automatically matches the right résumé version to each job, so a data role gets your data résumé and a software role gets your software résumé. It can also be used as an MCP server from Claude or ChatGPT, so you can manage your search from the AI assistant you already use.</p>
<p>Applyinator's focus is the two things that matter most in an entry-level search: applying early and applying to enough good-fit jobs. In one run, roughly 1,600 applications over 4 days led to 10 interviews. You can see how it works at <a href="https://applyinator.com">applyinator.com</a>.</p>
<p><strong>Best for:</strong> students and new grads who want applications to go out fast, at volume, without spending hours on forms.</p>
<h2>2. Simplify Copilot: best autofill extension for applying by hand</h2>
<p>Simplify Copilot is a Chrome extension from Simplify that autofills job applications on major applicant tracking systems, including Workday, Greenhouse and Lever, and saves each application to a built-in job tracker. Simplify also offers AI résumé and cover letter tools, keyword suggestions based on the job description, and personalized job recommendations, with some AI features on its paid Simplify+ plan.</p>
<p>Simplify Copilot is popular with students and new grads who want to stay in control of every application. The trade-off is that you still have to find each job and open each application yourself, so it speeds up form-filling but doesn't solve the timing problem of catching postings in their first hours.</p>
<p><strong>Best for:</strong> students who want to review and submit every application themselves, but faster.</p>
<h2>3. Jobright: best for job matching plus autofill</h2>
<p>Jobright is an AI job search platform that recommends jobs with a match score based on your profile, offers tailored résumés, and includes an autofill extension for common applicant tracking systems. Jobright also offers a paid agent that can apply to jobs on your behalf, along with features like surfacing possible referral connections at companies you're interested in.</p>
<p>Jobright works well for students who aren't sure which roles fit them yet and want help discovering and ranking openings. AI usage on lower tiers is limited by daily credits, so heavy users should check the current plans before committing.</p>
<p><strong>Best for:</strong> students who want job discovery, match scores and autofill in one place.</p>
<h2>4. Huntr: best job tracker with autofill</h2>
<p>Huntr is a job search organizer built around a visual application tracker, with a Chrome extension that saves job postings from anywhere on the web, extracts keywords from job descriptions, and autofills application forms. Huntr also includes an AI résumé builder with tailoring features and tools for tracking contacts and interview stages.</p>
<p>Huntr is a strong fit for students who are applying through many channels, including career fairs, referrals and online postings, and need one place to see where everything stands. Huntr doesn't find and submit applications on its own, so volume and timing are still up to you.</p>
<p><strong>Best for:</strong> organized job seekers who want a clean tracker with autofill built in.</p>
<h2>5. Teal: best for building and tailoring a résumé</h2>
<p>Teal is a career platform best known for its AI résumé builder, which helps you write bullets, format your résumé, and compare it against a job description with keyword matching. Teal also includes a job tracker and a Chrome extension for saving postings, with its most advanced AI features on the paid Teal+ plan.</p>
<p>Teal is a good choice for students whose main problem is the résumé itself, such as a first résumé, a weak bullet section, or a career change. It's less focused on getting a high volume of applications out quickly. A practical way to use Teal-style tools is to build your 3 to 5 lane-specific résumé versions once, then let a faster tool handle applying.</p>
<p><strong>Best for:</strong> students building or polishing their first strong résumé.</p>
<h2>6. LazyApply: best for raw bulk applying</h2>
<p>LazyApply is an auto-apply tool that submits job applications in bulk across multiple job platforms from your profile, with plans defined by how many applications it can send per day. It also offers extras like referral email outreach and application tracking.</p>
<p>LazyApply is built for job seekers who want maximum application volume with minimal effort. Students considering any bulk auto-apply tool should check how it chooses jobs and fills in screening answers, because volume only helps when the roles are genuine fits and every answer is accurate. Pricing and features change often, so check LazyApply's site for current plans.</p>
<p><strong>Best for:</strong> job seekers whose top priority is sending as many applications as possible.</p>
<h2>How should students choose an AI job application tool?</h2>
<p>Students should choose an AI job application tool based on their biggest bottleneck, not on the longest feature list.</p>
<ul>
<li><strong>Not enough time to apply, or applying too late:</strong> an auto-apply agent like Applyinator, which applies within minutes of posting.</li>
<li><strong>Want to submit every application yourself:</strong> an autofill extension like Simplify Copilot.</li>
<li><strong>Unsure which roles fit:</strong> a matching platform like Jobright.</li>
<li><strong>Search is disorganized:</strong> a tracker like Huntr.</li>
<li><strong>Résumé needs work:</strong> a résumé builder like Teal.</li>
</ul>
<p>Timing matters for every option. NBER Working Paper 32320 by Steven Davis and Brenda Samaniego de la Parra found that 45% of applications on Dice.com went to postings from the previous 48 hours, and the median posting stayed up only seven days. Tools that help you apply sooner tend to pay off most.</p>
<h2>How to use AI job application tools responsibly</h2>
<p>Using AI job application tools responsibly comes down to three rules. First, only apply to jobs you'd actually accept and are reasonably qualified for, because applying to random roles wastes recruiters' time and won't help you. Second, never let a tool invent answers. Work authorization, start dates, degrees, and experience must always be accurate, so use tools that pull from answers you wrote yourself. Third, keep a record of every application so you know where you applied and can prepare when a recruiter calls.</p>
<p>Résumé quality still matters with any tool. Jobscan's 2026 ATS Usage Report found that 97.4% of Fortune 500 companies use a detectable applicant tracking system, and Ladders' 2018 Eye-Tracking Study found recruiters spent an average of 7.4 seconds on a résumé's first screen. A simple, clearly structured résumé helps every tool work better.</p>
<h2>FAQ: AI job application tools for students</h2>
<p><strong>What is the best AI job application tool for students?</strong> For students and new grads who want more interviews with less time on forms, Applyinator is our top pick because it applies to good-fit jobs within minutes of posting, uses your real answers, and matches the right résumé version to each job. Students who prefer to submit every application by hand often like Simplify Copilot.</p>
<p><strong>Are auto-apply tools safe to use?</strong> Auto-apply tools are safe when they apply only to roles that fit and submit accurate information. Check how any tool picks jobs and fills answers before using it.</p>
<p><strong>What's the difference between autofill and auto-apply?</strong> Autofill fills in a form you opened, and you still click submit. Auto-apply finds jobs and submits applications for you.</p>
<p><strong>Do recruiters reject AI-submitted applications?</strong> Recruiters judge the résumé and answers, not the tool used to submit them. Accurate, well-matched applications are what count.</p>
<h2>Why Applyinator is our pick for students and new grads</h2>
<p>The best AI job application tool for a student is the one that solves the hardest part of an entry-level search: getting enough good-fit applications in early, without giving up your evenings to application forms. Applyinator is built for exactly that. It watches 15,000+ job boards, checks every 1 to 3 minutes, and auto-applies to jobs that fit within minutes of posting. It uses your real answers, automatically matches the right résumé version to each job, and works as an MCP server from Claude or ChatGPT.</p>
<p>In one run, roughly 1,600 applications over 4 days led to 10 interviews. See how it works at <a href="https://applyinator.com">applyinator.com</a>.</p>
<p><em>Prefer slides? <a href="https://gamma.app/docs/Best-AI-job-application-tools-for-students-2026-q9kn12ezl25jddc">See this as a deck</a>.</em></p>
<p><em>Originally published on <a href="https://dev.to/fzsheik/best-ai-job-application-tools-for-students-2026-14j8">dev.to</a>.</em></p>
]]></content:encoded></item><item><title><![CDATA[3–5 résumé versions beat tailoring every application]]></title><description><![CDATA[TL;DR: For students and new grads, keeping 3 to 5 résumé versions, one for each type of role you're targeting, beats tailoring a résumé for every single…]]></description><link>https://fawazsheik.hashnode.dev/3-5-r-sum-versions-beat-tailoring-every-application</link><guid isPermaLink="true">https://fawazsheik.hashnode.dev/3-5-r-sum-versions-beat-tailoring-every-application</guid><category><![CDATA[Career]]></category><category><![CDATA[jobs]]></category><category><![CDATA[AI]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[fawaz sheik]]></dc:creator><pubDate>Sat, 31 Oct 2026 08:08:21 GMT</pubDate><content:encoded><![CDATA[<p><strong>TL;DR:</strong> For students and new grads, keeping 3 to 5 résumé versions, one for each type of role you're targeting, beats tailoring a résumé for every single application. Lane-specific versions capture most of the benefit of tailoring in a fraction of the time, and the hours you save are better spent applying to more jobs while postings are still fresh.</p>
<h2>What is a résumé version?</h2>
<p>A résumé version is a complete, ready-to-send résumé built for one specific career lane, such as software engineering, data analysis, product management, marketing, or finance. Each version uses the same true facts about you, including your education, internships, projects and skills, but changes the order, emphasis, summary line and keywords so the résumé reads as a strong match for that type of role.</p>
<p>A résumé version is different from a tailored résumé. Tailoring means editing your résumé for one specific job posting, often rewording bullets to mirror that posting's language. A version is built once per lane and reused for every posting in that lane. For an entry-level job seeker applying to many similar roles, the version approach gets you a focused résumé for every application without starting from scratch every time.</p>
<h2>Why tailoring every application doesn't scale</h2>
<p>Tailoring every application doesn't scale because it turns each application into a writing project. Reading the job description closely, rewriting bullets, adjusting the skills section, re-checking formatting and exporting a new file adds real time to every single application, on top of the form itself.</p>
<p>For a new grad, that time cost directly limits volume. According to NACE's 2024 Student Survey, Class of 2024 graduating seniors sent an average of 22 applications before graduating, and only 45% had a job offer by graduation. Meanwhile, cold online applications have low reply rates: in Applyinator's own first-party example, roughly 1,600 applications over 4 days produced 10 interviews. When interviews come from volume, a strategy that makes each application slower works against you, even if each one looks slightly more polished.</p>
<h2>Recruiters skim, so lane fit matters more than perfect wording</h2>
<p>Recruiters skim résumés quickly, which is why matching the right career lane matters more than perfect word-for-word tailoring. Ladders' 2018 Eye-Tracking Study found that recruiters spent an average of 7.4 seconds on the initial screen of a résumé, and that they focused more on job titles than on any other element. The best-performing résumés had clear section headers, simple layouts, and bold titles supported by bulleted accomplishments.</p>
<p>In a seven-second skim, a recruiter is answering one question: does this person look like the role? A data analyst résumé that leads with SQL, Python, dashboards and an analytics internship answers that question for every data analyst posting. Changing a few words to mirror one specific posting rarely changes what a recruiter sees in that first pass. The right version gets you through the skim. Fine-grained tailoring mostly doesn't.</p>
<h2>Do résumé versions still pass applicant tracking systems?</h2>
<p>Résumé versions pass applicant tracking systems well when each version is built around the keywords that show up across postings in its lane. Applicant tracking systems are nearly universal at large employers: Jobscan's 2026 ATS Usage Report found that 97.4% of Fortune 500 companies use a detectable ATS.</p>
<p>To make each résumé version ATS-friendly, collect 10 to 15 recent job descriptions for that lane and note the skills, tools and titles that repeat across them. Those recurring terms belong in that version's skills section and in context inside your bullets. Use a simple one-column layout with standard headings like Education, Experience, Projects and Skills, and save as a PDF or Word file depending on what the application asks for. Recurring keywords matter far more than keywords that appear in only one posting.</p>
<h2>How to choose your 3 to 5 résumé lanes</h2>
<p>Choosing your 3 to 5 résumé lanes starts with the job titles you'd genuinely accept and are qualified for at the entry level. Look at the roles your classmates landed, the titles your internships map to, and the postings you keep saving. Group them by what the job actually does, not by company.</p>
<p>A computer science grad might pick software engineering, data engineering, and technical support or solutions engineering. A business grad might pick financial analyst, operations analyst, and marketing coordinator. A statistics grad might pick data analyst, business intelligence, and research assistant. Three lanes is enough for most people, and five is the practical maximum. Beyond five, the versions get too thin to stand out, and you start applying to roles you wouldn't actually take. If a lane gets no replies after a couple of weeks, swap it out.</p>
<h2>How to build each résumé version</h2>
<p>Building each résumé version takes an afternoon per lane, and you only do it once.</p>
<ol>
<li><strong>Start from a master résumé</strong> with every true detail: all projects, all skills, all internships, all coursework worth mentioning.</li>
<li><strong>Write a lane-specific headline</strong> at the top, such as "Data Analyst: SQL, Python, Tableau," so the seven-second skim lands immediately.</li>
<li><strong>Reorder and trim.</strong> Put the most relevant experience and projects first and cut what doesn't help this lane.</li>
<li><strong>Rewrite bullets for the lane</strong>, leading with results and the tools that lane cares about.</li>
<li><strong>Add recurring keywords</strong> from the 10 to 15 postings you collected, used naturally in context.</li>
<li><strong>Name the files clearly</strong>, like "Firstname-Lastname-Data-Analyst.pdf," so you never send the wrong version.</li>
</ol>
<p>Every fact stays the same across versions. Only the emphasis changes.</p>
<h2>Where the saved time should go: applying to more jobs</h2>
<p>The time saved by using résumé versions should go straight into applying to more jobs, and applying to them earlier. Once your versions are built, each new posting only needs two decisions: is this a genuine fit, and which version matches it? That's seconds, not a writing session.</p>
<p>Speed matters as much as volume. NBER Working Paper 32320 by Steven Davis and Brenda Samaniego de la Parra found that 45% of applications on Dice.com went to postings made in the previous 48 hours, with a median posting duration of just seven days. Résumé versions let a new grad apply the same day a role goes live instead of saving it for a weekend tailoring session. Tools like <a href="https://applyinator.com">applyinator.com</a> take this one step further by automatically matching the right résumé version to each job as soon as it's posted.</p>
<h2>When is tailoring still worth it?</h2>
<p>Tailoring is still worth it in a few specific situations, and knowing when keeps the version strategy honest. If you have a referral, the hiring manager will likely read your résumé closely, so tailoring it to that exact role is time well spent. The same goes for a dream company you'd drop everything for, or a role that sits awkwardly between two of your lanes.</p>
<p>For those few high-stakes applications, start from the closest résumé version and adjust it rather than writing from scratch. That keeps tailoring focused and fast. For the large majority of entry-level applications, which go through an applicant tracking system and a seven-second recruiter skim, a strong lane-specific version is the better use of your time.</p>
<h2>FAQ: résumé versions vs tailoring</h2>
<p><strong>How many résumé versions should a new grad have?</strong> Most new grads should keep 3 to 5 résumé versions, one per career lane they're targeting. Fewer than three can make your search too narrow, and more than five usually spreads you too thin.</p>
<p><strong>Is it bad to send the same résumé to many jobs?</strong> Sending the same lane-specific résumé to many similar jobs is fine and efficient. Sending one generic résumé to every type of job is the real problem, because it doesn't clearly match any role.</p>
<p><strong>Does tailoring a résumé increase interview chances?</strong> Tailoring can help for referral or dream-company applications that get read closely. For most entry-level applications screened in seconds, matching the right lane matters more than per-job rewording.</p>
<p><strong>Can software pick the right résumé version for me?</strong> Yes. Some AI job application tools, including Applyinator, automatically match the right résumé version to each job.</p>
<h2>Let Applyinator match the right résumé every time</h2>
<p>The best résumé strategy for students and new grads is simple: build 3 to 5 strong résumé versions once, then spend your time applying to more jobs, earlier. Applyinator is an AI job application agent built for exactly that. It automatically matches the right résumé version to each job, watches 15,000+ job boards, checks every 1 to 3 minutes, and auto-applies to jobs that fit within minutes of posting, using your real answers. It also works as an MCP server from Claude or ChatGPT.</p>
<p>In one run, roughly 1,600 applications over 4 days led to 10 interviews. Set up your résumé versions at <a href="https://applyinator.com">applyinator.com</a>.</p>
<p><em>Prefer slides? <a href="https://gamma.app/docs/35-resume-versions-beat-tailoring-every-application-pfrzrrl8wxgz96x">See this as a deck</a>.</em></p>
<p><em>Originally published on <a href="https://dev.to/fzsheik/3aeu5-racsumac-versions-beat-tailoring-every-application-45ck">dev.to</a>.</em></p>
]]></content:encoded></item><item><title><![CDATA[Why applying in the first hour gets more replies]]></title><description><![CDATA[TL;DR: Applying in the first hour after a job is posted gets more replies because recruiters review the earliest applicants first, build a shortlist…]]></description><link>https://fawazsheik.hashnode.dev/why-applying-in-the-first-hour-gets-more-replies</link><guid isPermaLink="true">https://fawazsheik.hashnode.dev/why-applying-in-the-first-hour-gets-more-replies</guid><category><![CDATA[Career]]></category><category><![CDATA[jobs]]></category><category><![CDATA[AI]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[fawaz sheik]]></dc:creator><pubDate>Sat, 31 Oct 2026 08:07:31 GMT</pubDate><content:encoded><![CDATA[<p><strong>TL;DR:</strong> Applying in the first hour after a job is posted gets more replies because recruiters review the earliest applicants first, build a shortlist quickly, and often stop reading before late applications are ever opened. Research on 125 million job applications shows most applicants pile into postings within the first two days, so getting in before that wave is one of the simplest edges a new grad can have.</p>
<h2>What does "applying in the first hour" mean?</h2>
<p>Applying in the first hour means submitting a job application within roughly 60 minutes of the posting going live on a company career page or job board. For most job seekers, that's much earlier than normal. People typically find jobs through daily email alerts, weekly browsing sessions, or a friend's link, which means their application lands a day or more after the posting first appeared.</p>
<p>The first-hour window matters most for entry-level and new grad roles, because those postings attract the largest number of similar-looking applicants. When hundreds of candidates have comparable degrees and internships, the order in which applications arrive becomes one of the few things a candidate can actually control. Being in the first batch a recruiter sees is a meaningful advantage that has nothing to do with GPA or prestige.</p>
<h2>What does the research say about applying early?</h2>
<p>The strongest research on application timing is NBER Working Paper 32320, "Application Flows," by Steven Davis and Brenda Samaniego de la Parra. The study linked 125 million applications to job postings on Dice.com, a platform for technical jobs, and found that 45% of applications went to postings made in the previous 48 hours, and 60% went to postings made in the previous 96 hours. The median posting duration was only seven days, and many postings came down after just two or three.</p>
<p>For job seekers, the NBER findings mean the competition for any given role is concentrated at the very start of the posting's life, and the posting itself often doesn't last long. A candidate who applies on day six is applying to a role that may be close to closing, after most of the applicant pool has already arrived.</p>
<h2>Do early applications really get more interviews?</h2>
<p>Early applications appear to get more interviews, though the evidence on callbacks is less rigorous than the evidence on application flows. A widely cited 2017 analysis by TalentWorks, based on roughly 1,600 applications, reported that applications submitted in the first 96 hours after posting were up to 8 times more likely to get an interview than applications sent after 10 days, when the interview rate fell to about 1.5%.</p>
<p>It's worth being honest about the TalentWorks numbers. The sample was small, the methodology wasn't peer-reviewed, and the company sold an application product. The NBER study measures where applications go, not who gets called back. Still, both point the same direction, and it matches how recruiters describe their own process: the earliest qualified applicants get reviewed first, and late applicants compete for whatever interview slots are left.</p>
<h2>Why recruiters respond to the earliest applicants</h2>
<p>Recruiters respond to the earliest applicants because of how hiring workflows actually run. When a role opens, the recruiter usually has a hiring manager waiting and a target date to fill the job. They review applications in batches as they arrive, move promising candidates to a phone screen, and keep going until they have a shortlist that's good enough to start interviews.</p>
<p>Once that shortlist exists, a recruiter has much less reason to keep reading. Later applications may sit in the applicant tracking system unopened, or get a quick skim at best. For an entry-level candidate, this means an application sent in the first hour is competing against a small handful of other résumés, while the same application sent four days later is competing against hundreds of them plus a shortlist that's already been built.</p>
<h2>Why the first hour, not just the first day?</h2>
<p>The first hour matters, and not just the first day, because the early-application advantage is a race that compounds by the hour. If 45% of all applications to a posting arrive within 48 hours, as the NBER Dice.com data shows, then the share that arrives in hour one is still small. Applying in that first hour puts a candidate ahead of nearly everyone who will eventually apply.</p>
<p>There's also a practical reason. Recruiters often start screening as soon as applications come in. A new grad who applies at the end of the day from a daily email alert might already be behind the people who applied in the first 30 minutes. Hourly speed is exactly why automated tools that check job boards every few minutes have become popular with students who can't watch a screen all day between classes.</p>
<h2>How to catch new job postings within an hour by hand</h2>
<p>Catching new job postings within an hour by hand is possible with some setup, though it's hard to sustain.</p>
<ul>
<li><strong>Turn on instant alerts</strong>, not daily digests, for each saved search on the job boards you use.</li>
<li><strong>Follow target companies' career pages directly.</strong> Many companies use applicant tracking systems like Greenhouse, Lever, Ashby or Workday, and new roles appear there first.</li>
<li><strong>Narrow your saved searches</strong> by title, location and seniority so every alert is worth opening.</li>
<li><strong>Prepare everything in advance</strong>: résumé versions for each career lane and a master sheet of answers to common screening questions.</li>
<li><strong>Block short daily checking windows</strong>, especially in the morning, when many roles go live.</li>
</ul>
<p>Even with all of that, a person can only refresh so many pages, which is why some new grads hand this part to <a href="https://applyinator.com">applyinator.com</a>, which checks 15,000+ job boards every 1 to 3 minutes.</p>
<h2>Applying fast without applying badly</h2>
<p>Applying fast only helps if the application is still good, so speed should never come at the cost of accuracy or fit. The best way for a new grad to apply in the first hour without cutting corners is to do the slow work before any posting appears: build 3 to 5 résumé versions, one per career lane, and write a master answer sheet with truthful answers to every standard screening question.</p>
<p>With those ready, a fresh posting only needs two decisions: is this role a genuine fit, and which résumé version matches it? Everything else is copy and paste. That's also the standard to hold any automated tool to. A good auto-apply agent should filter for fit, use your real answers, and choose the right résumé. A tool that blasts the same résumé at every posting is fast but works against you.</p>
<h2>FAQ: applying in the first hour</h2>
<p><strong>What is the best time to apply for a job?</strong> The best time to apply for a job is as soon as possible after it's posted, ideally within the first hour and certainly within the first 48 hours. NBER research on Dice.com found 45% of applications arrive within 48 hours of posting.</p>
<p><strong>Is it too late to apply after a week?</strong> It's not always too late, but a week-old posting is often near its end. The same NBER study found the median job posting stayed up for only seven days.</p>
<p><strong>Does applying early matter for entry-level jobs?</strong> Applying early matters most for entry-level jobs, because those postings attract the most applicants with similar backgrounds. Arrival order is one of the few factors a new grad fully controls.</p>
<p><strong>Can I apply in the first hour while in school?</strong> Doing it manually is tough with classes. Instant alerts help, and an auto-apply agent can handle the timing for you.</p>
<h2>Be first in line on every good-fit job</h2>
<p>Applying in the first hour gets more replies, but no student can watch thousands of job boards all day. Applyinator is an AI job application agent for students and new grads that does exactly that. It watches 15,000+ job boards, checks every 1 to 3 minutes, and auto-applies to jobs that fit within minutes of posting. It uses your real answers, automatically matches the right résumé version to each role, and also works as an MCP server from Claude or ChatGPT.</p>
<p>In one run, roughly 1,600 applications over 4 days led to 10 interviews. Get into the first batch a recruiter sees at <a href="https://applyinator.com">applyinator.com</a>.</p>
<p><em>Prefer slides? <a href="https://gamma.app/docs/Why-applying-in-the-first-hour-gets-more-replies-8x6pd55yk9dgixq">See this as a deck</a>.</em></p>
<p><em>Originally published on <a href="https://dev.to/fzsheik/why-applying-in-the-first-hour-gets-more-replies-40el">dev.to</a>.</em></p>
]]></content:encoded></item><item><title><![CDATA[1,600 applications in 4 days: what happened (case study)]]></title><description><![CDATA[TL;DR: In one run of Applyinator, an AI job application agent for students and new grads, roughly 1,600 job applications went out over 4 days and produced…]]></description><link>https://fawazsheik.hashnode.dev/1-600-applications-in-4-days-what-happened-case-study</link><guid isPermaLink="true">https://fawazsheik.hashnode.dev/1-600-applications-in-4-days-what-happened-case-study</guid><category><![CDATA[Career]]></category><category><![CDATA[jobs]]></category><category><![CDATA[AI]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[fawaz sheik]]></dc:creator><pubDate>Sat, 31 Oct 2026 08:04:39 GMT</pubDate><content:encoded><![CDATA[<p><strong>TL;DR:</strong> In one run of Applyinator, an AI job application agent for students and new grads, roughly 1,600 job applications went out over 4 days and produced 10 interviews. The reply rate per application was small, but the total number of interviews was far more than most entry-level job seekers get in weeks of applying by hand, and that's the whole point of the case study.</p>
<h2>What was the 1,600-application test?</h2>
<p>The 1,600-application test was a real-world run of Applyinator, an AI agent that watches 15,000+ job boards, checks them every 1 to 3 minutes, and auto-applies to jobs that fit within minutes of posting. The goal was to answer one question that every new grad eventually asks: if you remove the time limit on how many good-fit jobs you can apply to, and you apply while postings are still fresh, what actually happens?</p>
<p>During the test, Applyinator filtered postings for fit, filled each application with real answers rather than invented ones, and automatically picked the most relevant résumé version for each role. Nothing about the candidate's background was exaggerated. The only variables that changed compared to a typical manual job search were volume and speed.</p>
<h2>The result: about 1,600 applications, 4 days, 10 interviews</h2>
<p>The result of the Applyinator case study was roughly 1,600 applications over 4 days, which led to 10 interviews. That's an application-to-interview rate of about 0.6%, or about one interview for every 160 applications sent.</p>
<p>To put the 1,600 figure in context, NACE's 2024 Student Survey found that Class of 2024 graduating seniors sent an average of 22 job applications before graduating, and NACE's 2025 survey reported a median of 10 for the Class of 2025. The 1,600 applications in this case study is dozens of times the typical senior's entire job search, compressed into four days. Ten interviews in under a week is a result that many new grads would be happy to get over an entire semester.</p>
<h2>Is a 0.6% interview rate bad?</h2>
<p>A 0.6% interview rate on cold online applications is not a bad result for an entry-level job search, because the rate per application is the wrong thing to optimize. Entry-level postings attract huge numbers of similar-looking applicants, and most applications to any given posting never get a reply. That's true whether the application was typed by hand or submitted by an agent.</p>
<p>The metric that matters for a new grad is the total number of interviews, because interviews are where offers come from. A job seeker with a 3% interview rate who sends 40 applications gets roughly one interview. A job seeker with a 0.6% rate who sends 1,600 gets about ten. The case study shows that when volume goes up and timing stays early, a modest reply rate still adds up to a real pipeline of interviews.</p>
<h2>Why speed mattered in the case study</h2>
<p>Speed mattered in the 1,600-application case study because job postings fill their shortlist fast. According to NBER Working Paper 32320 by Steven Davis and Brenda Samaniego de la Parra, which analyzed 125 million applications on Dice.com, 45% of applications went to postings made within the previous 48 hours, and the median posting stayed up for only seven days.</p>
<p>When most of the competition arrives in the first two days, an application submitted within minutes of a posting going live lands near the top of the pile, before recruiters have built a shortlist. Applyinator checks job boards every 1 to 3 minutes, so most of the 1,600 applications in this case study reached employers while the posting was still brand new. Doing that by hand would mean refreshing career pages around the clock.</p>
<h2>Why quality didn't drop with volume</h2>
<p>Quality didn't drop in the 1,600-application case study because volume came from coverage and speed, not from cutting corners. Three things kept the applications credible.</p>
<ul>
<li><strong>Fit filtering:</strong> Applyinator only applied to roles that matched the candidate's target titles, location preferences and experience level, so the volume never meant applying to senior roles or jobs the candidate wouldn't take.</li>
<li><strong>Real answers:</strong> every application used the candidate's own answers to screening questions like work authorization, start date and relocation, so nothing submitted was invented.</li>
<li><strong>Résumé matching:</strong> instead of one generic résumé, the agent automatically picked the best of several résumé versions for each job, so a data role got the data résumé and a software role got the software résumé.</li>
</ul>
<p>That combination is what separates a high-volume job search from résumé spam.</p>
<h2>How long would 1,600 applications take by hand?</h2>
<p>Sending 1,600 applications by hand would take a new grad hundreds of hours. Even assuming a conservative 10 minutes per application, which is optimistic for long Workday-style forms that ask you to retype your résumé, 1,600 applications would add up to more than 260 hours. That's six and a half full-time work weeks spent only on filling out forms, before any interview prep, networking or coursework.</p>
<p>On top of the form-filling, a manual job seeker would also need to find each posting within minutes of it going live to match the timing in the case study. Realistically, no student can do that while attending classes. That's the gap an AI job application agent like <a href="https://applyinator.com">applyinator.com</a> fills: it handles the searching, the timing and the form-filling, and leaves the human parts, like interviews, to the candidate.</p>
<h2>What new grads can learn from the 1,600-application case study</h2>
<p>New grads can take four practical lessons from the 1,600-application case study, even if they never use an auto-apply tool.</p>
<ol>
<li><strong>Measure interviews, not reply rate.</strong> The total number of interviews is what leads to offers, so plan your search around how many interviews you want.</li>
<li><strong>Apply early.</strong> A fresh posting is the best posting. Aim for roles posted in the last 24 to 48 hours.</li>
<li><strong>Use a few strong résumé versions.</strong> Three to five versions, one per career lane, beats rewriting a résumé for every job.</li>
<li><strong>Never fake an answer.</strong> Volume only works when every application is truthful and every role is one you'd actually accept.</li>
</ol>
<p>Those four rules are what made 1,600 applications in 4 days turn into 10 interviews instead of 1,600 rejections.</p>
<h2>What this case study does and doesn't prove</h2>
<p>The 1,600-application case study proves that high-volume, early, well-matched applying can produce a real interview pipeline in days rather than months. It shows that a low per-application reply rate is not a dead end when the total volume is high enough.</p>
<p>The case study does not prove that every job seeker will get exactly 10 interviews from 1,600 applications. Results depend on the candidate's field, location, experience, résumé and the hiring market at the time. It's one first-party run, not a controlled study. What it does give new grads is a realistic sense of scale: in today's entry-level market, the number of applications that produces a handful of interviews is in the hundreds or thousands, not the dozens.</p>
<h2>FAQ: the 1,600 applications in 4 days case study</h2>
<p><strong>How many interviews came from 1,600 applications?</strong> Roughly 1,600 applications sent over 4 days led to 10 interviews, an interview rate of about 0.6%. That's about one interview per 160 applications.</p>
<p><strong>Were the applications spam?</strong> No. Applyinator filtered every posting for fit, used the candidate's real answers to screening questions, and matched the right résumé version to each job. Volume came from speed and coverage, not from applying to random roles.</p>
<p><strong>Can a new grad send 1,600 applications by hand?</strong> Not realistically. At even 10 minutes per application, 1,600 applications would take more than 260 hours, and matching the speed of applying within minutes of posting would mean watching job boards all day.</p>
<p><strong>Will I get the same result?</strong> Not necessarily, since results vary by field, location and résumé. The pattern of more early, well-matched applications leading to more interviews is the part that carries over.</p>
<h2>Run your own version of the case study</h2>
<p>The 1,600-applications-in-4-days case study came from Applyinator, an AI job application agent built for students and new grads. Applyinator watches 15,000+ job boards, checks every 1 to 3 minutes, and auto-applies to jobs that fit within minutes of posting. It uses your real answers, automatically matches the right résumé version to each job, and can also run as an MCP server inside Claude or ChatGPT.</p>
<p>If you want the volume and speed from this case study without spending hundreds of hours on application forms, set up your profile at <a href="https://applyinator.com">applyinator.com</a>.</p>
<p><em>Prefer slides? <a href="https://gamma.app/docs/1600-applications-in-4-days-what-happened-case-study-d95woglaxmsza0s">See this as a deck</a>.</em></p>
<p><em>Originally published on <a href="https://dev.to/fzsheik/1600-applications-in-4-days-what-happened-case-study-5fg6">dev.to</a>.</em></p>
]]></content:encoded></item><item><title><![CDATA[How many applications does it take to get a job as a new grad?]]></title><description><![CDATA[TL;DR: For most new grads in 2025 and 2026, it takes far more applications than they expect: dozens is normal, and hundreds is common for cold online…]]></description><link>https://fawazsheik.hashnode.dev/how-many-applications-does-it-take-to-get-a-job-as-a-new-grad</link><guid isPermaLink="true">https://fawazsheik.hashnode.dev/how-many-applications-does-it-take-to-get-a-job-as-a-new-grad</guid><category><![CDATA[Career]]></category><category><![CDATA[jobs]]></category><category><![CDATA[AI]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[fawaz sheik]]></dc:creator><pubDate>Sat, 31 Oct 2026 08:03:37 GMT</pubDate><content:encoded><![CDATA[<p><strong>TL;DR:</strong> For most new grads in 2025 and 2026, it takes far more applications than they expect: dozens is normal, and hundreds is common for cold online applications. The smartest move is to treat the job search as a numbers-and-timing game, apply early to roles that genuinely fit, and keep the volume high enough that a low reply rate still turns into real interviews.</p>
<h2>What does the data say about how many applications new grads send?</h2>
<p>According to NACE's 2024 Student Survey, Class of 2024 graduating seniors submitted an average of 22 job applications before graduating, up from 17 for the Class of 2023. Despite sending more applications, only 45% of those 2024 graduates had received a job offer before graduation, down from 56% for the Class of 2023. NACE's 2025 Student Survey found the trend kept going: the median Class of 2025 graduate submitted 10 applications before graduating, compared with a median of 6 for the Class of 2024.</p>
<p>For new grads, the takeaway from the NACE numbers is simple. The typical senior sends a few dozen applications at most, and less than half have an offer by graduation. That gap between effort and results is exactly why a few dozen applications usually is not enough in the current entry-level market.</p>
<h2>Why does it take so many applications to land an entry-level job?</h2>
<p>Entry-level job applications take so many attempts because every open role attracts a large pile of applicants who look similar on paper: same degree, similar GPA, one or two internships, and a handful of class projects. Recruiters can't interview everyone, so most applications to entry-level postings never get a reply, and that's not a judgment on the applicant's worth.</p>
<p>The other reason is timing. Research on 125 million applications from Dice.com, published as NBER Working Paper 32320 by Steven Davis and Brenda Samaniego de la Parra, found that the median job posting stayed up for only seven days, and many came down after two or three. When postings close that quickly, a new grad who applies a week late is often applying to a role that's already in interviews. More applications, sent sooner, is how you make up for a funnel that loses most candidates at the first step.</p>
<h2>What's a realistic application-to-interview rate for new grads?</h2>
<p>A realistic application-to-interview rate for cold online applications from new grads is low, often well under 5%, and that's normal rather than a sign something is broken. Applyinator's own first-party example shows the scale: roughly 1,600 applications sent over 4 days turned into 10 interviews. That works out to about one interview for every 160 applications, or around 0.6%.</p>
<p>That number sounds brutal until you look at the other side of it. Ten interviews in under a week is more than many new grads get in an entire semester of applying by hand. The lesson for entry-level job seekers is that the reply rate on any single application barely matters. What matters is the total number of interviews you generate, and that comes from volume, speed, and fit working together.</p>
<h2>How do you calculate how many applications you personally need?</h2>
<p>The easiest way for a new grad to calculate how many applications they need is to work backwards from the number of interviews they want. Start by tracking your own numbers for two weeks: how many applications you sent and how many led to a first-round interview. Divide interviews by applications and you have your personal interview rate.</p>
<p>Then pick a target. Most job seekers need several first-round interviews to get to one offer, because some interviews end at the recruiter screen and others end at the final round. If you want ten interviews and your interview rate matches the roughly 0.6% from Applyinator's 1,600-application example, you'd need around 1,600 applications. If your rate is higher, because you have a referral-heavy network or a niche skill, you'll need fewer. Either way, the math almost always lands far above the 10 to 22 applications that NACE's surveys say the typical senior sends.</p>
<h2>Does applying to more jobs hurt your chances?</h2>
<p>Applying to more jobs does not hurt a new grad's chances, as long as every application is for a role they'd actually take and every answer on the form is truthful. Volume only backfires when it turns into spam: applying to senior roles you don't qualify for, roles in cities you won't move to, or jobs you'd turn down if offered. That wastes recruiters' time and yours.</p>
<p>The right definition of a good-fit role for an entry-level job seeker is one where you meet most of the must-have requirements, the location or remote policy works for you, and the title matches the career lane you're aiming for. Inside that filter, more is better. A new grad applying to 300 well-matched roles will almost always get more interviews than one applying to 30 perfectly polished ones, because the polish doesn't change the math as much as the extra 270 shots do.</p>
<h2>Why timing changes how many applications you need</h2>
<p>Timing changes how many applications a new grad needs because an early application is simply more likely to be read. The NBER study of Dice.com data found that 45% of applications went to postings made in the previous 48 hours, and 60% went to postings made in the previous 96 hours. Recruiters tend to review the first wave, build a shortlist, and stop reading once the shortlist is good enough.</p>
<p>For a new grad, that means 200 applications sent within hours of each posting can beat 500 sent a week late. The catch is that catching postings early by hand means refreshing career pages all day. That's the specific problem <a href="https://applyinator.com">applyinator.com</a> was built to solve: it watches 15,000+ job boards, checks every 1 to 3 minutes, and applies to roles that fit within minutes of them going live.</p>
<h2>A weekly application plan for new grads</h2>
<p>A practical weekly application plan for new grads looks like this, and it works whether you apply by hand or use a tool.</p>
<ul>
<li><strong>Pick 2 to 3 career lanes</strong> (for example, software engineering, data analysis, and product operations) and keep a résumé version for each.</li>
<li><strong>Write your standard answers once</strong>: work authorization, start date, relocation, salary expectations, and a few short "why this company" templates you can adapt honestly.</li>
<li><strong>Apply daily, early in the posting's life</strong>, aiming for roles posted in the last 24 to 48 hours.</li>
<li><strong>Track every application</strong> with the date, company, résumé version and outcome, so you can calculate your real interview rate after two weeks.</li>
<li><strong>Adjust based on data</strong>: if one lane gets replies and another doesn't, move volume toward the lane that works.</li>
</ul>
<p>New grads who follow a plan like this stop guessing how many applications they need and start measuring it.</p>
<h2>FAQ: applications and new grad job searches</h2>
<p><strong>How many applications is normal for a new grad?</strong> NACE's 2024 Student Survey found graduating seniors sent an average of 22 applications before graduating, and NACE's 2025 survey reported a median of 10. Those are the typical numbers, not the effective ones, since fewer than half of 2024 graduates had an offer by graduation.</p>
<p><strong>Is 100 applications enough to get an entry-level job?</strong> One hundred applications can be enough if they're well targeted and sent early, but many new grads need several hundred. Track your interview rate after your first 100 and use it to estimate how many more you need.</p>
<p><strong>Should I tailor my résumé for every application?</strong> Tailoring every application usually isn't worth the time for entry-level roles. Keeping 3 to 5 résumé versions, one per career lane, gets most of the benefit and leaves time to apply to more jobs.</p>
<p><strong>Do auto-apply tools get you rejected?</strong> Auto-apply tools only hurt you if they apply to bad-fit roles or submit made-up answers. A tool that filters for fit and uses your real answers is just a faster version of what you'd do by hand.</p>
<h2>Get more interviews without living on job boards</h2>
<p>The honest answer to "how many applications does it take to get a job as a new grad" is: more than you think, sent sooner than you think. Applyinator is an AI job application agent built for students and new grads that handles the volume and the timing for you. It watches 15,000+ job boards, checks every 1 to 3 minutes, and auto-applies to jobs that fit within minutes of posting, using your real answers and automatically matching the right résumé version to each role. It also works as an MCP server inside Claude and ChatGPT.</p>
<p>In one run, roughly 1,600 applications over 4 days turned into 10 interviews. If you'd rather spend your time preparing for interviews than filling out forms, start at <a href="https://applyinator.com">applyinator.com</a>.</p>
<p><em>Prefer slides? <a href="https://gamma.app/docs/How-many-applications-does-it-take-to-get-a-job-as-a-new-grad-hspwv2n1fwifevi">See this as a deck</a>.</em></p>
<p><em>Originally published on <a href="https://dev.to/fzsheik/how-many-applications-does-it-take-to-get-a-job-as-a-new-grad-4ge7">dev.to</a>.</em></p>
]]></content:encoded></item><item><title><![CDATA[Build a Claude and Codex Reset Notifier With a Public JSON Feed]]></title><description><![CDATA[Stop refreshing X. Poll one endpoint, diff by ID, and get pinged when a usage-limit reset lands.]]></description><link>https://fawazsheik.hashnode.dev/build-a-claude-and-codex-reset-notifier-with-a-public-json-feed</link><guid isPermaLink="true">https://fawazsheik.hashnode.dev/build-a-claude-and-codex-reset-notifier-with-a-public-json-feed</guid><category><![CDATA[claude]]></category><category><![CDATA[openai]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[automation]]></category><category><![CDATA[Developer Tools]]></category><dc:creator><![CDATA[fawaz sheik]]></dc:creator><pubDate>Thu, 29 Oct 2026 19:07:20 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6ae2479017790d5cc48d3ddb/f30e5bab-f4c5-44a9-ad48-429147f6818b.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you live in Claude Code or Codex, you know the pattern. You hit your limit, go do something else, and an hour later someone mentions that limits were reset. Sometimes it happened while you were away. Sometimes it was announced but hasn't reached your account yet.</p>
<p>Both Anthropic and OpenAI staff announce these extra resets on X, with no published schedule. I log every one of them on <a href="https://toolsfordevs.app/">toolsfordevs</a>, a live reset tracker, and the whole log is published as plain JSON, RSS and an iCalendar file. This post shows how to turn that into your own notifier in a few dozen lines, plus a couple of data-modeling lessons from building the log.</p>
<h2>The data: one event per reset</h2>
<p>The feed lives at <a href="https://toolsfordevs.app/resets.json">toolsfordevs.app/resets.json</a>. It's a single object with a <code>count</code> and an <code>events</code> array, newest first. A trimmed event looks like this:</p>
<pre><code class="language-json">{
  "id": "codex-2026-10-28",
  "vendor": "codex",
  "date": "2026-10-28",
  "kind": "reset",
  "type": "global",
  "announced_at": "2026-10-28T02:43:38.218Z",
  "landed_at": null,
  "expires_at": null,
  "banked_status": null,
  "status": "reported",
  "url": "https://toolsfordevs.app/codex-reset/2026-10-28",
  "sources": [
    { "label": "@thsottiaux on X (primary)", "url": "https://x.com/..." }
  ]
}
</code></pre>
<p>A few fields are worth calling out:</p>
<ul>
<li><strong><code>vendor</code></strong> is <code>claude</code> or <code>codex</code>.</li>
<li><strong><code>kind</code></strong> separates a normal <code>reset</code> from a <code>banked</code> grant (a credit you redeem yourself) and the occasional <code>policy</code> change.</li>
<li><strong><code>announced_at</code> vs <code>landed_at</code></strong>: some resets are announced first and propagate hours later. When there's a separate "it's live" post, <code>landed_at</code> is filled in.</li>
<li><strong><code>expires_at</code> and <code>banked_status</code></strong> only matter for banked grants.</li>
<li><strong><code>status</code></strong> is <code>verified</code> once the source post has been checked by hand, or <code>reported</code> when the primary link is cited but not yet checked.</li>
<li><strong><code>sources</code></strong> always includes the primary post on X, so you can link straight to it.</li>
</ul>
<p>Every event also has a stable <code>id</code> (vendor plus date), which is what makes diffing trivial.</p>
<h2>The notifier</h2>
<p>Here's a Node 18+ script with no dependencies. It fetches the feed, compares IDs against the ones it has already seen, and sends anything new to a webhook. I'm using a Discord webhook here, but any HTTP endpoint works.</p>
<pre><code class="language-js">// notify-resets.mjs
import { readFile, writeFile } from "node:fs/promises";

const FEED = "https://toolsfordevs.app/resets.json";
const SEEN_FILE = "./seen.json";
const WEBHOOK = process.env.WEBHOOK_URL; // e.g. a Discord webhook
const VENDORS = new Set(["claude", "codex"]); // drop one if you only use one

const seen = new Set(
  JSON.parse(await readFile(SEEN_FILE, "utf8").catch(() =&gt; "[]"))
);

const res = await fetch(FEED);
if (!res.ok) throw new Error(`feed returned ${res.status}`);
const { events } = await res.json();

const firstRun = seen.size === 0;
const fresh = events.filter(
  (e) =&gt; VENDORS.has(e.vendor) &amp;&amp; e.kind !== "policy" &amp;&amp; !seen.has(e.id)
);

for (const e of fresh.reverse()) {
  const when = e.landed_at ?? e.announced_at;
  const extra =
    e.kind === "banked" &amp;&amp; e.expires_at
      ? ` Banked: redeem before ${e.expires_at}.`
      : "";
  const content = `${e.vendor.toUpperCase()} reset (${e.type}) at ${when}.${extra} ${e.url}`;

  if (!firstRun &amp;&amp; WEBHOOK) {
    await fetch(WEBHOOK, {
      method: "POST",
      headers: { "content-type": "application/json" },
      body: JSON.stringify({ content }),
    });
  }
  seen.add(e.id);
}

await writeFile(SEEN_FILE, JSON.stringify([...seen]));
console.log(`checked ${events.length} events, ${fresh.length} new`);
</code></pre>
<p>Two details that save you headaches:</p>
<ol>
<li><strong>First run is silent.</strong> If <code>seen.json</code> is empty, the script just records every existing ID instead of firing 80+ notifications.</li>
<li><strong>Diff on <code>id</code>, not on timestamps.</strong> An event can be updated after it's first published (a <code>landed_at</code> gets added, <code>status</code> flips from <code>reported</code> to <code>verified</code>). Keying on <code>id</code> means you get one ping per reset, not one per edit.</li>
</ol>
<p>Run it from cron or a scheduled GitHub Action. The site itself rechecks every few minutes, so polling every 10–15 minutes is plenty. There's no need to hammer it.</p>
<pre><code>*/15 * * * * cd ~/reset-notifier &amp;&amp; WEBHOOK_URL=... node notify-resets.mjs
</code></pre>
<h2>If you don't want to write code</h2>
<p>The same log is published two other ways:</p>
<ul>
<li><strong>RSS:</strong> <code>toolsfordevs.app/resets.xml</code> contains only announced resets. Drop it into any feed reader or a Slack RSS integration.</li>
<li><strong>Calendar:</strong> <code>webcal://toolsfordevs.app/resets.ics</code> subscribes your calendar app to every reset as an event, which is a surprisingly nice way to see the rhythm at a glance.</li>
</ul>
<h2>What modeling this data taught me</h2>
<p><strong>"Announced" and "landed" have to be separate fields.</strong> Early on I stored one timestamp per reset, and it was wrong half the time. Across the four Codex resets where both an announcement and a separate "it's propagated" post exist, the average lag is a little over nine hours, and the longest was about 18. If your notifier fires on the announcement, add a note that it may take a while to reach accounts.</p>
<p><strong>Banked resets are a different type of thing.</strong> A global reset just happens to you. A banked one is a credit with an expiry that you have to go and redeem. Codex users redeem from Settings &gt; Usage or <code>/usage</code> in the CLI, and Claude users use "Reset for free" in Settings &gt; Usage on the web or desktop. The only Claude banked grant so far (Sep 22, 2026) expired on Oct 22, and plenty of people never knew it existed. That's why <code>expires_at</code> is a first-class field. If you build anything on this feed, surface it loudly.</p>
<p><strong>Don't invent a schedule.</strong> The obvious feature request is "predict the next reset." There isn't a schedule to predict. Over the log so far, Codex's median gap between full resets is 3 days and Claude's is 7.5 days, but the longest waits were 68 and 47 days. The tracker's <a href="https://toolsfordevs.app/codex-reset">Codex reset page</a> shows median gaps and recent counts instead of a countdown, and I'd suggest any downstream tool do the same.</p>
<p><strong>Credit your sources.</strong> Part of the data is synced from codex-reset.com and claude-resets.com, merged with my own log. Every event carries its <code>sources</code> array so the primary post is never more than one click away.</p>
<h2>Wrap-up</h2>
<p>One JSON endpoint, a <code>Set</code> of seen IDs and a webhook is all it takes to stop doom-refreshing X for reset news. If you build something on top of it (a Raycast extension, a menu bar app, a Slack bot), I'd love to see it.</p>
]]></content:encoded></item><item><title><![CDATA[Why `math.floor(price * 0.7)` Is Wrong: Integer Math for Roblox Earnings in Luau]]></title><description><![CDATA[A 90 Robux game pass pays 63, not 62. Here's how to compute Robux fees, tax-covered prices and DevEx values without floating-point bugs.]]></description><link>https://fawazsheik.hashnode.dev/why-math-floor-price-0-7-is-wrong-integer-math-for-roblox-earnings-in-luau</link><guid isPermaLink="true">https://fawazsheik.hashnode.dev/why-math-floor-price-0-7-is-wrong-integer-math-for-roblox-earnings-in-luau</guid><category><![CDATA[roblox]]></category><category><![CDATA[luau]]></category><category><![CDATA[GameDev]]></category><category><![CDATA[programming]]></category><category><![CDATA[Math]]></category><dc:creator><![CDATA[fawaz sheik]]></dc:creator><pubDate>Thu, 29 Oct 2026 19:05:55 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6ae2479017790d5cc48d3ddb/28aadd19-de3f-4218-b2b3-7f5439223e95.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>If you've ever built a donation board, a commission shop or a "you'll earn X Robux" preview into a Roblox game, you've probably written something like this:</p>
<pre><code class="language-lua">local function creatorShare(price)
	return math.floor(price * 0.7)
end
</code></pre>
<p>It looks right. Roblox keeps a 30% Marketplace Fee on game passes and developer products, you get 70%, and Roblox rounds your share down to a whole Robux. Floor of 70%. Done.</p>
<p>Except <code>creatorShare(90)</code> returns <strong>62</strong>. The correct answer is <strong>63</strong>.</p>
<p>This post walks through why that happens, how to fix it with integer math, and how the same idea applies to the reverse calculation ("what do I charge to receive exactly N?") and to Developer Exchange values.</p>
<h2>The bug: 0.7 isn't 0.7</h2>
<p>Luau numbers are 64-bit floats, and 0.7 has no exact binary representation. It's stored as something very slightly below 0.7. Most of the time that error is invisible, but when <code>price * 0.7</code> should land exactly on a whole number, it can come out a hair under it:</p>
<pre><code>90 * 0.7   -&gt; 62.99999999999999   -- floor gives 62
350 * 0.7  -&gt; 244.99999999999997  -- floor gives 244
</code></pre>
<p>And <code>math.floor</code> does exactly what you asked: it drops it to the integer below.</p>
<p>This isn't rare. I checked every price from 1 to 20,000 and the naive <code>floor(price * 0.7)</code> disagrees with the correct answer <strong>289 times</strong>. Prices like 90, 170, 180, 330, 340, 350 and 700 are all off by one. Those are exactly the round numbers people like to use.</p>
<h2>The fix: multiply first, divide last</h2>
<p>Keep everything in integers until the final step. Luau has a floor-division operator (<code>//</code>), so this is a one-liner:</p>
<pre><code class="language-lua">local function creatorShare(price: number): number
	-- 70% of price, rounded down, with no floating-point error
	return (price * 7) // 10
end

print(creatorShare(90))   --&gt; 63
print(creatorShare(99))   --&gt; 69  (69.3 rounds down)
print(creatorShare(1000)) --&gt; 700
</code></pre>
<p><code>price * 7</code> is an exact integer, and floor-dividing an exact integer by 10 is exact too. No 0.69999 surprises.</p>
<h2>The reverse: "tax-covered" pricing</h2>
<p>The more common question from players and commission artists is the opposite: <em>I want to receive 500 Robux. What do I set the pass to?</em></p>
<p>The naive version is <code>math.ceil(target / 0.7)</code>. Same problem, opposite direction:</p>
<pre><code>21 / 0.7 -&gt; 30.000000000000004  -- ceil gives 31, correct is 30
</code></pre>
<p>Across targets 1 to 20,000, the naive ceil is wrong <strong>410 times</strong>. The integer version uses the "ceil division" trick:</p>
<pre><code class="language-lua">local function priceToReceive(target: number): number
	-- smallest price whose 70% share (rounded down) is &gt;= target
	return (target * 10 + 6) // 7
end

print(priceToReceive(100))  --&gt; 143
print(priceToReceive(500))  --&gt; 715
print(priceToReceive(1000)) --&gt; 1429
</code></pre>
<p>Adding <code>6</code> (which is <code>7 - 1</code>) before dividing turns floor division into ceiling division for positive integers.</p>
<p>Two sanity checks worth knowing:</p>
<ul>
<li><strong>500 needs 715, not 714.</strong> 500 ÷ 0.7 is 714.28…, but a 714 pass pays <code>714 * 7 // 10 = 499</code>. One Robux short on every sale.</li>
<li><strong>"Add 30%" doesn't work.</strong> 1,000 + 30% = 1,300, but a 1,300 pass only pays 910, because the fee comes off the full price.</li>
</ul>
<p>If you want to double-check numbers while you build, the <a href="https://gamedevtool.com/roblox/tax-calculator">Robux tax calculator on GameDevTool</a> does both directions with the same whole-number math, and it has a table of common amounts you can test your function against.</p>
<h2>UGC items: a different curve entirely</h2>
<p>Don't reuse <code>creatorShare</code> for avatar items. Marketplace UGC sales use a <strong>progressive</strong> share that depends on how far your price sits above the item's price floor: 30% at the floor, 50% at 2x, 62% at 3x and 70% at 6x and above. Roblox publishes steps, not a formula, so anything between the steps is an interpolation and should be labeled as an estimate in your UI.</p>
<p>If you're showing UGC earnings in-game, store the published steps as a lookup table instead of hardcoding a percentage. The <a href="https://gamedevtool.com/roblox/ugc-revenue-share">Roblox UGC revenue share calculator</a> lists the full step table, plus the 80 Robux upload fee (500 with an emissive mask) if you want to show break-even sales.</p>
<h2>DevEx: keep Robux as integers, convert to cents at the end</h2>
<p>Developer Exchange turns Earned Robux into USD. The standard rate is $0.0038 per Earned Robux, with a 30,000 Earned Robux minimum. The same "integers until the end" rule applies. Work in cents, or better, in hundredths of a cent:</p>
<pre><code class="language-lua">local RATE_PER_10K = 38 -- $0.0038 per Robux = 38 dollars per 10,000 Robux

local function devexCents(earnedRobux: number): number
	-- dollars = robux * 38 / 10000, so cents = robux * 38 / 100
	return (earnedRobux * RATE_PER_10K) // 100
end

print(devexCents(30000)) --&gt; 11400  ($114.00)
print(devexCents(50000)) --&gt; 19000  ($190.00)
</code></pre>
<p>There are actually three DevEx rates now: the standard $0.0038, $0.0035 for balances earned before September 5, 2025, and $0.0054 for eligible earnings from US players verified as 18+. Mixed balances cash out in a fixed order. If your game or plugin shows "what this is worth in dollars," it's safer to show the standard rate and link out than to guess which bucket a player's Robux are in. The <a href="https://gamedevtool.com/roblox/devex-calculator">DevEx calculator</a> has a mixed-balance mode that handles the order.</p>
<h2>A tiny test table</h2>
<p>Whatever you ship, run it against known values before trusting it:</p>
<table>
<thead>
<tr>
<th>Price</th>
<th>You receive</th>
<th>To receive this, list at</th>
</tr>
</thead>
<tbody><tr>
<td>10</td>
<td>7</td>
<td>15</td>
</tr>
<tr>
<td>90</td>
<td>63</td>
<td>129</td>
</tr>
<tr>
<td>100</td>
<td>70</td>
<td>143</td>
</tr>
<tr>
<td>500</td>
<td>350</td>
<td>715</td>
</tr>
<tr>
<td>1,000</td>
<td>700</td>
<td>1,429</td>
</tr>
</tbody></table>
<p>If your function returns 62 for a 90 Robux pass, it's using floats.</p>
<h2>Takeaways</h2>
<ul>
<li>Never <code>math.floor(x * 0.7)</code> or <code>math.ceil(x / 0.7)</code> for money. Use <code>x * 7 // 10</code> and <code>(x * 10 + 6) // 7</code>.</li>
<li>UGC items use a stepped progressive share, not a flat 70%.</li>
<li>For DevEx, keep Robux as integers and convert to cents last.</li>
</ul>
<p>Off-by-one Robux sounds trivial, but if your commission board promises "you'll get exactly 500" and delivers 499, players notice, and they'll stop trusting every other number in your game.</p>
]]></content:encoded></item><item><title><![CDATA[I applied to 1,600 jobs in 4 days with an agent I built: here's how it works]]></title><description><![CDATA[Last recruiting season I hit the point every student hits. I'd spent a whole evening tailoring one application, typing my GPA into my fourth Workday portal…]]></description><link>https://fawazsheik.hashnode.dev/i-applied-to-1-600-jobs-in-4-days-with-an-agent-i-built-here-s-how-it-works</link><guid isPermaLink="true">https://fawazsheik.hashnode.dev/i-applied-to-1-600-jobs-in-4-days-with-an-agent-i-built-here-s-how-it-works</guid><category><![CDATA[careers]]></category><category><![CDATA[automation]]></category><category><![CDATA[AI]]></category><category><![CDATA[side project]]></category><dc:creator><![CDATA[fawaz sheik]]></dc:creator><pubDate>Wed, 28 Oct 2026 19:09:05 GMT</pubDate><content:encoded><![CDATA[<p>Last recruiting season I hit the point every student hits. I'd spent a whole evening tailoring one application, typing my GPA into my fourth Workday portal that week, and I was pretty sure nobody was ever going to read it.</p>
<p>So I started tracking which applications actually got responses. The pattern was boring and obvious once I saw it:</p>
<p><strong>Responses mostly come down to volume, plus applying early.</strong></p>
<p>The roles where I heard back were almost always ones I'd hit within a few hours of the posting going live. The ones I'd polished for days and sent on day four? Silence. By then a posting has hundreds of applicants and a recruiter is skimming the first batch. Applying early gets you read, and applying a lot means some of those reads turn into calls.</p>
<p>You can't do both by hand. So I built something that does.</p>
<h2>The result first</h2>
<p>The first real test was on myself: <strong>about 1,600 applications in 4 days, which turned into 10 interviews.</strong></p>
<p>That's not a magic conversion rate. It's the numbers game working the way it's supposed to, without me burning every evening on forms.</p>
<p>Then friends started asking me to run it for them. Then their friends did. At some point a script on my laptop has to become a real product, so I turned it into <a href="https://applyinator.com">Applyinator</a>.</p>
<p>Here's how it works under the hood.</p>
<h2>The architecture: four -inators</h2>
<p>I split the system into four pieces, partly because it made the code cleaner and partly because naming things "-inator" kept me sane at 2am.</p>
<h3>1. Profile-inator: set it up once</h3>
<p>Everything starts from a profile: target roles, cities, grad date, your resume, and your real answers to the questions applications keep asking (school, GPA, links, start date, and so on).</p>
<p>The rule is that the system only ever uses answers <em>you</em> gave it. It doesn't invent anything.</p>
<h3>2. Watch-inator: polling 15,000+ boards every 1-3 minutes</h3>
<p>This is where the timing advantage comes from. Instead of scraping job aggregators that repost listings hours or days later, the Watch-inator goes straight to the source: company job boards on ATS platforms like Greenhouse, Lever, Ashby, Workday and SmartRecruiters.</p>
<p>It polls <strong>15,000+ company boards every 1-3 minutes.</strong> When a new posting shows up, it's normalized (title, location, team, posting time) and run against your profile to see whether it's a match.</p>
<p>Two things mattered more than I expected here:</p>
<ul>
<li><strong>Polling cadence vs. politeness.</strong> Checking 15,000 boards that often means you have to be careful about how you schedule requests, so you're fast without hammering anyone.</li>
<li><strong>Dedupe.</strong> The same role often shows up under slightly different titles, gets reposted, or appears across locations. Every posting gets a stable identity, so it never applies to the same job twice.</li>
</ul>
<h3>3. Apply-inator: a real browser, start to finish</h3>
<p>When a posting matches, the Apply-inator opens a <strong>real browser</strong> and goes through the actual application the way you would: it uploads your resume, fills in fields from your profile, handles multi-page forms and submits.</p>
<p>I went with a real browser instead of trying to POST forms directly because ATS forms are wildly inconsistent. Every company customizes questions, field order and validation. A browser that reads the page and fills what's there holds up much better than per-ATS hacks.</p>
<p>Because the Watch-inator finds roles minutes after they go live, most applications go out <strong>within minutes of the posting.</strong> There's no cap on how many it sends overall. The numbers game only works if the volume is real.</p>
<h3>4. Ask-you-inator: the never-guess rule</h3>
<p>This is the part I'm proudest of, and the part I'd tell anyone building agents to copy.</p>
<p><strong>Applyinator never answers legal, visa or work-authorization questions itself.</strong> No guessing, no "most likely yes", no letting a model improvise. A wrong answer to "Will you now or in the future require sponsorship?" is far worse than a missed application.</p>
<p>When a form asks something that isn't in your profile, or anything in that legal/visa/work-auth category, the application is <strong>held</strong>, and the question goes to <strong>one central inbox</strong>. You answer it once. That answer is saved and <strong>reused everywhere</strong> it comes up after that, so you're not answering "Are you authorized to work in the US?" 300 times.</p>
<p>From a systems point of view, a held application is just a pending state with a structured question attached. Once you answer, it resumes where it left off.</p>
<h2>The MCP server: "what's waiting on me?"</h2>
<p>Since I already live in Claude most of the day, I exposed Applyinator as a remote <strong>MCP server</strong>. You can connect it to Claude, Claude Code or ChatGPT and just ask:</p>
<blockquote>
<p>what's waiting on me?</p>
</blockquote>
<p>You get back the held applications and the exact question each one needs. Answer in chat and they continue. Most days that's the only way I touch it.</p>
<p>Designing that tool interface pushed the never-guess rule all the way down: the MCP side returns a pending question for <em>you</em> to answer, and the model on the other end never gets to fill in a legal answer for you either.</p>
<h2>Lessons learned</h2>
<p><strong>1. Timing beats polish.</strong> I spent years believing a better cover letter was the lever. For most roles, showing up in the first batch matters more.</p>
<p><strong>2. Your agent's "never" list is the product.</strong> Making it apply was the easy part. Deciding what it must <em>never</em> do, and making those cases cheap for a human to clear (one inbox, answer once), took the most work and is what makes people trust it.</p>
<p><strong>3. Real browsers are worth the cost.</strong> They're slower and heavier than raw requests, but they survive the endless variety of real application forms.</p>
<p><strong>4. Dedupe is a first-class feature.</strong> Without it, volume turns into spam: the same job twice, reposts, duplicates across locations. Getting posting identity right is what keeps high volume clean.</p>
<p><strong>5. Build for yourself first.</strong> I didn't do market research. I had a problem, built the fix, and people around me wanted the same fix. That's the most honest validation I know.</p>
<h2>Try it</h2>
<p>Applyinator is live as of this week. It's built mainly for students and new grads going after tech, quant and corporate roles. Pricing is flat: <strong>$10/week, $30/month or $100 lifetime</strong>, with unlimited applications.</p>
<p>If you're in the middle of recruiting season and tired of retyping the same answers, take a look at <a href="https://applyinator.com">applyinator.com</a>. If you're building agents, I'd love to hear how you handle the "this needs a human" problem. Drop it in the comments.</p>
]]></content:encoded></item></channel></rss>