<?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[Job Search Systems]]></title><description><![CDATA[Job Search Systems]]></description><link>https://launchpadstudio.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sun, 01 Nov 2026 01:17:08 GMT</lastBuildDate><atom:link href="https://launchpadstudio.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Run your job search like a sprint board: tracking applications and follow-ups as a developer]]></title><description><![CDATA[You'd never ship a project by keeping every ticket in your head. But plenty of developers run a job search exactly that way: a few browser tabs, some…]]></description><link>https://launchpadstudio.hashnode.dev/run-your-job-search-like-a-sprint-board-tracking-applications-and-follow-ups-as-a-developer</link><guid isPermaLink="true">https://launchpadstudio.hashnode.dev/run-your-job-search-like-a-sprint-board-tracking-applications-and-follow-ups-as-a-developer</guid><category><![CDATA[Career]]></category><category><![CDATA[Productivity]]></category><category><![CDATA[interview]]></category><category><![CDATA[job search]]></category><dc:creator><![CDATA[Launchpad Studio]]></dc:creator><pubDate>Fri, 23 Oct 2026 08:14:02 GMT</pubDate><content:encoded><![CDATA[<p>You'd never ship a project by keeping every ticket in your head. But plenty of developers run a job search exactly that way: a few browser tabs, some starred emails, and a vague sense of having applied "somewhere around ten places last week".</p>
<p>That works for a handful of applications. With dozens, across job boards, referrals, recruiters and company career pages, it falls apart. You forget who you've followed up with, which resume you sent, and whether that take-home deadline is Friday or next Friday.</p>
<p>This post shows how to treat your job search like any other project with a backlog: a board, a small data model, a follow-up "SLA", and a weekly retro. You can build it in a spreadsheet, a Notion database, GitHub Projects or a plain Markdown file. The tool matters much less than the habit.</p>
<h2>1. Define a small data model</h2>
<p>Resist the urge to track everything. Each extra field is one more thing to fill in, and a tracker you don't update is useless. A minimal, useful schema looks like this:</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Why it matters</th>
</tr>
</thead>
<tbody><tr>
<td>Company</td>
<td>Obvious, but also prevents accidentally applying twice</td>
</tr>
<tr>
<td>Role</td>
<td>Same company, different roles happen often</td>
</tr>
<tr>
<td>Job link</td>
<td>Postings get taken down. Save a copy of the description if you can</td>
</tr>
<tr>
<td>Source</td>
<td>LinkedIn, referral, job board, company site, recruiter...</td>
</tr>
<tr>
<td>Resume version</td>
<td>Which CV you sent (more on this below)</td>
</tr>
<tr>
<td>Date applied</td>
<td>Starting point for everything else</td>
</tr>
<tr>
<td>Status</td>
<td>Where it is in the pipeline</td>
</tr>
<tr>
<td>Last contact</td>
<td>The most important date for follow-ups</td>
</tr>
<tr>
<td>Contact</td>
<td>Recruiter or hiring manager, if you have a name</td>
</tr>
<tr>
<td>Notes</td>
<td>Tech stack, salary range, take-home details, anything odd</td>
</tr>
</tbody></table>
<p>If you're writing it as a struct, it's about ten fields. Add more only when you've needed a piece of data at least twice and didn't have it.</p>
<h2>2. Model status as a pipeline, not a free-text field</h2>
<p>Free text ("waiting", "they said maybe", "call Tues??") can't be filtered or counted. Use a fixed set of states, like the columns on a Kanban board:</p>
<pre><code>Applied -&gt; Screening -&gt; Technical -&gt; Final -&gt; Offer
               \-&gt; Rejected
               \-&gt; Ghosted
</code></pre>
<p>Keep it short. For tech roles, a separate "Technical" stage (coding interview, take-home, system design) is useful, because that's where most of your prep time goes. "Rejected" and "Ghosted" are terminal states, so they leave your active view and stop taking up mental space.</p>
<p>One rule makes the whole thing work: <strong>every time something happens, update the status and the "last contact" date in the same edit.</strong> That's the equivalent of moving a card and adding a comment.</p>
<h2>3. Give follow-ups an SLA</h2>
<p>Most people don't follow up because every time they have to decide whether it's too soon. Make the decision once, like a service-level agreement:</p>
<ul>
<li><strong>No contact for ~7 days</strong> → send one short follow-up.</li>
<li><strong>No contact for ~7 more days</strong> → send a final follow-up.</li>
<li><strong>No contact for ~21 days total</strong> → move to "Ghosted" (soft-close, not delete).</li>
</ul>
<p>These numbers aren't magic. Hiring timelines vary a lot between companies and countries, and if a recruiter gives you a timeline, use theirs. The point is to have a default so you don't think about it every time.</p>
<p>If your tracker is a spreadsheet, you can compute this instead of remembering it. In Google Sheets or Excel, with "last contact" in column <code>H</code> and status in column <code>G</code>:</p>
<pre><code>=IF(OR(H2="",G2="Offer",G2="Rejected",G2="Ghosted"),"",
  IF(TODAY()-H2&gt;=21,"GHOSTED?",
  IF(TODAY()-H2&gt;=7,"FOLLOW UP","")))
</code></pre>
<p>Add conditional formatting to that column and your board tells you what to do next. In Notion or GitHub Projects, a date-based filter ("last contact before 7 days ago, status not closed") gives you the same view.</p>
<p>A follow-up message for a tech role can be very short:</p>
<pre><code class="language-text">Subject: Following up: Backend Engineer application

Hi &lt;name&gt;,

I applied for the Backend Engineer role on &lt;date&gt; and wanted to
check if there's an update on timing. I'm especially interested in
&lt;specific thing: the migration you mentioned, the team's stack, etc.&gt;.

Happy to share a code sample or anything else that helps.

Thanks,
&lt;you&gt;
</code></pre>
<p>No attachments unless they asked, no guilt-tripping, and never more than two follow-ups for one application.</p>
<h2>4. Version your resume like a release</h2>
<p>Many developers keep one resume and tweak it by hand for each application, then lose track of what they sent where. Treat it like a release instead:</p>
<ul>
<li>Keep a small number of named versions, e.g. <code>backend-v2</code>, <code>fullstack-v1</code>, <code>platform-v1</code>.</li>
<li>Store them somewhere stable (a folder, or a private repo if you write your resume in Markdown or LaTeX).</li>
<li>Record the version name in the tracker for every application.</li>
</ul>
<p>After a few weeks you can group applications by resume version and see which one gets responses. Keep in mind that sample sizes in a job search are small and roles differ, so read it as a hint, not a proper A/B test. Still, a hint beats a guess, and it's a good reason to rework a version that never gets replies.</p>
<h2>5. Track which sources actually convert</h2>
<p>The same goes for sources. Recording where each application came from lets you see your own funnel:</p>
<ul>
<li>How many applications per source?</li>
<li>How many got any response (screening or beyond)?</li>
<li>How many reached a technical interview?</li>
</ul>
<p>Compare the sources on <strong>responses and interviews</strong>, not on the number of applications. If one source takes most of your time and produces few conversations, consider shifting some of that time to sources that do produce them. For many people that means more referrals and direct applications, and fewer one-click applications. But your data is what counts.</p>
<p>In a spreadsheet, a <code>COUNTIFS</code> per source/status pair is enough:</p>
<pre><code>=COUNTIFS(D:D,"Referral",G:G,"&lt;&gt;Applied",G:G,"&lt;&gt;Ghosted")
</code></pre>
<p>(Responses from referrals: anything that moved past "Applied" and wasn't ghosted.)</p>
<h2>6. Run a weekly retro</h2>
<p>Once a week, take 15 minutes for a short retro, like at the end of a sprint:</p>
<ol>
<li><strong>Clear the alerts:</strong> send due follow-ups, mark stale applications as ghosted.</li>
<li><strong>Check the funnel:</strong> any change in which sources or resume versions get responses?</li>
<li><strong>Review interviews:</strong> which questions came up? Which ones were hard to answer? Add them to a prep list.</li>
<li><strong>Plan next week's backlog:</strong> pick a realistic number of roles worth tailoring for, instead of mass-applying.</li>
</ol>
<p>That third step matters for tech candidates. Many interview loops include a behavioral round next to the technical ones ("tell me about a time you disagreed with a technical decision"). Keep a list of the questions you got and the stories you used, so you prepare a few strong stories once instead of improvising them in every loop.</p>
<h2>7. Keep it boring</h2>
<p>The best tracker is the one you'll still update in week six, when motivation is low. Some tips:</p>
<ul>
<li><strong>Log on send.</strong> Add the row the moment you submit, before you close the tab.</li>
<li><strong>One place only.</strong> Don't split it between email labels, a notes app and a spreadsheet.</li>
<li><strong>No over-engineering.</strong> You're a developer, so building a full-stack job tracker app is tempting. It's also a great way to avoid actually applying. If you want a portfolio project, that's fine, but run your current search on something simple.</li>
</ul>
<h2>TL;DR</h2>
<ul>
<li>About ten fields, a fixed status pipeline, and a "last contact" date on every row.</li>
<li>A follow-up SLA (≈7 / ≈14 / ≈21 days) that you decide once, not each time.</li>
<li>Versioned resumes and a "source" column, so you can see what gets responses.</li>
<li>A 15-minute weekly retro.</li>
</ul>
<p>You can build all of this in about half an hour in the tool you already use.</p>
<hr />
<p><strong>Disclosure:</strong> this article was written with AI assistance and reviewed and edited by the Launchpad Studio team. If you'd rather not build the spreadsheet yourself, we made a free version for Google Sheets and Excel with the application log, follow-up/ghosted alerts and a "which source works" dashboard described above. It's our product: <a href="https://dub.sh/lp-hashnode-free">Job Search Command Center</a>.</p>
]]></content:encoded></item></channel></rss>