<?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: Natraj L</title>
    <description>The latest articles on DEV Community by Natraj L (@jartan).</description>
    <link>https://dev.to/jartan</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F391534%2Fd1d58a14-3e89-4166-94b6-e4fc8c38e8a0.png</url>
      <title>DEV Community: Natraj L</title>
      <link>https://dev.to/jartan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jartan"/>
    <language>en</language>
    <item>
      <title>You Say Yes Before You Check If the Week Has Room. Here's the Fix I Built.</title>
      <dc:creator>Natraj L</dc:creator>
      <pubDate>Sun, 27 Sep 2026 17:53:31 +0000</pubDate>
      <link>https://dev.to/jartan/you-say-yes-before-you-check-if-the-week-has-room-heres-the-fix-i-built-26i5</link>
      <guid>https://dev.to/jartan/you-say-yes-before-you-check-if-the-week-has-room-heres-the-fix-i-built-26i5</guid>
      <description>&lt;p&gt;A new lead messages you: "Can you start Tuesday?" You say yes. It feels fine — you're not that busy. Three weeks later you're writing an awkward email to an existing client explaining why their deadline slipped, because nobody, including you, noticed that Tuesday didn't actually have room.&lt;/p&gt;

&lt;p&gt;This is the single most common way freelancers and solo consultants get overbooked: not through bad planning, but through no planning — no number to check before saying yes. A calendar shows you what's scheduled. It doesn't tell you what's left.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fix isn't more discipline. It's a number.
&lt;/h2&gt;

&lt;p&gt;I built a workbook that replaces the guess with a number. You log the hours you've booked per client, per week, and nine linked tabs do the rest:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Setup&lt;/strong&gt; — your real weekly available hours, target utilization %, and buffer time, set once&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clients &amp;amp; Rates&lt;/strong&gt; — every active and pipeline client in one color-coded table&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weekly Capacity Log&lt;/strong&gt; — 16 weeks pre-built, auto-summing booked hours per client&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Capacity Dashboard&lt;/strong&gt; — this week's snapshot plus an 8-week "overbooking radar" that flags a red week while you can still renegotiate it, not after you've already missed it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Client Deadline Tracker&lt;/strong&gt; — days-remaining formulas that turn red under 3 days&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rate Reality Check&lt;/strong&gt; — your true effective hourly rate after unbilled admin time, versus what you quote&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No formulas to build. You type hours into the yellow input cells; everything else — the utilization percentage, the overbooking flags, the revenue-at-risk estimate — calculates itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters more than another to-do app
&lt;/h2&gt;

&lt;p&gt;Task managers tell you what to do. They don't tell you whether you have the hours to do it. The gap between those two things is exactly where overcommitment lives, and it's invisible until the week you're already in it.&lt;/p&gt;

&lt;p&gt;The workbook also comes with a 9-page companion PDF guide, including three ready-to-send scripts for the exact moments this is built for: a new lead wants to start now, an existing client adds scope mid-project, and the week you realize you're already overbooked.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;p&gt;Freelance consultants, designers, developers, and writers juggling three or more active clients — anyone who has said yes to a project and then spent the next hour doing capacity math in their head instead of in a tool built for it.&lt;/p&gt;

&lt;p&gt;It works in Excel natively, and imports cleanly into Google Sheets (File &amp;gt; Import) with every formula and conditional-format rule intact.&lt;/p&gt;

&lt;p&gt;If you've ever found out you were overbooked the same week it happened, this is built to make sure that doesn't happen again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get it here:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gumroad ($39): &lt;a href="https://logi2.gumroad.com/l/cvgbq" rel="noopener noreferrer"&gt;https://logi2.gumroad.com/l/cvgbq&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Etsy ($27): &lt;a href="https://www.etsy.com/listing/4583655465/freelancer-capacity-planner-spreadsheet" rel="noopener noreferrer"&gt;https://www.etsy.com/listing/4583655465/freelancer-capacity-planner-spreadsheet&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>productivity</category>
      <category>freelance</category>
      <category>career</category>
    </item>
    <item>
      <title>You remember a third of your 1:1s - so I built the system I should have had</title>
      <dc:creator>Natraj L</dc:creator>
      <pubDate>Sun, 20 Sep 2026 17:19:31 +0000</pubDate>
      <link>https://dev.to/jartan/you-remember-a-third-of-your-11s-so-i-built-the-system-i-should-have-had-3a1a</link>
      <guid>https://dev.to/jartan/you-remember-a-third-of-your-11s-so-i-built-the-system-i-should-have-had-3a1a</guid>
      <description>&lt;p&gt;A manager with six reports holds roughly 150 one-to-ones a year. Ask most of us what was said in any given one three weeks later and you get an impression, not a record.&lt;/p&gt;

&lt;p&gt;Then review season arrives and a year of someone's work gets reconstructed from the last six weeks anyone can actually recall. That is how recency bias ends up inside a salary decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four ways 1:1s decay
&lt;/h2&gt;

&lt;p&gt;I have watched all of these happen on my own calendar:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;The status meeting.&lt;/strong&gt; You already know what they are working on - it is in the tracker. If the 1:1 is a spoken version of the board, you are spending your most valuable half hour reading something you could have read in ninety seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The meeting with no memory.&lt;/strong&gt; Good conversation, real problems, honest answers, and none of it written down. Three weeks later you cannot remember whether you promised to talk to the payments lead or they did.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The meeting that keeps moving.&lt;/strong&gt; Each cancellation is individually rational. The pattern is not, and your report is counting even if you are not.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The meeting where nothing hard is ever said.&lt;/strong&gt; Warm, pleasant, and slightly useless - because the hard feedback got saved for the review cycle, where it lands as a surprise.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;A 9-tab spreadsheet and a 14-page playbook. Nothing clever, just a place for the record to live:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;1-1 Log&lt;/strong&gt; - 200 rows: their topics, your topics, feedback owed in both directions, what was decided, who owes what, and a 1-5 energy read that turns red on its own.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Action Items&lt;/strong&gt; - every promise made in a 1:1, with an owner and a self-calculating "days late" column. Filter by Owner = Me once a week and be honest about what you see.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Growth Evidence&lt;/strong&gt; - one line per observed thing, tagged to a competency and a scope. Promotion cases are not written in November; they are collected all year.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review Prep&lt;/strong&gt; and &lt;strong&gt;Team Health&lt;/strong&gt; - meetings held, last met, days since, open actions both ways, evidence count, average energy. All calculated, nothing typed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Question Bank&lt;/strong&gt; - 60 questions sorted by the situation you are actually in: a new report, someone stuck, low energy, hard feedback, after a bad incident, someone clearly job-hunting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The whole thing is three habits: ten minutes before each 1:1, five minutes after, ten minutes on Friday.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one rule that makes it work
&lt;/h2&gt;

&lt;p&gt;Write the log inside the meeting or within ten minutes of it. Not at the end of the day. Not on Friday. A 1:1 written up on Friday is a 1:1 you half-remember, which is where you started.&lt;/p&gt;

&lt;p&gt;If you take notes in the room, say so once out loud: &lt;em&gt;"I write these down so I don't drop things you asked me for."&lt;/em&gt; Nobody has ever objected to that sentence.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to get it
&lt;/h2&gt;

&lt;p&gt;It works in Excel, Google Sheets, LibreOffice and Numbers. No macros, no add-ins, no account.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gumroad: &lt;a href="https://logi2.gumroad.com/l/uurnfx" rel="noopener noreferrer"&gt;https://logi2.gumroad.com/l/uurnfx&lt;/a&gt; (\$9)&lt;/li&gt;
&lt;li&gt;Etsy: &lt;a href="https://www.etsy.com/listing/4579037146/11-meeting-template-for-managers-one-on" rel="noopener noreferrer"&gt;https://www.etsy.com/listing/4579037146/11-meeting-template-for-managers-one-on&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I write up one of these tools a week - workbooks, playbooks, small things that solve one specific problem. If that is useful, the newsletter is free: &lt;a href="https://aifounderweekly.substack.com" rel="noopener noreferrer"&gt;https://aifounderweekly.substack.com&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Also published on &lt;a href="https://medium.com/@natraj.loganathan" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>management</category>
      <category>productivity</category>
      <category>career</category>
      <category>leadership</category>
    </item>
    <item>
      <title>Your MRR Is a Guess Until You Check It. Here's How I Fixed That.</title>
      <dc:creator>Natraj L</dc:creator>
      <pubDate>Sun, 13 Sep 2026 13:57:18 +0000</pubDate>
      <link>https://dev.to/jartan/your-mrr-is-a-guess-until-you-check-it-heres-how-i-fixed-that-5anm</link>
      <guid>https://dev.to/jartan/your-mrr-is-a-guess-until-you-check-it-heres-how-i-fixed-that-5anm</guid>
      <description>&lt;p&gt;I once had an investor call in twenty minutes and no idea what my actual MRR was. I had a Stripe dashboard open in one tab, a spreadsheet from three weeks ago in another, and a mental note that "a couple people churned recently." I was reconstructing my own business's numbers live, on a call, from memory.&lt;/p&gt;

&lt;p&gt;Most solo SaaS founders do exactly this. Revenue lives in Stripe, expenses live in a bank statement or a different spreadsheet, and churn lives in your memory of who emailed to cancel. None of it is linked, so every investor update or founder check-in turns into twenty minutes of manual math before you can even talk about the number.&lt;/p&gt;

&lt;p&gt;So I built a workbook that does the math for you. It's a 7-tab Google Sheets / Excel file — Subscribers, Churn Log, Expenses, Plans &amp;amp; Pricing, Settings, Start Here, and a Dashboard — where the only tabs you ever touch are Subscribers, Churn Log, and Expenses. Everything else — MRR, ARR, churn rate, ARPU, CAC, estimated LTV, LTV:CAC ratio, and cash runway in months — calculates itself from formulas the moment you add a row.&lt;/p&gt;

&lt;p&gt;It also watches itself. Two built-in alerts flag it automatically if your churn rate climbs above 5% or your LTV:CAC ratio drops below your own target, so you're not relying on noticing a bad trend by eye. A 7-page walkthrough guide explains exactly how each metric is calculated, so the numbers aren't a black box either.&lt;/p&gt;

&lt;p&gt;The full workbook plus the guide is $47 on &lt;a href="https://logi2.gumroad.com/l/dfykyq" rel="noopener noreferrer"&gt;Gumroad&lt;/a&gt;, $27 on Etsy, and $39 on Payhip. Set it up once, in under ten minutes, and you'll never do investor-call math from memory again.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@natraj.loganathan/your-mrr-is-a-guess-until-you-check-it-heres-how-i-fixed-that-64599bd1de75" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>saas</category>
      <category>startup</category>
    </item>
    <item>
      <title>Scope Creep Isn't a Client Problem. It's a Process Problem.</title>
      <dc:creator>Natraj L</dc:creator>
      <pubDate>Sun, 06 Sep 2026 18:47:17 +0000</pubDate>
      <link>https://dev.to/jartan/scope-creep-isnt-a-client-problem-its-a-process-problem-546a</link>
      <guid>https://dev.to/jartan/scope-creep-isnt-a-client-problem-its-a-process-problem-546a</guid>
      <description>&lt;p&gt;I once spent forty minutes on a call talking a client out of "just one more small tweak" that was, by my own estimate, about six hours of unbilled design work. I didn't lose that fight because I lacked a contract. I lost it because my contract didn't give me anything to say in the moment. It just sat in a drawer, unread since the day it was signed.&lt;/p&gt;

&lt;p&gt;Most freelancer contracts are like this: solid on liability and payment terms, silent on the specific moments that actually cost you money. Scope creep doesn't show up as a legal dispute. It shows up as "can you just also..." on a Tuesday afternoon, and there's no clause telling you what to say back. So you say yes, because saying no feels confrontational and you don't have a script ready. Multiply that across every client, every quarter, and it's not a contract problem. It's a process problem: nobody wrote down what happens when a request falls outside the original scope.&lt;/p&gt;

&lt;p&gt;So I built The Client Onboarding &amp;amp; Contract Playbook, a 12-page plain-English guide for freelancers and solo consultants who already have some form of contract but are missing the parts that actually get used under pressure. It covers a 5-step onboarding sequence that catches scope questions before a project starts, 8 contract clauses explained in plain English instead of legalese you'd have to translate for a client anyway, a 10-question client intake questionnaire, and copy-paste scripts for the three conversations freelancers dread most: pushing back on scope creep, following up on a late invoice at 7/20/30+ days, and firing a client who's no longer worth the account.&lt;/p&gt;

&lt;p&gt;This isn't a contract generator. If you need something legally binding for your jurisdiction, talk to a lawyer. This is for the freelancer who already has a contract and still finds themselves agreeing to extra work they never signed up for, because in the moment, silence is easier than confrontation. The scripts exist so you have language ready before the moment happens, not while you're on the call scrambling to sound reasonable.&lt;/p&gt;

&lt;p&gt;The full guide is $17 on Gumroad and $12 on Etsy. If you want more of this — actual freelance-business friction, not another productivity platitude — I write about it weekly at aifounderweekly.substack.com.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@natraj.loganathan/scope-creep-isnt-a-client-problem-it-s-a-process-problem-47c34e7288e0" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>freelance</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I stopped hiding my career pivot on my resume and started getting callbacks</title>
      <dc:creator>Natraj L</dc:creator>
      <pubDate>Sun, 30 Aug 2026 18:00:32 +0000</pubDate>
      <link>https://dev.to/jartan/i-stopped-hiding-my-career-pivot-on-my-resume-and-started-getting-callbacks-3fca</link>
      <guid>https://dev.to/jartan/i-stopped-hiding-my-career-pivot-on-my-resume-and-started-getting-callbacks-3fca</guid>
      <description>&lt;p&gt;For three months I applied to "AI product manager" and "AI program manager" roles with a resume that listed my actual job titles and nothing else. Silence, mostly, with a few generic rejections. The pattern only became obvious once I compared notes with someone on the other side of the table: hiring managers weren't doubting my competence. They were doubting my seriousness. A resume that doesn't name the pivot reads like someone chasing a trend, not making a real move.&lt;/p&gt;

&lt;p&gt;The fix wasn't a better summary line. It was naming the pivot directly, in the first sentence, and then backing it with proof instead of adjectives — one real project, documented, not implied. "Led cross-functional teams" became something closer to "Built and shipped an internal AI workflow tool that cut manual review time in half," even when that project started as a weekend build rather than an official assignment.&lt;/p&gt;

&lt;p&gt;The second unlock was the LinkedIn "About" section, which almost nobody rewrites when they pivot. Mine still described my old role for months after I'd started applying elsewhere — a small thing, but it's usually the first thing a recruiter checks after the resume, and it was quietly contradicting everything I was trying to say.&lt;/p&gt;

&lt;p&gt;Once both were aligned — resume naming the pivot with proof, LinkedIn backing it up — the response rate changed. Not overnight, and not because of a trick. Just because the story finally made sense on both documents at the same time.&lt;/p&gt;

&lt;p&gt;I turned the templates, the project framework, and the follow-up email sequence I used into a kit for anyone doing the same pivot — 1-page and 2-page ATS resumes, a cover letter structured paragraph by paragraph, the LinkedIn framework, three follow-up email templates, and a step-by-step guide for building your one AI project if you don't have one yet: &lt;a href="https://www.etsy.com/listing/4565486111/the-ai-career-pivot-resume-kit-ats" rel="noopener noreferrer"&gt;The AI Career Pivot Resume Kit&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you're mid-pivot right now and the silence is getting to you, it's usually not about your competence. It's about whether your documents make the pivot legible.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@natraj.loganathan/i-stopped-hiding-my-career-pivot-on-my-resume-and-started-getting-callbacks-da7ea50f8e11" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>resume</category>
      <category>jobsearch</category>
      <category>ai</category>
    </item>
    <item>
      <title>My Freelance Business Lived in Four Apps That Never Talked to Each Other</title>
      <dc:creator>Natraj L</dc:creator>
      <pubDate>Sun, 30 Aug 2026 13:29:27 +0000</pubDate>
      <link>https://dev.to/jartan/my-freelance-business-lived-in-four-apps-that-never-talked-to-each-other-31i2</link>
      <guid>https://dev.to/jartan/my-freelance-business-lived-in-four-apps-that-never-talked-to-each-other-31i2</guid>
      <description>&lt;p&gt;Every Monday morning, before I could do any actual client work, I'd spend 20 to 30 minutes just reconstructing where things stood. Not because I'm disorganized. Because my freelance business was scattered across four tools that never talked to each other.&lt;/p&gt;

&lt;p&gt;Leads lived in a spreadsheet. Deliverables lived in a task app. Invoices lived in a doc. And the actual status of each relationship lived in my head. That last part is the dangerous one - memory doesn't scale past 3 or 4 active clients.&lt;/p&gt;

&lt;p&gt;So I rebuilt it inside Notion as one connected workspace: six linked databases that reference each other automatically (Command Center Dashboard, Client CRM, Project and Task Tracker, Invoice and Revenue Log, Client Onboarding Checklist, Weekly Business Review). Open a client and you see their open tasks and outstanding invoices without re-typing anything. Runs on Notion's free plan, no formulas required.&lt;/p&gt;

&lt;p&gt;I packaged the build as the &lt;strong&gt;Notion Freelance Business Hub&lt;/strong&gt;: a 15-page visual walkthrough plus a copy-paste setup guide with the exact property, relation, and rollup order. Setup takes 60-90 minutes, or spread it across a week.&lt;/p&gt;

&lt;p&gt;Get it on &lt;a href="https://logi2.gumroad.com/l/kfrdo" rel="noopener noreferrer"&gt;Gumroad&lt;/a&gt; or &lt;a href="https://www.etsy.com/listing/4561394321" rel="noopener noreferrer"&gt;Etsy&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you want more build-in-public breakdowns like this, I write a free weekly newsletter at &lt;a href="https://aifounderweekly.substack.com" rel="noopener noreferrer"&gt;aifounderweekly.substack.com&lt;/a&gt; - one click to subscribe, no spam.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@natraj.loganathan/my-freelance-business-lived-in-four-apps-that-never-talked-to-each-other-cbbb5f4e5382" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>notion</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I almost accepted the lower offer because the bigger number was harder to compare</title>
      <dc:creator>Natraj L</dc:creator>
      <pubDate>Sun, 23 Aug 2026 14:26:10 +0000</pubDate>
      <link>https://dev.to/jartan/i-almost-accepted-the-lower-offer-because-the-bigger-number-was-harder-to-compare-37a5</link>
      <guid>https://dev.to/jartan/i-almost-accepted-the-lower-offer-because-the-bigger-number-was-harder-to-compare-37a5</guid>
      <description>&lt;p&gt;Two offers landed in the same week. One was a straight $105K in a city I already lived in. The other was $95K, fully remote, with equity, a better 401(k) match, and a relocation stipend I wasn't planning to use. My gut said take the $105K -- it was just a bigger number, and bigger numbers feel safer when you're deciding in a hurry.&lt;/p&gt;

&lt;p&gt;I almost did it. Then I actually sat down and did the math instead of eyeballing it, and the remote offer won by a wide margin once I accounted for the equity vesting on a normal schedule, the 401(k) match difference over a year, and what $95K actually buys in a place with a lower cost of living than where the $105K job was based. Base salary alone hid more than it revealed.&lt;/p&gt;

&lt;p&gt;That's the trap with comparing job offers: the number on top is the easiest thing to compare and the least reliable one. A $95K offer with real equity and a strong match can beat a flat $105K offer once you do the math. A remote offer tied to an expensive city's pay band can be worth less than a smaller number somewhere cheaper. Most people either eyeball it under time pressure, or open a blank spreadsheet the night before they have to respond and try to rebuild all of this from scratch.&lt;/p&gt;

&lt;p&gt;So I built the workbook I wish I'd had that week: The Job Offer Decision Kit.&lt;/p&gt;

&lt;p&gt;It's a 6-tab spreadsheet plus a companion PDF guide that turns base salary, bonus, signing bonus, equity/RSU grant, 401(k) match, benefits, and PTO into one clear Year-1 number for up to 4 offers side by side. It adjusts that number for cost of living, so a bigger salary in an expensive city gets compared honestly against a smaller one somewhere cheaper. It scores the non-money factors -- growth, culture, stability, flexibility -- by what actually matters to you, not a generic checklist. And it sets your target ask and your walk-away number before you get on the phone, not during it, with 6 ready-to-send negotiation scripts for the conversations that actually come up.&lt;/p&gt;

&lt;p&gt;You don't need to know spreadsheet formulas to use it. Every cell you're meant to fill in is color-coded with an example value already in it; everything else calculates automatically. It works in Excel, LibreOffice, and Google Sheets, and setup takes about 10-15 minutes for one offer.&lt;/p&gt;

&lt;p&gt;If you've got an offer sitting in your inbox right now, or you're expecting one soon, you can get it here: &lt;a href="https://logi2.gumroad.com/l/ukkvqm" rel="noopener noreferrer"&gt;https://logi2.gumroad.com/l/ukkvqm&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@natraj.loganathan/i-almost-accepted-the-lower-offer-because-the-bigger-number-was-harder-to-compare-736df1e528b6" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
      <category>jobsearch</category>
    </item>
    <item>
      <title>I Stopped Trusting Green CI on AI-Generated Pull Requests</title>
      <dc:creator>Natraj L</dc:creator>
      <pubDate>Sun, 16 Aug 2026 15:06:53 +0000</pubDate>
      <link>https://dev.to/jartan/i-stopped-trusting-green-ci-on-ai-generated-pull-requests-51bn</link>
      <guid>https://dev.to/jartan/i-stopped-trusting-green-ci-on-ai-generated-pull-requests-51bn</guid>
      <description>&lt;p&gt;Three weeks ago I merged a PR that Claude Code wrote for a side project.&lt;/p&gt;

&lt;p&gt;The diff was clean, the tests passed, CI was green. I skimmed it, approved it, moved on. Two weeks later I found out the authorization check on a delete endpoint had quietly disappeared during a refactor earlier in that same session. Nobody exploited it. I just got lucky.&lt;/p&gt;

&lt;p&gt;That's when it clicked that AI-generated code doesn't fail the way human-written code fails. A human engineer forgets an edge case or doesn't know a library has a built-in for something. An AI coding agent writes a plausible-looking auth check, a plausible-looking test, a plausible-looking API call, and "plausible" is exactly the failure mode that slips past a reviewer skimming a diff at 6pm. None of it shows up as a red squiggly line. It just looks finished.&lt;/p&gt;

&lt;p&gt;So I went back through a stack of AI-generated PRs, mine and a few teammates shared with me, looking for a pattern instead of individual bugs. Six showed up over and over: hardcoded secrets dropped in for a "working example," authorization checks that check you're logged in but not that you're allowed to touch this specific resource, tests that mock the exact function they're supposed to be testing (so they pass no matter what the implementation does), API calls that look right but don't match the actually-installed library version, edge cases that fail silently instead of throwing, and scope creep where the agent "improves" an adjacent file nobody asked it to touch.&lt;/p&gt;

&lt;p&gt;I built a toolkit around those six patterns: what each one looks like in a real diff, the exact review question that catches it, a 45-item checklist organized by risk category, a 1-5 risk scoring rubric so you know how deep to review before you start, and a companion spreadsheet that logs every PR you review so the pattern becomes visible over time instead of staying anecdotal, which AI tool in your stack actually produces the most rework, not a guess.&lt;/p&gt;

&lt;p&gt;It's for solo developers and small teams (2-15 people) who've adopted Claude Code, Cursor, or GitHub Copilot for a meaningful share of their code and are currently reviewing AI-generated PRs the same way they'd review a junior engineer's: reading the diff, trusting green CI, moving on. If that's you, the 5-minute triage checklist alone is worth running on your last three merged PRs before you read anything else. Most people find something on the first pass.&lt;/p&gt;

&lt;p&gt;If you want the full toolkit, a 16-page PDF plus the PR risk tracker workbook, it's here: &lt;a href="https://logi2.gumroad.com/l/lpdebo" rel="noopener noreferrer"&gt;https://logi2.gumroad.com/l/lpdebo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The thing I keep coming back to is that "the code looks finished" and "the code has actually been checked" are two different claims, and AI coding agents are very good at making the first one true regardless of the second. Worth remembering the next time a diff looks a little too clean.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@natraj.loganathan/i-stopped-trusting-green-ci-on-ai-generated-pull-requests-6c2aec4caaeb" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I Built a Google Sheets Calculator That Tells Tech Workers Exactly When They Can Quit Their Job</title>
      <dc:creator>Natraj L</dc:creator>
      <pubDate>Fri, 14 Aug 2026 02:00:12 +0000</pubDate>
      <link>https://dev.to/jartan/i-built-a-google-sheets-calculator-that-tells-tech-workers-exactly-when-they-can-quit-their-job-9ig</link>
      <guid>https://dev.to/jartan/i-built-a-google-sheets-calculator-that-tells-tech-workers-exactly-when-they-can-quit-their-job-9ig</guid>
      <description>&lt;p&gt;Six months ago, I had a Notion doc titled "The Plan." It had my side hustle revenue projections, my savings runway, my client pipeline. I thought it was thorough. Then my manager scheduled a surprise 1:1 and I immediately started refreshing my bank balance on my phone under the desk.&lt;/p&gt;

&lt;p&gt;The spreadsheet wasn't the problem. The spreadsheet was missing something: a single, clear answer to the question I was actually asking. Not "how much do I make freelancing?" but "can I afford to quit right now?"&lt;/p&gt;

&lt;p&gt;So I built something that gives you that answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;The Side Hustle Full-Time Decision Planner is a Google Sheets workbook for tech workers who are seriously considering going independent. Not daydreaming — actually close to pulling the trigger, or actively trying to figure out when they can.&lt;/p&gt;

&lt;p&gt;It has four connected calculators:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Financial Runway Calculator.&lt;/strong&gt; Enter your monthly expenses, current savings, and minimum acceptable income. It tells you exactly how many months you can survive without a single client.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Client Income Projector.&lt;/strong&gt; Model what your income looks like at 3, 6, and 12 months post-quit: conservative (1 client), realistic (3 clients), and aggressive (5+ clients).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Risk Score Dashboard.&lt;/strong&gt; Scores your health insurance plan, estimated tax setup, and emergency fund readiness.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Go/Wait Decision Engine.&lt;/strong&gt; Produces one output: a recommended quit date, or the specific milestone you need to hit first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;p&gt;Software engineers, PMs, designers, and data professionals earning $80K–$200K who have a side hustle generating real income and are trying to make the leap with math rather than motivation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to get it
&lt;/h2&gt;

&lt;p&gt;Available on Gumroad at $17: &lt;a href="https://logi2.gumroad.com/l/sidehustleplanner" rel="noopener noreferrer"&gt;https://logi2.gumroad.com/l/sidehustleplanner&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also on &lt;a href="https://www.etsy.com/listing/4555422356" rel="noopener noreferrer"&gt;Etsy&lt;/a&gt; and &lt;a href="https://payhip.com/b/5ZCUQ" rel="noopener noreferrer"&gt;Payhip&lt;/a&gt;. Works in Google Sheets (free) and Excel. Includes a PDF companion guide.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@natraj.loganathan/i-built-a-google-sheets-calculator-that-tells-tech-workers-exactly-when-they-can-quit-their-jobsix-0374bb8e56d6" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I Got Laid Off and Built the Spreadsheet I Actually Needed</title>
      <dc:creator>Natraj L</dc:creator>
      <pubDate>Sun, 09 Aug 2026 14:42:55 +0000</pubDate>
      <link>https://dev.to/jartan/i-got-laid-off-and-built-the-spreadsheet-i-actually-needed-2hcg</link>
      <guid>https://dev.to/jartan/i-got-laid-off-and-built-the-spreadsheet-i-actually-needed-2hcg</guid>
      <description>&lt;p&gt;Three weeks ago a friend forwarded me a message: her whole team had been cut in a Friday-afternoon restructuring, effective immediately. Slack access gone within the hour. She had a severance number, a COBRA quote she hadn't opened yet, and a job market everyone keeps describing as "tough right now" — and no idea, actually, how many days she had before the math stopped working.&lt;/p&gt;

&lt;p&gt;That's the part nobody tells you about a layoff: it's not one problem, it's two running at the same time. There's the job search — applications, interviews, networking — and there's the money question underneath it, quietly ticking. Most people end up tracking neither one properly, because giving either your full attention means the other one drifts.&lt;/p&gt;

&lt;p&gt;So I built the thing she actually needed. Not another generic job tracker — there are dozens of those — but a workbook that puts the runway math and the job pipeline in the same place. One tab is a severance, COBRA, and unemployment runway calculator: enter your numbers once and it tells you, in days and months, exactly how long you have — accounting for the fact that COBRA runs well above what you paid as an employee, and that unemployment benefits cap out regardless of your old salary. The other tabs are a straightforward job search system — applications, interview pipeline, networking outreach, a five-minute weekly planning ritual — all rolled up into a dashboard you can check once a day instead of holding the whole thing in your head.&lt;/p&gt;

&lt;p&gt;It's built for the specific reality of the 2026 tech layoff wave — this year alone has seen hundreds of companies, from platform giants to well-funded startups, cut headcount as AI reshapes hiring plans. If you're one of the people affected, a generic "job search tracker" doesn't actually solve your problem. You're not just looking for a job. You're managing a financial runway while you do it, and the two things compound on each other in ways a plain application spreadsheet ignores entirely.&lt;/p&gt;

&lt;p&gt;Who it's for: laid-off software engineers, product managers, designers, data and ops folks who want their runway and their pipeline tracked in the same system, instead of a mental tally that resets every time a bill or a rejection email shows up.&lt;/p&gt;

&lt;p&gt;If that's you, or someone you know, the workbook (Excel and Google Sheets compatible, plus an 11-page companion guide) is here: &lt;a href="https://logi2.gumroad.com/l/riypw" rel="noopener noreferrer"&gt;https://logi2.gumroad.com/l/riypw&lt;/a&gt; — and on Etsy: &lt;a href="https://www.etsy.com/listing/4552685120/tech-layoff-job-search-tracker-severance" rel="noopener noreferrer"&gt;https://www.etsy.com/listing/4552685120/tech-layoff-job-search-tracker-severance&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The thing I keep coming back to after building this: a layoff is a company's headcount decision, not a verdict on your work. The search usually takes longer than feels comfortable, and the money math usually feels tighter than you'd like along the way. Neither of those is a reason to avoid looking at the numbers — it's the reason to build a system that carries some of that weight for you, so it's not all sitting in your head at 2am.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@natraj.loganathan/i-got-laid-off-and-built-the-spreadsheet-i-actually-needed-29be3286df67" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
      <category>jobsearch</category>
    </item>
    <item>
      <title>Etsy's Ad Dashboard Told Me I Was Winning. My Bank Account Disagreed.</title>
      <dc:creator>Natraj L</dc:creator>
      <pubDate>Sun, 02 Aug 2026 14:25:56 +0000</pubDate>
      <link>https://dev.to/jartan/etsys-ad-dashboard-told-me-i-was-winning-my-bank-account-disagreed-207j</link>
      <guid>https://dev.to/jartan/etsys-ad-dashboard-told-me-i-was-winning-my-bank-account-disagreed-207j</guid>
      <description>&lt;p&gt;A few weeks ago I was looking at an Etsy shop's ad report showing a 4x ROAS on one of its best-selling listings, running about $10 a day in Etsy Ads. On paper, that's a strong number. Look at the actual bank deposits for that same stretch, though, and growth didn't line up with the story the dashboard was telling.&lt;/p&gt;

&lt;p&gt;The reason is simple once you see it: Etsy's ad reports show revenue attributed to ads, never profit. They don't know your materials cost, they don't know your shipping cost, and they definitely don't remind you that a totally separate fee, Offsite Ads, at 12-15%, might already be attached to a chunk of your "organic" sales. A listing can look like a big ROAS win and still lose money once the real fee stack comes out of it. Most sellers find this out months into scaling a budget on a number that was never telling them the truth.&lt;/p&gt;

&lt;p&gt;So I built a spreadsheet that does the math Etsy's dashboard won't. It's a Google Sheets / Excel workbook with five connected tabs: a Fee Calculator that shows real per-listing profit after Etsy's listing, transaction, and payment processing fees; an Ads Spend &amp;amp; ROI tracker that turns daily ad numbers into an actual Net Profit After Ads figure instead of just ROAS; an Offsite Ads tracker that applies the correct 12% or 15% rate automatically; a Monthly P&amp;amp;L dashboard with a profit trend chart; and a Break-Even Pricing calculator that tells you the minimum price and ROAS you need before launching a new ad push. It comes with a 10-page playbook walking through Etsy's full 2026 fee stack, category ROAS benchmarks, and three worked real-number scenarios.&lt;/p&gt;

&lt;p&gt;This is built for Etsy sellers doing somewhere between $2,000 and $15,000 a month who are running, or thinking about running, Etsy Ads and want one real number, profit rather than revenue, to make budget decisions from. Doesn't matter if you sell handmade jewelry, printables, or vintage finds; the fee math is the same.&lt;/p&gt;

&lt;p&gt;If this sounds like a gap you've been feeling but hadn't quite named, the tracker is up on &lt;a href="https://logi2.gumroad.com/l/nggcqx" rel="noopener noreferrer"&gt;Gumroad&lt;/a&gt;. It's also listed on &lt;a href="https://www.etsy.com/listing/4548493167/etsy-ads-profit-tracker-spreadsheet-etsy" rel="noopener noreferrer"&gt;Etsy&lt;/a&gt; if you'd rather buy it there.&lt;/p&gt;

&lt;p&gt;The bigger lesson, for me, was that "the dashboard says X" is never the same as "my bank account says X." Any platform's built-in reporting is going to show you the metrics that make the platform look good. Profit tracking is always going to be homework you do yourself.&lt;/p&gt;

&lt;p&gt;— Natraj&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@natraj.loganathan/etsys-ad-dashboard-told-me-i-was-winning-my-bank-account-disagreed-65bd3bd04ced" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ecommerce</category>
      <category>business</category>
      <category>productivity</category>
      <category>etsy</category>
    </item>
    <item>
      <title>Spending $400/Month on AI APIs Without Project-Level Cost Visibility</title>
      <dc:creator>Natraj L</dc:creator>
      <pubDate>Fri, 31 Jul 2026 02:02:01 +0000</pubDate>
      <link>https://dev.to/jartan/spending-400month-on-ai-apis-without-project-level-cost-visibility-172m</link>
      <guid>https://dev.to/jartan/spending-400month-on-ai-apis-without-project-level-cost-visibility-172m</guid>
      <description>&lt;p&gt;Six months ago I started building three small AI products at the same time. One was a Slack bot that summarized threads. One was a document Q&amp;amp;A tool using RAG. One was a report generator that called Claude every night.&lt;/p&gt;

&lt;p&gt;At the end of month two I got an email from my credit card: $412 in API charges. I had no idea which project was responsible.&lt;/p&gt;

&lt;p&gt;I logged into OpenAI, Anthropic, and Google dashboards separately. None of them broke costs down by project. I had to grep my logs for request counts, manually look up pricing, and do arithmetic in a spreadsheet I built from scratch at 11pm.&lt;/p&gt;

&lt;p&gt;That spreadsheet became the AI API Cost &amp;amp; Budget Tracker.&lt;/p&gt;

&lt;p&gt;The core insight: if you are running more than one AI project, you need project-level cost tracking. Your OpenAI bill tells you how much you spent on gpt-4o. It does not tell you that your Slack bot used 60% of it while your RAG pipeline used 30% and your report generator used 10%.&lt;/p&gt;

&lt;p&gt;The tracker has five tabs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dashboard&lt;/strong&gt;: auto-calculates month-to-date spend, projects end-of-month total, flags projects over 80% of budget&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Usage Log&lt;/strong&gt;: record each API call by project, model, and token count — cost columns calculate automatically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing Reference&lt;/strong&gt;: 19 models pre-filled with July 2026 rates across OpenAI, Anthropic, Google, Groq, and Mistral&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project Budget&lt;/strong&gt;: set monthly budget per project, track percentage used in real time&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model Comparison&lt;/strong&gt;: see cost-per-request for every model at once&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After two months I cut my API bill by 34% without degrading any product. My nightly report generator was using gpt-4-turbo for a task gpt-4o-mini handled just as well at one-twentieth the cost.&lt;/p&gt;

&lt;p&gt;The tracker is on &lt;a href="https://logi2.gumroad.com/l/ycabl" rel="noopener noreferrer"&gt;Gumroad&lt;/a&gt; for $17 and &lt;a href="https://www.etsy.com/listing/4545173841" rel="noopener noreferrer"&gt;Etsy&lt;/a&gt; for $14. Includes a 15-page setup guide and a 12-tactic Cost Optimization Playbook.&lt;/p&gt;

&lt;p&gt;If you are calling more than one AI provider across more than one project and you do not have per-project cost visibility, this solves that in about fifteen minutes.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://medium.com/@natraj.loganathan/i-was-spending-400-month-on-ai-apis-without-knowing-which-project-cost-what-f4bc7706c84f" rel="noopener noreferrer"&gt;Medium&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
