<?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: Oli Kahn</title>
    <description>The latest articles on DEV Community by Oli Kahn (@olikahn).</description>
    <link>https://dev.to/olikahn</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3910141%2Fd16726b1-44a7-4d80-ae25-c314985bec59.png</url>
      <title>DEV Community: Oli Kahn</title>
      <link>https://dev.to/olikahn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/olikahn"/>
    <language>en</language>
    <item>
      <title>Stop Building Side Projects. Build Systems. (A Freelancer's Confession)</title>
      <dc:creator>Oli Kahn</dc:creator>
      <pubDate>Mon, 04 May 2026 06:11:46 +0000</pubDate>
      <link>https://dev.to/olikahn/stop-building-side-projects-build-systems-a-freelancers-confession-4473</link>
      <guid>https://dev.to/olikahn/stop-building-side-projects-build-systems-a-freelancers-confession-4473</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This is the follow-up to &lt;a href="https://dev.to/olikahn/what-i-actually-learned-building-a-side-project-in-5-days-with-ai-4kic"&gt;What I Actually Learned Building a Side Project in 5 Days With AI&lt;/a&gt;. That post was about AI. This one is about what happens &lt;em&gt;after&lt;/em&gt; you ship — when you actually have to run the thing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I lost a freelance client last year because I forgot to send a monthly report.&lt;/p&gt;

&lt;p&gt;Not because I didn't do the work. I did the work. I just never wrote it down in a place I'd actually look. The report lived in my head — or, more honestly, in one of forty-seven Notion pages I'd lovingly over-engineered and then abandoned.&lt;/p&gt;

&lt;p&gt;I didn't have a tooling problem. I had a systems problem. It took me six months and one lost retainer to admit the difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  The over-engineered years
&lt;/h2&gt;

&lt;p&gt;For a while I was &lt;em&gt;that&lt;/em&gt; freelancer. The one with the Notion workspace that looks like a SaaS product. Databases inside databases. Linked views. Templates for templates.&lt;/p&gt;

&lt;p&gt;I'd spend Sunday evening building a new system. By Wednesday I'd forget where things lived. By the following Monday I was back in my email looking for the client's last message to remember what we agreed on.&lt;/p&gt;

&lt;p&gt;This is the dirty secret of "productivity tools": the more powerful they get, the more they reward the part of your brain that loves building systems over using them. Notion is a playground for that brain. Airtable is worse. Linear is worse still if you're not actually a team.&lt;/p&gt;

&lt;p&gt;I tried them all. Every single one of them lost to the one tool I kept avoiding because it felt too boring to take seriously.&lt;/p&gt;

&lt;h2&gt;
  
  
  The dumb tool that won
&lt;/h2&gt;

&lt;p&gt;A spreadsheet. Three tabs. No login screen. No sync conflicts. Works on a plane.&lt;/p&gt;

&lt;p&gt;That's it. That's the system.&lt;/p&gt;

&lt;p&gt;Here's the exact structure — you can rebuild it in twenty minutes:&lt;/p&gt;

&lt;h3&gt;
  
  
  Tab 1: Client Tracker
&lt;/h3&gt;

&lt;p&gt;One row per client. Eight columns, never more:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Client&lt;/th&gt;
&lt;th&gt;Domain&lt;/th&gt;
&lt;th&gt;Last report&lt;/th&gt;
&lt;th&gt;Next report due&lt;/th&gt;
&lt;th&gt;MRR&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;th&gt;Next action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That's the whole thing. Conditional formatting on "Next report due" so overdue goes red. Sort by date. Done.&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;"Next action"&lt;/em&gt; column is the one that saved me. One sentence. Always present tense. Never empty. If I can't write a next action, the relationship is dead and I just haven't admitted it yet.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tab 2: Keyword Rank Log
&lt;/h3&gt;

&lt;p&gt;One row per data point. Never aggregate prematurely.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Date&lt;/th&gt;
&lt;th&gt;Client&lt;/th&gt;
&lt;th&gt;Keyword&lt;/th&gt;
&lt;th&gt;Position&lt;/th&gt;
&lt;th&gt;URL&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Dump rankings in once a week. Pivot table at the bottom turns it into a chart. The chart is the deliverable. I stopped using any "SEO dashboard" tool the day I built this.&lt;/p&gt;

&lt;p&gt;Why this beats every SaaS tool I tried: it's mine. The data is mine. The format is mine. When a client asks me a question I can answer it in three clicks, not by logging into someone else's platform that might change its pricing next quarter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tab 3: Backlink Log
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;Target URL&lt;/th&gt;
&lt;th&gt;Anchor&lt;/th&gt;
&lt;th&gt;Date acquired&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Status column has three values: &lt;em&gt;Live&lt;/em&gt;, &lt;em&gt;Lost&lt;/em&gt;, &lt;em&gt;Pending&lt;/em&gt;. That's it. If you need more states than that, you're optimizing the tracker instead of doing the work.&lt;/p&gt;

&lt;p&gt;Every Friday I ctrl-F for "Pending" and send follow-ups. Every month I ctrl-F for "Lost" and decide whether to replace or let go. The whole backlink outreach operation runs out of one tab.&lt;/p&gt;

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

&lt;p&gt;Forty minutes a week, roughly. Not by working faster — by stopping the constant tab-switching and re-remembering.&lt;/p&gt;

&lt;p&gt;But the real win wasn't time. It was &lt;em&gt;trust in my own memory of the business&lt;/em&gt;. I used to be that person who opens a call with "let me check my notes quickly" and then spends ninety seconds failing to find anything. Now I open the sheet and I'm in.&lt;/p&gt;

&lt;p&gt;I also started charging more. Turns out when you can answer client questions in three seconds instead of three minutes, you look like someone who has their act together. You are, in fact, someone who has their act together. Pricing follows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The unsexy truth
&lt;/h2&gt;

&lt;p&gt;Devs love this line, so I'll say it: &lt;em&gt;boring tools age well&lt;/em&gt;. A spreadsheet from 2015 still opens. A Notion workspace from 2015 is probably unrecoverable inside a workspace archive three migrations deep.&lt;/p&gt;

&lt;p&gt;Side projects are fun. Systems are what actually make freelancing work. I spent three years confusing one for the other. I hope you don't.&lt;/p&gt;




&lt;p&gt;You have the whole blueprint above — rebuild it in a fresh sheet, tab by tab, and you're done. If you'd rather skip the formatting work, I also packaged &lt;a href="https://www.etsy.com/listing/4489639742/seo-freelancer-toolkit-client-tracker" rel="noopener noreferrer"&gt;the exact template I use&lt;/a&gt; with the pivot charts and conditional formatting pre-built.&lt;/p&gt;

&lt;p&gt;Next post I'll share the four formulas that turn Tab 1 into an auto-generated monthly client report.&lt;/p&gt;

</description>
      <category>freelance</category>
      <category>productivity</category>
      <category>seo</category>
      <category>sidehustle</category>
    </item>
    <item>
      <title>What I Actually Learned Building a Side Project in 5 Days With AI</title>
      <dc:creator>Oli Kahn</dc:creator>
      <pubDate>Sun, 03 May 2026 11:13:56 +0000</pubDate>
      <link>https://dev.to/olikahn/what-i-actually-learned-building-a-side-project-in-5-days-with-ai-4kic</link>
      <guid>https://dev.to/olikahn/what-i-actually-learned-building-a-side-project-in-5-days-with-ai-4kic</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Originally published on &lt;a href="https://olikahn28.substack.com/p/what-i-actually-learned-building" rel="noopener noreferrer"&gt;Oli Kahn's Substack&lt;/a&gt;. Cross-posting here for the dev.to community.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Most posts about “building with AI” are either hype or demos. This one is neither. It’s a field report.&lt;/p&gt;

&lt;p&gt;Over the past five days, I shipped a small side project end-to-end — research, positioning, copy, visuals, deployment. Not a toy. Something with real traffic goals and an actual audience I care about reaching.&lt;/p&gt;

&lt;p&gt;I didn’t use a single human freelancer. I used AI, my keyboard, and a lot of coffee.&lt;/p&gt;

&lt;p&gt;Here’s what I actually learned — not the parts that sound good on Twitter, the parts that cost me hours and forced me to rewrite my mental model.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. AI is a terrible strategist and a spectacular executor
&lt;/h2&gt;

&lt;p&gt;The thing nobody tells you: if you ask an AI “what niche should I go into?” — you’re going to get mush. Generic. Hedged. Three options that all sound plausible and all lose.&lt;/p&gt;

&lt;p&gt;But if you come with a hypothesis — even a half-formed one — and ask “pressure-test this, what breaks?” — suddenly you get real thinking.&lt;/p&gt;

&lt;p&gt;The pattern I found: &lt;strong&gt;humans bring the bet, AI stress-tests it at 100x speed.&lt;/strong&gt; Reversed, it doesn’t work.&lt;/p&gt;

&lt;p&gt;Day 1 of this project, I wasted three hours asking AI to pick my direction. Day 2, I picked one myself in 20 minutes and asked AI to poke holes. The second approach produced a better plan by lunch.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The bottleneck moves. Fast.
&lt;/h2&gt;

&lt;p&gt;When writing is free, what breaks?&lt;/p&gt;

&lt;p&gt;Distribution.&lt;/p&gt;

&lt;p&gt;When images are free, what breaks?&lt;/p&gt;

&lt;p&gt;Consistency of visual identity across pieces.&lt;/p&gt;

&lt;p&gt;When deployment is free, what breaks?&lt;/p&gt;

&lt;p&gt;Everything you can’t measure.&lt;/p&gt;

&lt;p&gt;Every time AI removed one bottleneck, another one became the new bottleneck overnight. The skill I actually developed this week wasn’t “prompting” — it was recognizing where the pressure had moved to, fast, before I wasted another afternoon on a problem that had already solved itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Tooling matters more than model choice
&lt;/h2&gt;

&lt;p&gt;I’ll be honest: I kept swapping between models. Different models for different tasks. The real wins didn’t come from picking the “best” model — they came from the supporting tools around whatever model I was using.&lt;/p&gt;

&lt;p&gt;A few that genuinely saved me time this week:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://outlierkit.com?ref=G44UO4" rel="noopener noreferrer"&gt;OutlierKit&lt;/a&gt;&lt;/strong&gt; — if any part of your side project touches video content or you’re planning a YouTube arm, this is the competitor-analysis tool I wish I’d known about a year ago. It scans what’s working in your niche and tells you &lt;em&gt;why&lt;/em&gt;, instead of making you guess. AI-powered, real data, and the low-competition keyword finder alone is worth the signup. Free trial, no card.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.livechat.com/?a=LW4eNxpDg&amp;amp;utm_campaign=pp_livechat-default&amp;amp;utm_source=PP" rel="noopener noreferrer"&gt;LiveChat&lt;/a&gt;&lt;/strong&gt; — the moment you have an audience, you have questions. Putting LiveChat on a landing page took me under 10 minutes. It’s old-school boring-reliable software, which is exactly what you want when an AI-built product meets a real human asking “does this actually work?”&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.helpdesk.com/?a=LW4eNxpDg&amp;amp;utm_campaign=pp_helpdesk-default&amp;amp;utm_source=PP" rel="noopener noreferrer"&gt;HelpDesk&lt;/a&gt;&lt;/strong&gt; — once the questions pile up, email alone breaks. HelpDesk turns the mess into actual tickets. If you’re building anything that will eventually get support load, wire this in before you need it, not after.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.text.com/?a=LW4eNxpDg&amp;amp;utm_source=PP" rel="noopener noreferrer"&gt;Text&lt;/a&gt;&lt;/strong&gt; — the broader platform the LiveChat family sits on. Worth knowing about if you want business messaging that isn’t another chatbot cosplay.&lt;/p&gt;

&lt;p&gt;None of these are AI-core. All of them are what happens &lt;em&gt;after&lt;/em&gt; you build the AI-core thing and suddenly have a real business attached to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The thing AI will not do for you
&lt;/h2&gt;

&lt;p&gt;Ship.&lt;/p&gt;

&lt;p&gt;AI will write the copy. AI will design the pin. AI will generate the code. AI will outline the strategy.&lt;/p&gt;

&lt;p&gt;AI will not click the publish button.&lt;/p&gt;

&lt;p&gt;I had three moments this week where everything was done — and I sat with my finger on the trigger for 30 minutes, because publishing is still an act of taste, and taste is still a thing you have to own.&lt;/p&gt;

&lt;p&gt;If you’re building with AI and nothing is shipping, the problem is not your stack. The problem is you haven’t accepted that the &lt;em&gt;taste layer&lt;/em&gt; is still yours. AI can make 100 variants. You still have to say “this one.”&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Long-term traffic is the only traffic that matters
&lt;/h2&gt;

&lt;p&gt;Here’s the shift I made this week that I think is the important one, strategically:&lt;/p&gt;

&lt;p&gt;I stopped chasing posts that might get 10,000 views in 48 hours and die.&lt;/p&gt;

&lt;p&gt;I started making assets that might get 200 views a day — forever.&lt;/p&gt;

&lt;p&gt;Evergreen content. Search-indexed pages. Platforms where a single piece compounds for years (Pinterest, YouTube, blog SEO). Not places where content has a half-life of 18 hours (Twitter, Reddit front page).&lt;/p&gt;

&lt;p&gt;AI makes evergreen content economically viable in a way it wasn’t before. You can produce the quantity those platforms reward, at the quality they demand, without burning out.&lt;/p&gt;

&lt;p&gt;The people who will win the next two years of indie-building aren’t the ones with the best AI prompts. They’re the ones who understand that &lt;strong&gt;AI-produced evergreen &amp;gt; human-produced viral&lt;/strong&gt;, almost every time, over a 12-month horizon.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I’d tell you if you’re about to try this
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Pick a bet. Don’t ask AI to pick for you.&lt;/strong&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Assume the bottleneck will move every 24 hours.&lt;/strong&gt; Budget your attention for that.
&lt;/h2&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Invest in the boring tools early&lt;/strong&gt; — customer communication, ticketing, analytics. AI-built products still need grown-up plumbing.
&lt;/h2&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Pick platforms where content compounds.&lt;/strong&gt; Evergreen beats viral.
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Own the taste layer.&lt;/strong&gt; Nobody’s coming to ship for you.&lt;/p&gt;

&lt;p&gt;Five days is not enough to know if this project is going to work. But it’s enough to know the shape of what’s possible now that wasn’t possible six months ago.&lt;/p&gt;

&lt;p&gt;And the shape is: one person, serious intent, AI leverage, and the discipline to actually ship.&lt;/p&gt;

&lt;p&gt;That’s the whole game.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you’re building something and any of this resonated, I’d love to hear what you’re working on. And if you try any of the tools above — the affiliate links help support this publication, but more importantly, they genuinely helped me this week. That’s the only reason they’re in this post.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;P.S. — If you're curious about the broader prompt library I maintain (separate from this specific project — these are my general vibe-coding prompts for shipping fast with AI), it's on Gumroad: &lt;a href="https://olikahn.gumroad.com/l/dsjaxd" rel="noopener noreferrer"&gt;https://olikahn.gumroad.com/l/dsjaxd&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Full transparency: I didn't use all 75 for this particular 5-day build. They're the same style of prompts — the ones I've refined over months of actually shipping things. If the workflow in this post resonated, they'll feel familiar.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>ai</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
