<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Mohamad H. — Blog</title>
    <link>https://mohamadh.xyz/blog</link>
    <description>Notes on AI, product &amp; engineering — ideas, lessons, and build notes from designing and shipping AI-powered products.</description>
    <language>en-us</language>
    <atom:link href="https://mohamadh.xyz/rss.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>How to Reduce OpenAI API Cost</title>
      <link>https://mohamadh.xyz/blog/how-to-reduce-openai-api-cost</link>
      <guid isPermaLink="true">https://mohamadh.xyz/blog/how-to-reduce-openai-api-cost</guid>
      <description>Tool calls, bloated system prompts, and defaulting to flagship models quietly multiply your AI costs. Here&apos;s the routing pattern that reliably cuts spend by 70-90% without hurting output quality.</description>
      <content:encoded><![CDATA[<p>If you&#x27;ve shipped an AI agent or chatbot and watched the API bill come in at
5-10x your estimate, you&#x27;re not doing anything unusually wrong. It&#x27;s one of
the most common surprises in production LLM work, and it almost always
comes down to the same handful of causes , none of which show up until
you&#x27;re already live.</p>
<p>This isn&#x27;t a &quot;switch to a cheaper model&quot; post. That trade usually just
swaps cost for reliability problems. The actual fix is architectural: stop
sending every request the same bloated context, and let the request itself
determine what it needs.</p>
<h2>Why the bill is higher than the math suggested</h2>
<p>Three things quietly multiply cost beyond a simple tokens-times-price
estimate.</p>
<h3>1. Tool calls are billed requests, not free side effects</h3>
<p>If your agent uses function calling, a single user message rarely maps to
a single API call. &quot;Move my meeting to tomorrow&quot; might trigger:</p>
<ol>
<li>An initial call to interpret the request</li>
<li>A tool call to look up the calendar event</li>
<li>A tool call to update it</li>
<li>A confirmation step</li>
<li>A final response back to the user</li>
</ol>
<p>That&#x27;s four or five billed calls behind what looks, from the outside, like
one interaction. If you budgeted per user message instead of per
underlying API call, this gap alone explains most of a 5-10x overshoot.</p>
<div style="border-left:4px solid #d97706;background:#d9770610;padding:12px 16px;margin:20px 0"><strong>Check this first</strong><div><p>Before optimizing anything else, log cost per API call, not per user
message. Tool-calling chains are the single most common source of
underestimated spend, and you can&#x27;t see the multiplier without
call-level logging.</p></div></div>
<h3>2. Every request defaults to the flagship model</h3>
<p>It&#x27;s tempting to route everything through the most capable model available
so you don&#x27;t have to debug flaky outputs. But that treats &quot;what&#x27;s on my
calendar today&quot; and &quot;analyze this 40-page contract&quot; as if they need the
same reasoning power. They don&#x27;t, and paying flagship pricing for the
former is pure waste.</p>
<h3>3. The system prompt and tool list are sent in full, every time</h3>
<p>Every call carries your entire system prompt and entire tool schema as
input tokens , even when the request only touches a fraction of it. A
15-tool, multi-thousand-token system prompt on every single call adds up
fast, and ironically it also makes cheaper models <em>less</em> reliable, since
they now have to sift through instructions and tools that don&#x27;t apply.
That pushes teams toward the expensive model, which is the trap in the
first place.</p>
<h2>The pattern: classify first, assemble second, route third</h2>
<p>The fix that shows up repeatedly in production agents is a lightweight
routing layer that runs before the &quot;real&quot; call, deciding exactly what
context and which model a given request actually needs.</p>
<h3>Step 1 : Classify intent with a cheap, fast model</h3>
<p>Run the incoming request through an inexpensive model first, with one job:
figure out what kind of request this is, roughly how complex it looks, and
which tool categories it&#x27;ll likely need.</p>
<pre><code class="language-ts">async function classifyIntent(message: string) {
  const result = await callModel({
    model: &quot;gemini-2.0-flash&quot;, // fast, cheap, this call runs on every request
    system: INTENT_CLASSIFIER_PROMPT,
    input: message,
  });

  return result as {
    intentType: &quot;lookup&quot; | &quot;scheduling&quot; | &quot;analysis&quot; | &quot;deletion&quot;;
    complexity: &quot;simple&quot; | &quot;moderate&quot; | &quot;complex&quot;;
    toolCategories: string[];
  };
}
</code></pre>
<p>This call costs a fraction of a cent and removes the guesswork from
everything downstream.</p>
<h3>Step 2 : Assemble the system prompt from modules, not one giant block</h3>
<p>Instead of one static prompt containing every rule and edge case, break
instructions into small modules ( scheduling, deletion, timezone handling,
confirmation rules ) and assemble only what the classified intent needs.</p>
<pre><code class="language-ts">const PROMPT_MODULES = {
  core: CORE_INSTRUCTIONS,       // always included
  scheduling: SCHEDULING_RULES,
  deletion: DELETION_SAFEGUARDS,
  timezone: TIMEZONE_HANDLING,
} as const;

function buildSystemPrompt(intent: ClassifiedIntent) {
  const modules = [PROMPT_MODULES.core];

  if (intent.intentType === &quot;scheduling&quot;) modules.push(PROMPT_MODULES.scheduling);
  if (intent.intentType === &quot;deletion&quot;) modules.push(PROMPT_MODULES.deletion);
  if (intent.requiresTimezone) modules.push(PROMPT_MODULES.timezone);

  return modules.join(&quot;\n\n&quot;);
}
</code></pre>
<p>Teams that adopt this typically see system prompt size drop from something
like 20,000+ tokens to 2,000-5,000 tokens per call ( applied to <em>every</em>
request, not a one-time saving).</p>
<h3>Step 3 : Send only the relevant tool definitions</h3>
<p>Same logic applies to function/tool schemas. If your agent has 15-20 tools
defined, a given request usually needs 2-4 of them. Group tools by
category and attach only what the classified intent calls for.</p>
<pre><code class="language-ts">const TOOL_GROUPS = {
  search: [lookupEventTool, searchContactsTool],
  scheduling: [createEventTool, updateEventTool, cancelEventTool],
  dataModification: [deleteRecordTool, archiveRecordTool],
};

function selectTools(intent: ClassifiedIntent) {
  return intent.toolCategories.flatMap((category) =&gt; TOOL_GROUPS[category] ?? []);
}
</code></pre>
<p>This alone commonly cuts tool-schema overhead by 50-70%.</p>
<h3>Step 4 : Route to a model that matches the actual complexity</h3>
<table><thead><tr><th>Request type</th><th>Model tier</th><th>Why</th></tr></thead><tbody><tr><td>Simple lookups, formatting, short confirmations</td><td>Small/fast model</td><td>Low reasoning demand, high volume</td></tr><tr><td>Multi-step reasoning, ambiguous requests</td><td>Mid-tier model</td><td>Balance of cost and reliability</td></tr><tr><td>High-stakes, complex analysis, edge cases</td><td>Premium model</td><td>Reserve for when it actually matters</td></tr></tbody></table>
<p>The insight that&#x27;s easy to miss: smaller models don&#x27;t fail because they&#x27;re
incapable , they fail because they&#x27;re handed too much irrelevant context
and too many tools to reliably pick from. Give a small model exactly what
it needs, and its reliability on that narrower task improves
significantly, often closing most of the gap with larger models.</p>
<h2>Why three cheap calls can beat one expensive call</h2>
<p>It sounds counterintuitive that classify → assemble → execute (two or
three model calls) would cost less than one call to a single expensive
model. In practice, the combined cost of a few small, targeted calls is
usually a fraction of one large call carrying a bloated prompt and full
tool list. You&#x27;re paying for precision instead of paying for redundancy ,
and because each smaller call gets a narrower, well-scoped job, latency
often improves too, not just cost.</p>
<h2>Other levers worth stacking on top</h2>
<ul>
<li><strong>Cache aggressively.</strong> If your system prompt prefix repeats across
calls, prompt caching avoids paying full price for input tokens you&#x27;ve
already sent.</li>
<li><strong>Set hard output token limits.</strong> Uncapped output length is a quiet,
constant cost leak.</li>
<li><strong>Use retrieval instead of stuffing context.</strong> If you&#x27;re pasting entire
documents or full conversation history into every prompt &quot;just in
case,&quot; a retrieval step that pulls only relevant snippets usually cuts
input tokens dramatically with no quality loss.</li>
<li><strong>Batch non-urgent work.</strong> Summarization jobs, nightly reports, and bulk
classification don&#x27;t need real-time responses , batch APIs process
these asynchronously at a meaningful discount.</li>
</ul>
<h2>Don&#x27;t skip evaluation</h2>
<p>Every optimization here reduces the context a model sees, which naturally
raises the question: does accuracy hold up? The only reliable way to know
is an automated evaluation suite , a set of representative test scenarios
you re-run every time a prompt, model, or routing rule changes.</p>
<div style="border-left:4px solid #0284c7;background:#0284c710;padding:12px 16px;margin:20px 0"><strong>This is the step people skip</strong><div><p>Teams that build an eval suite before optimizing can cut cost
aggressively with confidence. Teams that skip it usually find out about
regressions from a support ticket instead of a test run.</p></div></div>
<h2>The takeaway</h2>
<p>Cutting LLM API costs isn&#x27;t primarily about swapping to a cheaper model ,
that trades cost for reliability problems more often than it saves money
outright. The durable fix is architectural: classify before you execute,
assemble only the context and tools a given request actually needs, and
reserve expensive models for requests that genuinely require them. Done
well, this pattern routinely holds ( or even improves ) output quality,
because every model in the pipeline is finally being asked to do a job
it&#x27;s actually suited for.</p>
<p>If you&#x27;re mid-build and want a second pair of eyes on where your own
architecture is leaking cost, <a href="/#contact">get in touch</a> , this is exactly
the kind of thing worth catching before it shows up on an invoice.</p>]]></content:encoded>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <category>AI Engineering</category>
      <category>MVP Strategy</category>
    </item>
    <item>
      <title>Become a Better Developer by Owning Your Mistakes</title>
      <link>https://mohamadh.xyz/blog/owning-your-mistakes-builds-trust</link>
      <guid isPermaLink="true">https://mohamadh.xyz/blog/owning-your-mistakes-builds-trust</guid>
      <description>How admitting a production bug — instead of hiding it — became the moment a client trusted me more, not less.</description>
      <content:encoded><![CDATA[<p>I was working night support, learning backend on the job. The role required both (frontend and backend) and I needed to move fast.</p>
<p>One night, I was fixing a feature. Tested it. Looked good. Pushed it to production.</p>
<p>Then I broke something else entirely. A feature users relied on stopped working. For hours. That&#x27;s the mistake everyone fears. The one that makes you question if you belong in this industry.</p>
<p>But here&#x27;s the counterintuitive part: that mistake made my team trust me more.</p>
<h2>What Actually Happened</h2>
<p>I was supporting a CMS for Canadian car dealerships. Technical team in Iran, clients in Canada. Someone had to work nights to provide real-time support during their business hours.</p>
<p>I&#x27;d been doing frontend for a couple months when they moved me into full-stack night support. I needed to learn backend fast.</p>
<p>One night, a client reported an issue. I dove into the code, found what looked like the problem, made the fix, tested the specific feature. It worked. Pushed it to production.</p>
<p>Within an hour, messages started coming in. A different feature was broken. Users couldn&#x27;t access a critical part of the system. I&#x27;d fixed one thing and broken another. I only tested the feature I was fixing, not the features that depended on the code I changed.</p>
<p>The bug stayed live for hours while I frantically debugged, found the issue, and rolled out the fix.</p>
<h2>The Moment of Truth</h2>
<p>When something like this happens, you have two choices.</p>
<p><strong>Option 1:</strong> Minimize it. &quot;It was only down for a few hours.&quot; &quot;The codebase didn&#x27;t have proper documentation.&quot; &quot;I was under pressure to ship fast.&quot;</p>
<p>All true. None of it matters.</p>
<p><strong>Option 2:</strong> Own it completely. &quot;I pushed a bug to production. I didn&#x27;t test thoroughly enough. This was my mistake, and I&#x27;m making sure it never happens again.&quot;</p>
<p>I chose option 2.</p>
<p>I messaged the team immediately. Explained what happened, what I&#x27;d done wrong, and what I was doing to fix it. No excuses. No deflection. Just the facts and the plan.</p>
<p>Then I made changes to my process. Started testing not just the feature I was working on, but adjacent features that touched the same code. Added more comprehensive checks before pushing to production. Documented the areas of the codebase I learned so the next person wouldn&#x27;t make the same mistake.</p>
<h2>What Changed After</h2>
<p>My team didn&#x27;t lose trust. They gained it.</p>
<p>Because they saw I wasn&#x27;t going to hide problems or make excuses. They knew that if I made a mistake, they&#x27;d hear about it immediately from me, not from angry clients hours later.</p>
<p>That transparency made me more valuable. When you own your mistakes, people know they can rely on you in the moments that matter.</p>
<p>Over the next year, I handled that position better than any developer they&#x27;d had before. Not because I stopped making mistakes completely, I didn&#x27;t. But because when I did make them, I surfaced them fast, fixed them fast, and learned from them.</p>
<p>By the time I left that role, they offered me 4x my starting salary. Not despite the mistakes I&#x27;d made, but partly because of how I&#x27;d handled them.</p>
<h2>Why Owning Mistakes Builds Trust</h2>
<p>When you screw up, your instinct is to hide it. Minimize it. Blame the codebase, the timeline, the lack of documentation.</p>
<p>But here&#x27;s what people actually need to hear: &quot;I made a mistake. Here&#x27;s what I&#x27;m doing to fix it. Here&#x27;s how I&#x27;ll make sure it doesn&#x27;t happen again.&quot;</p>
<p>Owning your mistake shows you&#x27;re not going to gaslight them when things go wrong. You&#x27;re not going to make excuses or disappear when problems arise. You&#x27;re going to face it, fix it, and learn from it.</p>
<p>Most people deflect. So when you don&#x27;t, you stand out.</p>
<h2>How I Handle Mistakes Now</h2>
<p>I still make mistakes. Everyone does. But my process changed after that night.</p>
<p><strong>First, I test more comprehensively.</strong> Not just the feature I&#x27;m working on, but the features that connect to it. If I change authentication logic, I test every flow that touches authentication.</p>
<p><strong>Second, I communicate immediately when something breaks.</strong> Not after I&#x27;ve tried to fix it quietly. Immediately. &quot;This is broken, I&#x27;m investigating, here&#x27;s what I know so far.&quot;</p>
<p><strong>Third, I document what went wrong and why.</strong> Not just for me, but for the team. So the next person doesn&#x27;t make the same mistake.</p>
<p><strong>Fourth, I build in safety nets.</strong> Staging environments that mirror production. Automated tests for critical flows. Code reviews before merging. Not because I don&#x27;t trust myself, but because I know mistakes happen and systems should catch them.</p>
<p>These practices don&#x27;t prevent all mistakes. But they reduce them, catch them earlier, and make the impact smaller when they do happen.</p>
<h2>Final Take</h2>
<p>The bug I pushed to production could have ended my career in that role. Instead, it strengthened it. Not because the bug didn&#x27;t matter. Because I owned it completely, fixed it fast, and made sure it wouldn&#x27;t happen again.</p>
<p>Mistakes happen. Own them. Learn from them. Build systems to prevent them. Move forward. Your reputation isn&#x27;t built on being perfect. It&#x27;s built on being honest, accountable, and reliable when things go wrong.</p>
<p>That&#x27;s what clients remember. That&#x27;s what teams value. That&#x27;s what turns a junior developer into someone people trust with their most important projects.</p>]]></content:encoded>
      <pubDate>Mon, 01 Dec 2025 00:00:00 GMT</pubDate>
      <category>Career Lessons</category>
    </item>
    <item>
      <title>A 7-Step Framework for Writing SaaS Landing Page Copy That Converts</title>
      <link>https://mohamadh.xyz/blog/7-step-framework-for-high-converting-saas-landing-page-copy</link>
      <guid isPermaLink="true">https://mohamadh.xyz/blog/7-step-framework-for-high-converting-saas-landing-page-copy</guid>
      <description>Write clear, high-converting SaaS landing page copy using the StoryBrand framework: fix vague messaging and guide visitors to a decision.</description>
      <content:encoded><![CDATA[<link rel="preload" as="image" href="https://ik.imagekit.io/mhaqnegahdar/blog/images/blog-image-1763887826681_uiqHCeJ7g"/><p>Most SaaS landing pages read like riddles. The founder spent weeks tuning the design while talking about how many features they have, but the user still can&#x27;t answer the simplest question: &quot;What does this thing do?&quot;</p>
<p>Your ICPs already have so much in their lives going on they no longer have time nor the energy to figure out how your cool features could save their lives.</p>
<p>I used to make this mistake myself. I&#x27;d written my landing page talking about the skills I had as a developer, how fast and how innovative I was, how much I knew and things I could build. People were impressed by the design, but it never made it click for them how I could actually help them! So they just bounced.</p>
<p>Look at my landing today. Now even a 12-year-old can say what I do and who I help in under 5 seconds.</p>
<p>That clarity didn’t happen by accident, it happened when I came across the StoryBrand Framework by Donald Miller. This is the main framework that I now use to guide my clients into writing a high converting copy for their SaaS landing before we create it. It&#x27;s the best mental model I’ve found for writing landing pages that convert visitors into users.</p>
<p>Before we talk about how this framework works, it’d help to learn about the overall concept:</p>
<h2>The Concept Behind StoryBrand Framework</h2>
<p>Donald says in order to actually capture your audiences attention you need a story. A hero story where your prospect is the hero who’s trying to save the day. And you’re their confident guide who’s trying to help.</p>
<p>In other words, your copy should make the user feel understood before you ever talk about your product. They need to see themselves in the problem you describe, recognize the struggle, and then realize you’ve built the path out.</p>
<p>That’s the real job of your landing page, not to confuse visitors with clever words, but to make them instantly feel, <em>“This is exactly what I’ve been looking for.”</em></p>
<p>The goal isn&#x27;t to sound smart. It&#x27;s to communicate the value you bring in the most efficient way.</p>
<hr/>
<h3>1. Stop Being Vague About What Your Hero Wants</h3>
<p>You’re not selling to everyone, you’re selling to a specific group of people. And they have real pain points. Talk to those directly.</p>
<p><strong>Not:</strong></p>
<div style="border-left:4px solid #e11d48;background:#e11d4810;padding:12px 16px;margin:20px 0"><strong>This is Title</strong><div>“Accelerate the future of productivity.”</div></div>
<p><em>Sounds big, means nothing.</em></p>
<p><strong>Say instead:</strong></p>
<div style="border-left:4px solid #059669;background:#05966910;padding:12px 16px;margin:20px 0"><strong>This is Title</strong><div>“Automate client onboarding for your agency,  without writing a single line of code.”</div></div>
<p>Talks to agency owners who are struggling with client onboarding and don&#x27;t want to invest in custom onboarding systems now.</p>
<p><strong>Not:</strong></p>
<div style="border-left:4px solid #e11d48;background:#e11d4810;padding:12px 16px;margin:20px 0"><strong>This is Title</strong><div>“Your growth journey starts here.”</div></div>
<p>Every SaaS says that. Nobody knows what it does.</p>
<p><strong>Say instead:</strong></p>
<div style="border-left:4px solid #059669;background:#05966910;padding:12px 16px;margin:20px 0"><strong>This is Title</strong><div>“Turn your newsletter into a paid membership site in 10 minutes.”</div></div>
<p>Now it&#x27;s obvious that you&#x27;re talking to newsletter owners who are looking for a visual platform to publish their newsletters their.</p>
<p>Most of your competitors fail before the fold. They try to sound impressive with their headline instead of being clear. Be clear, and see how you can dominate.</p>
<p>Ask yourself: Can a stranger read your landing headline and instantly answer &quot;What problem does this solve for me?&quot; If not, rewrite it.</p>
<hr/>
<h3>2. Own one main problem</h3>
<p>Your product can be known for just one thing</p>
<p>Your product might target multiple pains, but you can be known for just one thing. Identify your best bet and repeat it over and over everywhere till it sticks.</p>
<div style="border-left:4px solid #e11d48;background:#e11d4810;padding:12px 16px;margin:20px 0"><strong>This is Title</strong><div>&quot;We offer analytics, team collaboration, project management, time tracking, invoicing, and integrations.&quot;</div></div>
<p>The user&#x27;s brain shuts down. Too many options create decision paralysis.</p>
<div style="border-left:4px solid #059669;background:#05966910;padding:12px 16px;margin:20px 0"><strong>This is Title</strong><div>&quot;The simplest way to track what matters in your business.&quot;</div></div>
<p>That&#x27;s your umbrella. Everything else you offer supports that one clear promise.</p>
<p>Come up with a few soundbites and repeat them. Own one position. When someone thinks of [your category], they should think of your one thing.</p>
<p>Slack didn&#x27;t say &quot;We offer messaging, file sharing, integrations, video calls, and search.&quot; They said &quot;Where work happens.&quot; One clear umbrella that covers everything they do.</p>
<p>Figure out your umbrella and put it everywhere: hero section, subheadings, testimonials, CTAs. Make it impossible to miss.</p>
<hr/>
<h3>3. You Need to Own a Problem Your Prospect Has</h3>
<p>People don&#x27;t buy features. They buy relief from frustration.</p>
<p>If your landing page talks more about your product than the problem it solves, you&#x27;ve already lost.</p>
<p>Break the problem down into three layers:</p>
<p><strong>External:</strong> &quot;I can&#x27;t track my subscribers.&quot;</p>
<p><strong>Internal:</strong> &quot;I feel blind and frustrated.&quot;</p>
<p><strong>Philosophical:</strong> &quot;I shouldn&#x27;t need to be a data analyst to run my business.&quot;</p>
<p>When your copy hits all three levels, it resonates deeper.</p>
<p>Figure out the core problem your users have and talk about it everywhere. You need at least 10 places on your landing page addressing that problem and showing how you solve it.</p>
<p><strong>Not</strong>
<div style="border-left:4px solid #e11d48;background:#e11d4810;padding:12px 16px;margin:20px 0"><strong>This is Title</strong><div>&quot;Our platform has advanced reporting capabilities.&quot;</div></div></p>
<p><strong>Say</strong>
<div style="border-left:4px solid #059669;background:#05966910;padding:12px 16px;margin:20px 0"><strong>This is Title</strong><div>&quot;Stop wasting hours building reports in spreadsheets. See everything that matters in one place.&quot;</div></div></p>
<p>The first version talks about you. The second talks about their pain and your solution. That&#x27;s what converts.</p>
<hr/>
<h3>4. Be Their Guide</h3>
<p>In StoryBrand, every hero needs a guide. In SaaS, your product is that guide.</p>
<p>Position yourself like this: &quot;I feel your pain, and I know how to get you out. I&#x27;ve done this for hundreds of people, and I know what I&#x27;m talking about.&quot;</p>
<p>Show empathy (you understand the struggle), then authority (you&#x27;ve solved it before).</p>
<p><strong>Empathy:</strong> &quot;We know how frustrating it is to lose leads because your forms break or your follow-ups get missed.&quot;</p>
<p><strong>Authority:</strong> &quot;We&#x27;ve helped 500+ sales teams close deals faster with automated workflows that actually work.&quot;</p>
<p>That combination (understanding plus credibility) builds trust. Users need to know you get their problem and you&#x27;re qualified to fix it.</p>
<p>Don&#x27;t position yourself as the hero who saved the day. Position yourself as the experienced guide who knows the path forward.</p>
<hr/>
<h3>5. Give Them a Plan</h3>
<p>Users want to buy, but they&#x27;re still confused and unsure how things work.</p>
<p>Give them a three-step plan from their problem to your solution. Keep it simple. Complexity kills conversion.</p>
<p><strong>Step 1:</strong> &quot;Book a free session so we understand what you&#x27;re dealing with.&quot;</p>
<p><strong>Step 2:</strong> &quot;We&#x27;ll give you a custom report on what we think you should do.&quot;</p>
<p><strong>Step 3:</strong> &quot;We&#x27;ll hold your hand and help you execute.&quot;</p>
<p>That&#x27;s all they need to start imagining themselves succeeding.</p>
<p>Make the plan visible on your landing page. Show them the journey from where they are (frustrated, stuck) to where they&#x27;ll be (clear, confident, successful).</p>
<p><strong>Another example:</strong></p>
<p><strong>Step 1:</strong> &quot;Sign up free, no credit card required.&quot;</p>
<p><strong>Step 2:</strong> &quot;Connect your data in 2 minutes.&quot;</p>
<p><strong>Step 3:</strong> &quot;See insights instantly.&quot;</p>
<p>The plan removes uncertainty. It tells users exactly what happens next, which makes them feel safe enough to take action.</p>
<hr/>
<h3>6. Have a Strong CTA</h3>
<p>Every good story needs a moment when the guide says &quot;Let&#x27;s go.&quot; Your call-to-action is that moment.</p>
<p>Tell them it&#x27;s time to do business. Challenge them to take action now.</p>
<p><strong>Bad CTAs:</strong> &quot;Learn More,&quot; &quot;See Features,&quot; &quot;Explore Options.&quot;</p>
<p>These are passive. They don&#x27;t push users forward.</p>
<p><strong>Good CTAs:</strong> &quot;Start My Trial,&quot; &quot;Book a Call Now,&quot; &quot;Get My Free Audit,&quot; &quot;Launch My App.&quot;</p>
<p>Action words beat passive words. Make the CTA about what the user gets, not what they&#x27;re clicking.</p>
<p><strong>Even better:</strong> &quot;If you&#x27;re struggling with [specific problem], I think you should try our product. Would you like to start now?&quot;</p>
<p>Direct. Clear. No games.</p>
<p>Add a transitional CTA for users who aren&#x27;t ready yet: &quot;Not sure? Watch the 2-minute demo.&quot; This keeps people in your funnel without pressure.</p>
<p>The primary CTA should be bold, visible, repeated multiple times on the page. Make it impossible to miss what you want them to do next.</p>
<hr/>
<h3>7. Show Success and Failure</h3>
<p>People act to avoid loss more than to gain reward. Show them both outcomes.</p>
<p><strong>Paint the failure:</strong> &quot;Keep wasting hours on manual reporting. Keep losing leads to broken systems. Keep guessing what&#x27;s actually working in your business.&quot;</p>
<p>Don&#x27;t scare them. Just make inaction visible. Remind them what happens if they don&#x27;t solve this problem.</p>
<p><strong>Then paint success:</strong> &quot;You&#x27;ll finally have clarity, time, and confidence in your data. No more guessing. No more frustration. Just clear answers when you need them.&quot;</p>
<p>End the story with transformation, the life after using your SaaS.</p>
<p>Show it visually through UI screenshots or customer results. Make them feel the payoff.</p>
<p><strong>Success stories work:</strong> &quot;Sarah saved 10 hours per week and closed 30% more deals in her first month.&quot;</p>
<p>That&#x27;s real. That&#x27;s believable. That&#x27;s what users want for themselves.</p>
<p>Give them a vision of their future success. Then show them what happens if they ignore the problem. Both motivate action.</p>
<p><img src="https://ik.imagekit.io/mhaqnegahdar/blog/images/blog-image-1763887826681_uiqHCeJ7g" alt="" style="max-width:100%"/></p>
<hr/>
<h2>Final Take</h2>
<p>Clear copy doesn&#x27;t just explain your product. It guides users toward their own success</p>
<p>If users can answer these three questions within 10 seconds of landing on your page, your copy is doing its job:</p>
<ul>
<li><strong>What does this do?</strong></li>
<li><strong>Is it for me?</strong></li>
<li><strong>What should I do next?</strong></li>
</ul>
<p>If they can&#x27;t answer all three, rewrite your copy based on StoryBrand framework.</p>
<p>Start with the problem your users have, not the features you built. Position yourself as the guide who understands their pain and knows how to solve it. Give them a clear three-step plan. Make your CTA direct and action-focused. Show them what success looks like and what failure costs.</p>
<p>My clients have seen massive results since when we adapted this framework to their landing pages. It works because it&#x27;s built on how humans actually make decisions, through story, clarity, and trust.</p>
<p>Say the clear part, not the clever part. Your conversion rate will thank you.</p>]]></content:encoded>
      <pubDate>Mon, 24 Nov 2025 00:00:00 GMT</pubDate>
      <category>Startup Communication</category>
    </item>
    <item>
      <title>A Founder&apos;s Framework for Choosing the Right SaaS Tech Stack</title>
      <link>https://mohamadh.xyz/blog/decision-framework-to-choose-your-saas-tech-stack</link>
      <guid isPermaLink="true">https://mohamadh.xyz/blog/decision-framework-to-choose-your-saas-tech-stack</guid>
      <description>A practical, five-step framework for picking a tech stack based on timeline, budget, and team skill — not which framework is trending.</description>
      <content:encoded><![CDATA[<link rel="preload" as="image" href="https://ik.imagekit.io/mhaqnegahdar/blog/images/blog-image-1763365381795_UoN8_di-s"/><link rel="preload" as="image" href="https://ik.imagekit.io/mhaqnegahdar/blog/images/blog-image-1763367955504_htrovOolQ"/><p>Have you ever heard words like React, Laravel, Supabase, and Firebase thrown around in forums and podcasts, but didn&#x27;t know what actually mattered for your specific situation?</p>
<p>That was the exact situation I helped a non-technical founder with. They had $50K in runway, no technical co-founder yet, and needed to validate their idea with real users within three months. Picking the wrong stack would either burn through their budget with unnecessary complexity or box them into a corner when they needed to scale.</p>
<p>This happens all the time. Founders get paralyzed by technical choices because developers talk about frameworks like they&#x27;re religions. The truth is, the best stack isn&#x27;t the newest or the most powerful. It&#x27;s the one that fits your specific situation right now.</p>
<p>This is the same framework I use when helping clients choose their stack. It works for any SaaS idea because it&#x27;s based on business logic, not technical preferences.</p>
<h2>Step 1: Clarify the Product Scope (Before the Tech)</h2>
<p>Before we talk about any technology, we need to answer one question: what&#x27;s the real goal of the MVP?</p>
<p>Are you validating an idea to see if anyone cares? Or are you building something scalable from day one because you already have traction? The answer completely changes what you should build.</p>
<p><strong>Timeline defines complexity.</strong> If you&#x27;re validating an idea, you need simple, fast, and flexible. Get something in front of users in weeks, not months. Learn what works, then rebuild it properly if needed.</p>
<p>If you&#x27;re scaling existing traction, you already know the problem is real. Now you need maintainability and performance. You can afford to spend more time upfront because you&#x27;re not guessing anymore.</p>
<p>Most founders mess this up by building for scale before they have users. They spend six months on architecture for a product nobody wants yet. Don&#x27;t do that.</p>
<h2>Step 2: Identify Core Requirements</h2>
<p>The type of product you&#x27;re building matters. A dashboard? A marketplace? A content platform? Each type has different technical needs.</p>
<p>What features matter most? Authentication? Payments? Real-time updates? Analytics? File uploads? Each feature narrows down your stack choices.</p>
<p>Here&#x27;s how features map to technology decisions:</p>
<p>If you need <strong>real-time features</strong> like chat, notifications, or collaborative editing, you want Supabase or Firebase. They handle real-time data synchronization out of the box without you building complex WebSocket infrastructure.</p>
<p>If it&#x27;s <strong>content-heavy</strong> with lots of blog posts, documentation, or marketing pages, use Next.js with a headless CMS like Contentful or Sanity. You get great SEO, fast page loads, and easy content management.</p>
<p>If it&#x27;s <strong>transactional</strong> with complex business logic, user permissions, and data relationships, go with Next.js (or Node.js) plus PostgreSQL. You need a real database that handles relationships properly, not a document store.</p>
<p>If you&#x27;re building a <strong>marketplace</strong> or platform connecting buyers and sellers, you&#x27;ll likely need Next.js for the frontend, PostgreSQL for data, and Stripe for payments. These three together handle most marketplace needs.</p>
<p><img src="https://ik.imagekit.io/mhaqnegahdar/blog/images/blog-image-1763365381795_UoN8_di-s" alt="" style="max-width:100%"/></p>
<h2>Step 3: Match Stack to Skill &amp; Resources</h2>
<p>If the founder already has developers, what do they know? Don&#x27;t make them learn an entirely new stack just because it&#x27;s trendy. A developer who knows Vue really well will ship faster in Vue than struggling through React for the first time.</p>
<p>If you don&#x27;t have developers yet and need to hire, choose something common. React and Next.js dominate the market, which means easier hiring and lower rates. Vue is solid but has a smaller talent pool. Angular is powerful but mostly used by enterprises. Svelte is promising but risky for hiring.</p>
<p>Avoid obscure or trendy stacks that limit hiring or raise development costs. I&#x27;ve seen founders pick the latest hot framework, then spend three months looking for a developer who knows it, then pay premium rates because the talent pool is tiny.</p>
<p>The best stack is one your team can actually maintain. If you have to explain your technology choices with &quot;Well, technically it&#x27;s better because...&quot; you&#x27;ve probably overcomplicated it.</p>
<h2>Step 4: Balance Speed vs Scalability</h2>
<p>The reality is that you can&#x27;t have everything. Every technology decision is a trade-off between how fast you can build and how well it scales later.</p>
<p><strong>Fast to build, hard to scale:</strong> No-code tools like Bubble or Webflow, Firebase for everything, or rapid prototyping with minimal architecture. You can launch in days or weeks. Great for validation. But when you hit scale or need custom features, you&#x27;ll rebuild from scratch.</p>
<p><strong>Balanced:</strong> Next.js with Supabase or Prisma, or Vue with Firebase. You can build quickly because these stacks have great developer experience and pre-built features. They scale reasonably well. You&#x27;ll hit limits eventually, but not until you have thousands of users. Perfect for most SaaS MVPs.</p>
<p><strong>Slow to start, highly scalable:</strong> Custom backend with NestJS, NodeJS or Go, microservices architecture, carefully designed database schemas. Takes months to build properly, but handles millions of users and complex operations. Only do this if you already have proven traction.</p>
<p><img src="https://ik.imagekit.io/mhaqnegahdar/blog/images/blog-image-1763367955504_htrovOolQ" alt="" style="max-width:100%"/></p>
<p>The right choice depends on how quickly you need to show results and how much technical debt you can afford later. Most startups should aim for the balanced approach. You can always migrate to something more robust once you&#x27;ve validated the idea and have revenue.</p>
<h2>Step 5: Plan for Integration and Expansion</h2>
<p>Think beyond the MVP. What tools will you need to integrate with later? Stripe for payments? Zapier for automation? Analytics platforms? Email services? CRM systems?</p>
<p>Modern stacks like Next.js with Supabase or Firebase make integrations predictable. They have well-documented APIs and active communities, which means when you need to connect something new, someone&#x27;s already done it and shared how.</p>
<p>If you pick some niche framework or custom-built backend, every integration becomes a research project. You&#x27;re reinventing wheels that other stacks give you for free.</p>
<p>Don&#x27;t pick tech that boxes you in. Ask yourself: when we need to add payments, analytics, email, or third-party APIs in three months, will this stack make that easy or painful?</p>
<h2>Step 6: Future-Proofing Without Over-Engineering</h2>
<p>Founders hear &quot;scalability&quot; and immediately think they need to build enterprise systems. They start researching micro-services, message queues, and caching layers for a product with zero users.</p>
<p>You don&#x27;t need that yet. You might never need it at all.</p>
<p>Here&#x27;s my rule of thumb: <strong>if you can build it in a month and test it with users, that&#x27;s the right level of complexity for now.</strong> If your developer is talking about architecture that takes six months before users can touch it, you&#x27;re over-engineering.</p>
<p>The stack will evolve with the product. You&#x27;re not making a permanent decision. You&#x27;re making the right decision for the next 12 to 18 months. After that, you&#x27;ll have users, data, and real requirements to guide the next technical evolution.</p>
<p>Linear started with Ruby on Rails. Notion started with React and a simple backend. Figma started with C++ for the editor but simple web tech for everything else. They all evolved their stacks as they grew. You will too.</p>
<p>Focus on shipping and learning. The technical debt you&#x27;re worried about is cheaper than the opportunity cost of launching six months late.</p>
<h2>Final Take: The Decision Filter</h2>
<p>When you&#x27;re stuck between options, run them through these three questions:</p>
<p><strong>1. Does it help us ship fast?</strong></p>
<p>If the answer is &quot;well, eventually&quot; or &quot;after we set things up properly,&quot; that&#x27;s a no. You need to be in front of users quickly. Every week of delay is a week you&#x27;re not learning.</p>
<p><strong>2. Can we maintain it with our current skill set?</strong></p>
<p>Be honest. If you need to hire specialists or spend months learning, you&#x27;re adding risk. The best stack is boring and proven for your team&#x27;s skill level.</p>
<p><strong>3. Will it scale for the next 12-18 months?</strong></p>
<p>Not forever. Not for millions of users you don&#x27;t have yet. Just for the next phase. Can it handle 1,000 users? 10,000? That&#x27;s your target, not a million.</p>
<p>If a stack passes all three questions, it&#x27;s the right choice for now. Notice I said &quot;for now.&quot; This isn&#x27;t a marriage, it&#x27;s a tool. Use what works today, evolve when needed.</p>
<h2>Real Example</h2>
<p>Back to that founder I mentioned. Here&#x27;s what we chose and why:</p>
<p><strong>Their situation:</strong> B2B SaaS dashboard, needed authentication, data visualization, and simple payment integration. Budget of $50K, three-month timeline, no developers yet.</p>
<p><strong>What we picked:</strong> Next.js for the frontend and backend API routes, Supabase for the database and authentication, Stripe for payments, Vercel for hosting.</p>
<p><strong>Why it worked:</strong></p>
<p>Next.js meant one framework for everything. No separate frontend and backend repos to manage. Easy to find developers who know React. Fast to build and deploy.</p>
<p>Supabase handled authentication in days, not weeks. Real-time database features came free. PostgreSQL gives proper relational data when they need it.</p>
<p>Stripe integration took hours, not days, because Next.js has great Stripe libraries and examples.</p>
<p>Vercel deployment is automatic and scales on its own. They don&#x27;t need a DevOps person yet.</p>
<p>They launched in eight weeks. Got their first 50 users. Learned what features actually mattered. Now they&#x27;re iterating based on real feedback, not assumptions.</p>
<p>That&#x27;s what the right stack looks like. It disappears into the background and lets you focus on the product and users.</p>]]></content:encoded>
      <pubDate>Mon, 17 Nov 2025 00:00:00 GMT</pubDate>
      <category>Tech for Founders</category>
    </item>
    <item>
      <title>Why &apos;Built With AI in Two Weeks&apos; SaaS Success Stories Are Misleading</title>
      <link>https://mohamadh.xyz/blog/why-ai-built-saas-hype-stories-are-misleading</link>
      <guid isPermaLink="true">https://mohamadh.xyz/blog/why-ai-built-saas-hype-stories-are-misleading</guid>
      <description>Behind the viral AI-built SaaS success story is three months of iteration and a specific way of thinking, not a lucky prompt.</description>
      <content:encoded><![CDATA[<p>“I Can Give This to AI and Have My SaaS Built in Two Weeks”</p>
<p>That’s exactly why most AI-built SaaS apps fail. They’re built from prompts, not problems.</p>
<p>Alex Finn built an app using Cursor that’s doing $300K ARR. Launch day? $100K in 15 minutes. Everyone sees the success and thinks “I can do that too.”</p>
<p>Here’s what they miss: it took him three months. Three months of daily iteration, user feedback, and systematic building.</p>
<p>He didn’t prompt AI to “build an app.” He thought like a developer, breaking every step down, testing, refining. That’s why it worked.</p>
<h2>The Illusion: AI Builds Products</h2>
<p>Many founders think AI tools replace developer thinking. They don’t. They just reveal who can think systematically and who can’t.</p>
<p>You give AI a prompt like “Build an app that tracks my tweets and gives me content advice” and it generates something that looks like a product. Until users try it. Authentication breaks. Data doesn’t sync. AI responses are generic. They try it once, never come back.</p>
<p>AI doesn’t make you a builder. It magnifies your thinking (good or bad).</p>
<p>When Alex found Cursor in August 2024, he had a prototype in five minutes. He realized he could build enterprise software himself. But that prototype wasn’t the product. It was the starting point for three months of actual work.</p>
<p>If you don’t know what you’re building or why, AI just helps you build the wrong thing faster.</p>
<h2>The Pattern: Why They Fail</h2>
<p>Here’s what I see repeatedly: Founder gets excited about AI coding. Spends two days with Cursor. Ships something that technically works. Launches. Gets a few signups. Then nothing.</p>
<p>They built features, not solutions.</p>
<p>Alex wasn’t building “an AI content app.” He was solving his own problem: spending hours every night putting tweets in spreadsheets, analyzing patterns, figuring out what worked. That process was painful enough he’d been doing it manually for months.</p>
<p>That’s the difference. He started with a problem he understood deeply. Most founders start with a prompt.</p>
<p>Alex spent December beta testing with 150 people. Met with each one. Walked them through the product. Watched where they got confused. Saw what they actually used. That feedback loop turned a prototype into something people paid for.</p>
<h2>How He Actually Built It</h2>
<p>Alex’s approach was simple: break everything into the smallest possible steps.</p>
<p>Instead of “build a brain dump feature,” he’d prompt: “Build an input where users can enter an essay.” Then “Build a button that will repurpose the content.” Then “Command the AI model to turn that essay into a tweet.”</p>
<p>Feels slower. It’s faster. You don’t spend days debugging complex features AI built wrong. You catch issues immediately because each step is small and testable.</p>
<p>He even used ChatGPT as a product manager. Describe a feature, ask it to break it into micro-steps, feed those steps to Cursor one at a time.</p>
<p>That’s developer thinking. Not knowing syntax. It’s systematic problem decomposition.</p>
<h2>What This Means for You</h2>
<p>You don’t need to code. But you need to think clearly:</p>
<p><strong>Break problems into steps.</strong> Not “build a dashboard.” Instead: “create user auth,” then “fetch data,” then “display in table,” then “add filters.”</p>
<p><strong>Test brutally early.</strong> Alex had a prototype day one but didn’t launch until January. Months of feedback, finding bugs, watching users struggle with “obvious” features.</p>
<p><strong>Focus ruthlessly.</strong> Alex built one core flow: import tweets, analyze patterns, get coaching. Everything else waited.</p>
<p><strong>Iterate in loops.</strong> Build small, show users, see what breaks, fix it, add one thing, repeat.</p>
<p>When Alex launched January 24th, hundreds of people were ready to buy. Not because he built fast. Because he’d shared his journey for three months, shown progress, built community around the problem.</p>
<p>Launch day, everything broke. He took a 45-minute walk, came back to bug reports. But he could fix them. He understood every piece because he’d built it step by step.</p>
<h2>The Real Advantage (It’s Not AI)</h2>
<p>Alex’s stack is simple: Windsurf, ChatGPT, Vercel ($20/month), Supabase ($20/month), AI APIs. Total costs: $5,300/month. Revenue: $25K/month. That’s 80% margins.</p>
<p>Technology didn’t make him successful. Process did.</p>
<p>But here’s what actually matters: distribution.</p>
<p>Alex has 300K+ followers. He spent three years creating content before launching a product. Analyzed the X algorithm. Wrote viral threads. Built audience around content insights.</p>
<p>Anyone can clone his app with AI. But if they have 10 followers and Alex has 300,000, he wins. Every time.</p>
<p>When anyone can build anything, product isn’t the moat. Distribution is.</p>
<h2>Final Take</h2>
<p>AI is a multiplier. Clear process? It builds fast. Confused process? It fails faster.</p>
<p>Alex succeeded because he:</p>
<ul>
<li>Solved his own painful problem (not someone else’s imagined one)</li>
<li>Broke everything into testable micro-steps (not big vague prompts)</li>
<li>Got feedback from 150 beta users (not his own assumptions)</li>
<li>Built distribution first (3 years of content, 300K followers)</li>
</ul>
<p>The tool was just the tool. The thinking made the difference.</p>
<p>Stop asking “What can I build with AI?” Start asking “What problem am I solving, and for who?”</p>
<p>Then break it into the smallest steps. Test each one. Iterate based on what you learn.</p>
<p>That’s how you build products that work. Not fast. Right. </p>]]></content:encoded>
      <pubDate>Mon, 10 Nov 2025 00:00:00 GMT</pubDate>
      <category>AI &amp; Automation</category>
    </item>
    <item>
      <title>What Leading a Global Remote Team Taught Me About Trust</title>
      <link>https://mohamadh.xyz/blog/lessons-from-leading-a-global-remote-team</link>
      <guid isPermaLink="true">https://mohamadh.xyz/blog/lessons-from-leading-a-global-remote-team</guid>
      <description>How a high-pressure night-shift support role for a Canadian client base, run from Iran, taught me the fundamentals of remote leadership.</description>
      <content:encoded><![CDATA[<p>The first software company I worked with was working on a CMS for used car dealerships. There are many first-world companies who have their technical bases in third-world countries. One of the major problems they face is not having technical support during their working hours because of the time difference between two countries. And that was the most important issue the company I worked with had as well.</p>
<h2>Their Challenge</h2>
<p>Someone had to work at nights in Iran in order to support clients in Canada during Canada&#x27;s mornings. Not resolving technical issues on our clients&#x27; websites or panels could lead to them losing their clients and consequently to us losing them. This is how serious it was.</p>
<p>Now what was the issue? Working with Canada&#x27;s hours for someone living in Iran meant working from 8PM to 4AM, 6 days a week, without any holidays. Developers would accept this position at first because it had twice the usual salary for a dev in Iran. But then they would quit within a few months because of the high pressure.</p>
<p>It was a demanding role. While working twice the usual workload a developer had, you had to be able to switch between tasks very fast in order to manage the priorities. And just imagine handling all of that at night!</p>
<h2>My Approach</h2>
<p>When they asked me to accept that position I was hesitant for 2 major reasons. My first concern was that I was always an early bird. I was 20 years old and I had rarely stayed awake after 12AM. My second concern was regarding my experience and skills. I was a frontend developer who had just 2 months of official work experience. While they needed a senior fullstack engineer for that role, to handle supporting the software end to end.</p>
<p>All of that said, they decided to trust me because they had seen my performance doing frontend tasks and were happy with the results. I appreciated their trust and decided to put my best into that position. Before accepting, I even did research on how to handle night shifts. But I learned the rest on the job. Things like:</p>
<ul>
<li>Time management</li>
<li>Task coordination with remote team members</li>
<li>Setting up systems for repetitive tasks</li>
<li>Handling workloads based on priorities</li>
<li>And even backend development</li>
</ul>
<h2>Results</h2>
<p>Before I knew it, I&#x27;d handled that position for more than a year. Besides, our clients&#x27; satisfaction rate improved by 70% during that time. Because of that, I was offered another contract with 4x the salary I had started with. These results weren&#x27;t just because I worked so hard. My main goal was to work smart and build something that others could continue even after me. So I established some guidelines for the development process that improved both the quality and speed of our work.</p>
<h2>Why Quit?</h2>
<p>I eventually quit that position to start a more challenging and fulfilling journey by being a technical partner for non-technical founders who wish to build their own software business. I figured out that many brilliant software ideas that could make the world a better place die just because founders aren&#x27;t sure how to build them. That&#x27;s the gap I&#x27;m trying to fill.</p>
<p>That means <strong>I&#x27;ll explain the why</strong> behind each technical decision in plain English and guide them to make the best decisions. This way they can <strong>avoid expensive mistakes</strong> and <strong>build what actually moves their product</strong> forward.</p>]]></content:encoded>
      <pubDate>Mon, 03 Nov 2025 00:00:00 GMT</pubDate>
      <category>Career Lessons</category>
    </item>
    <item>
      <title>The SaaS Not-To-Do List: 7 Mistakes That Kill Products Before Launch</title>
      <link>https://mohamadh.xyz/blog/saas-development-not-to-do-list-7-mistakes-that-kill-products</link>
      <guid isPermaLink="true">https://mohamadh.xyz/blog/saas-development-not-to-do-list-7-mistakes-that-kill-products</guid>
      <description>The difference between successful and struggling SaaS founders isn&apos;t talent, it&apos;s discipline. Seven costly mistakes to avoid.</description>
      <content:encoded><![CDATA[<link rel="preload" as="image" href="https://substackcdn.com/image/fetch/$s_!XXk8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11cb69a8-e700-4384-97e7-af742992fa6e_1346x633.png"/><link rel="preload" as="image" href="https://substackcdn.com/image/fetch/$s_!RrXt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a80b3ee-b15a-4831-9f98-b2c555119459_1496x641.png"/><link rel="preload" as="image" href="https://substackcdn.com/image/fetch/$s_!C13s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562b82ed-9ea0-4a9b-b0a2-c6abf975d3a9_1971x770.png"/><p>Success in SaaS isn&#x27;t about building fast. It&#x27;s about building right and avoiding the traps that force you to rebuild later.  Most founders don&#x27;t fail because they didn&#x27;t do enough. They fail because they did the wrong things in the wrong order.</p>
<p>I&#x27;ve built products that shipped in weeks and products that took months to untangle. I&#x27;ve worked with founders who nailed their first launch and founders who burned six months on features nobody wanted. The difference wasn&#x27;t talent or budget. It was discipline in what they chose not to do.</p>
<p>This is the Not-To-Do List. Seven costly mistakes that kill SaaS products before they launch, and what to do instead.</p>
<h2>Mistake 1: Building Too Many Features</h2>
<p>Most founders try to impress users with variety in features. Doing so their product loses clarity.</p>
<p>Founders do this to keep up with competitors who have dozens of features and assume they need to match a 5-year-old product within 3 months. Or they imagine edge cases and build solutions for problems users don&#x27;t have yet.</p>
<p>To fix this focus on the single core action that makes your product valuable. If you&#x27;re building project management software, that&#x27;s creating and assigning tasks. Everything else (comments, tags, notifications) either supports that core action or waits.</p>
<p>Every feature you add increases complexity, slows development, and confuses users about what your product actually does. Cut ruthlessly. Ship the smallest version that solves the core problem. Add features only after users prove they need them.</p>
<p><a href="https://substackcdn.com/image/fetch/$s_!XXk8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11cb69a8-e700-4384-97e7-af742992fa6e_1346x633.png"><img height="633" width="1346" src="https://substackcdn.com/image/fetch/$s_!XXk8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F11cb69a8-e700-4384-97e7-af742992fa6e_1346x633.png"/></a></p>
<h2>Mistake 2: Cutting Too Many Features</h2>
<p>In the rush to simplify, some founders gut the user experience. They ship MVPs so minimal they feel broken.</p>
<p><strong>This happens when</strong> founders read “ship fast” advice and overcorrect. They strip everything that isn’t technically required, ignoring that users need context, clarity and basic usability to understand what they’re looking at.</p>
<p>Remove only what doesn&#x27;t directly contribute to the core flow. Your MVP should feel complete, not empty.</p>
<p>If you&#x27;re building a dashboard, users need to see their data, filter it, and export it. That&#x27;s complete. They don&#x27;t need custom themes, advanced analytics, or team permissions yet. But they do need basic navigation, clear labels, and feedback when actions succeed or fail.</p>
<blockquote>
<p>Complete doesn&#x27;t mean feature-rich. It means users accomplish the core task without confusion or frustration.</p>
</blockquote>
<img height="624" width="1456" src="https://substackcdn.com/image/fetch/$s_!RrXt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0a80b3ee-b15a-4831-9f98-b2c555119459_1496x641.png"/>
<h2>Mistake 3: Neglecting Design Completely</h2>
<p>Ignoring design is like skipping grammar when writing a book. The content is good, but nobody wants to read it.</p>
<p>This happens especially when founders care about the technical aspects of the work more than other aspects. They assume users will see past ugly interfaces if the product works. They don’t. Your product’s perceived value is directly connected to how it looks.</p>
<p>You might not be at a position to hire a designer or spend too much time on design as well. Don&#x27;t hire a designer yet. Just make your layout is clean, readable, and obvious. Function first, but with clarity.</p>
<p>Use consistent spacing. Pick readable fonts. Make buttons look like buttons. Use color to guide attention, not decorate. Basic visual hierarchy makes the difference between &quot;this looks professional&quot; and &quot;I don&#x27;t trust this.&quot;</p>
<p>Thankfully there are many premade component libraries out there now that can help you with this. I use Shadcn for my clients and it’s been working wonderfully. These components are highly customizable. So you won’t look exactly like anyone else using them</p>
<p>You don&#x27;t need something spectacular. You need something clear. Aesthetic polish comes later, after you validate the product works.</p>
<p><a href="https://substackcdn.com/image/fetch/$s_!C13s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562b82ed-9ea0-4a9b-b0a2-c6abf975d3a9_1971x770.png"><img height="569" width="1456" src="https://substackcdn.com/image/fetch/$s_!C13s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F562b82ed-9ea0-4a9b-b0a2-c6abf975d3a9_1971x770.png"/></a></p>
<h2><strong>Mistake 4: Skipping Documentation</strong></h2>
<p>Skipping documentation feels faster, until you spend double the time explaining what you built later. To your developer. To yourself three months from now. To every new person who joins the project.</p>
<p>This happens because documentation <em>feels</em> like overhead when you&#x27;re racing to ship. You think you’ll remember why certain decisions were made. You won’t. And when that happens, every change becomes slower, riskier, and more expensive</p>
<p>To make this process simple, I’ve built a habit that works for every project I run.
Before writing a single line of code, I create <strong>two short, living documents</strong> that keep the project aligned from start to finish:</p>
<ol>
<li><strong>A plain-English proposal:</strong> what we’re building, why it matters, what tech we’ll use, how long it will take, and what it will cost, written so anyone can understand it.</li>
<li><strong>A technical guide:</strong> the structure behind the product, user flows, database setup, and how all the pieces connect under the hood.</li>
</ol>
<p>Both live in the project’s main folder (<code>README.md</code> on GitHub). They take less than a week to create but save months of confusion later. And as the product grows, they evolve, they’re not static files, they’re part of the workflow.</p>
<p>The goal isn’t to write endless pages of technical jargon. It’s to make sure <strong>you and your developer always share the same mental model</strong> of the product. That way, no one’s ever guessing what was built, why it works that way, or what happens if you change it.</p>
<p>Good documentation saves time, money, and miscommunication. Skipping it doesn’t make you faster. It just makes your next sprint harder.</p>
<h2>Mistake 5: Changing Direction Mid-Build</h2>
<p>Frequent pivots during development burn both money and morale. You&#x27;re six weeks into building feature A when you decide feature B is more important. Your developer scraps their work and starts over. Momentum dies.</p>
<p>Freeze core assumptions for 2-3 weeks at a time. Reassess after each build cycle, not during it. You don’t need to react to every piece of feedback, every competitor move, every new idea. You mistake motion for progress.</p>
<p>Decide what you&#x27;re building, commit to finishing it, then evaluate whether it worked. Changing direction mid-sprint wastes everything you&#x27;ve invested and teaches you nothing because you never complete anything.</p>
<p>Strategy requires patience. Lock in, execute, measure, then adjust. Iteration works. Constant pivoting doesn&#x27;t.</p>
<h2>Mistake 6: Ignoring Technical Debt Early</h2>
<p>Rushing everything &quot;just to ship&quot; means rebuilding everything later. You skip tests, ignore code standards, pile on quick fixes. It feels fast now. It kills you in three months when every change breaks something else.</p>
<p><strong>Why it happens:</strong> Speed pressure. You think clean code is a luxury. It&#x27;s not. It&#x27;s the difference between sustainable growth and grinding to a halt when you need to move fastest.</p>
<p><strong>What to do instead:</strong> Move fast, but with hygiene. Use clear naming, version control, and basic code standards. Minimal debt, maximal velocity.</p>
<p>Name variables so they make sense tomorrow. Write functions that do one thing. Use Git properly. These habits cost nothing and save weeks when you need to modify, debug, or scale.</p>
<p>Technical debt isn&#x27;t about perfection. It&#x27;s about not sabotaging your future self.</p>
<h2>Mistake 7: Building Without User Feedback</h2>
<p>You can&#x27;t guess product-market fit from your own head. Building in isolation for months, then launching to crickets, kills more products than bad code ever will.</p>
<p>Test prototypes early. Even a single user interaction is more valuable than a week of speculation. You&#x27;re afraid to show unfinished work. You want it perfect before anyone sees it. But perfect for who? You&#x27;re not the user.</p>
<p>Build the core flow, put it in front of ten potential users, and watch them struggle. Their confusion tells you what to fix. Their questions reveal what you&#x27;re missing. Their indifference shows you the problem isn&#x27;t painful enough to solve.</p>
<p>Ship incomplete products to small groups. Learn fast, adjust fast, then scale what works. Building without feedback is gambling. Building with feedback is learning.</p>
<h2>The Discipline of Right Decisions</h2>
<p>Success doesn&#x27;t come from getting everything right. It comes from consistently making the right decisions and avoiding the wrong calls.</p>
<p>Measure success not by feature count, code written, or speed of launch. Measure it by:</p>
<p><strong>Clarity of what you&#x27;re building and why.</strong> If you can&#x27;t explain your product&#x27;s core value in one sentence, you don&#x27;t understand it yet.</p>
<p><strong>Frequency of user feedback.</strong> Products built in a vacuum die in a vacuum. Talk to users weekly, not quarterly.</p>
<p><strong>Stability and maintainability of what you ship.</strong> Fast code that breaks constantly is slower than clean code that works.</p>
<p>That&#x27;s real progress in SaaS. Direction, not velocity.</p>
<p>This Not-To-Do List isn&#x27;t about avoiding risk. It&#x27;s about avoiding predictable failure. Every mistake I listed has killed products I&#x27;ve watched, worked on, or heard about from founders who learned the hard way.</p>
<p>You don&#x27;t have to learn the hard way. You just have to choose discipline over enthusiasm, focus over features, and feedback over assumptions.</p>
<p>Build right. Build smart. Avoid the traps.</p>]]></content:encoded>
      <pubDate>Mon, 27 Oct 2025 00:00:00 GMT</pubDate>
      <category>MVP &amp; Product Strategy</category>
    </item>
    <item>
      <title>Technical Concepts Every Non-Technical SaaS Founder Should Know</title>
      <link>https://mohamadh.xyz/blog/technical-concepts-every-non-technical-saas-founder-should-know</link>
      <guid isPermaLink="true">https://mohamadh.xyz/blog/technical-concepts-every-non-technical-saas-founder-should-know</guid>
      <description>You don&apos;t need to code to build a startup, but you do need to understand what your developers are talking about to make good decisions.</description>
      <content:encoded><![CDATA[<link rel="preload" as="image" href="https://ik.imagekit.io/mhaqnegahdar/blog/images/blog-image-1760961013358_1_1KSDcS8"/><p>Most startups die from miscommunication, not bad ideas.</p>
<p>The gap between non-technical founders and technical teams kills products before they launch. Wrong decisions. Wasted money. Products that don&#x27;t match the vision.</p>
<p>You don&#x27;t need to code. But you need to understand what your developers are talking about when they say &quot;We need to migrate to cloud hosting&quot; or &quot;This would work better with server-side rendering.&quot;</p>
<p>This guide gives you exactly what you need to know. Nothing more, nothing less.</p>
<h2>Basic Technical Concepts</h2>
<h3>Servers and Hosting</h3>
<p>Think of a server as a computer that&#x27;s always on, and connected to the Internet, serving your application to users.</p>
<p>Now you have a few hosting options you can choose depending on your project:</p>
<p><strong>Shared Hosting</strong> ($5-20/month)</p>
<p>Shared hosting is an affordable approach for simple landing pages, blogs, and MVP websites with minimal traffic. You share resources with thousands of sites. Fine for simple landing pages. Terrible for anything with real traffic.</p>
<p><strong>VPS (Virtual Private Server)</strong> ($20-100/month)</p>
<p>It&#x27;s still one computer/server but this time you rent part of it without anyone else being able to access it or use your resources. This is suited for small to medium applications, when you need more control. But it can still break if you expect rapid growth or get unpredictable traffic spikes.</p>
<p><strong>Cloud Hosting</strong> (Vercel, AWS, Google Cloud) ($0-1000+/month)</p>
<p>With cloud hosting your application runs on multiple computers/servers that scale automatically as your application and its traffic grows. This prevents 3am emergencies when your server crashes from traffic spikes. It is used by any serious startup product that needs to scale.</p>
<p><strong>Real talk:</strong> If your developer says you need cloud hosting and you&#x27;re still pre-launch, they might be over-engineering. But if you have users and they&#x27;re pushing for cloud, listen to them.</p>
<h3>Domains and DNS</h3>
<p>A <strong>Domain</strong> is your name (example.com) on the Internet. You buy this yearly ($10-15) from registrars like Namecheap or Google Domains.</p>
<p><strong>DNS (Domain Name System)</strong> is the phonebook of the internet. When someone types your domain, DNS tells their browser which server to connect to.</p>
<p><strong>Why this matters:</strong></p>
<ul>
<li>DNS changes take 24-48 hours to fully propagate (go live worldwide)</li>
<li>If your developer says &quot;DNS needs to update&quot; don&#x27;t panic when the site isn&#x27;t live immediately</li>
<li>Never give anyone access to your domain registrar account unless you absolutely trust them</li>
</ul>
<p><img src="https://ik.imagekit.io/mhaqnegahdar/blog/images/blog-image-1760961013358_1_1KSDcS8" alt="" style="max-width:100%"/></p>
<h2>Web Architecture Evolution</h2>
<h3>Traditional Web (The Old Way)</h3>
<p>10 years ago when you sent a request to a server to visit a web page, the server would build the entire page and then serve it to you. However there were a few drawbacks to this approach. It was slow and heavily reliant on the server. This resulted in users staring at a blank screen or a loading spinner for a long time. And we know users don&#x27;t do that for more than 3 seconds, they just leave the page.</p>
<h3>Modern Web (How It Works Now)</h3>
<p>We&#x27;ve come a long way from then. Now we can leverage the power of both server and client (browser) to optimize our web applications.</p>
<p>With <strong>Client-Side Rendering (CSR)</strong>, the server sends a basic HTML shell and JavaScript does all the work in the browser. The page loads fast initially but takes time to become interactive. Good for apps where SEO doesn&#x27;t matter much, like dashboards behind a login.</p>
<p>With <strong>Server-Side Rendering (SSR)</strong>, the server builds the complete HTML page with all the data before sending it to the browser. Users see content immediately, search engines can read it, but it takes longer for that initial response from the server.</p>
<p><strong>React Server Components</strong> (the newest approach) let you mix both strategies in the same app. Some parts of your page can be built on the server and never need JavaScript in the browser at all. Other parts can be fully interactive. You get the best of both: fast loading, good SEO, and smooth interactivity where you need it.</p>
<p><strong>What you need to know:</strong> When your developer talks about these approaches, they&#x27;re discussing trade-offs between initial load speed, SEO requirements, and how interactive your app needs to be. The right choice depends on what your product does.</p>
<h2>Key Technologies for Startups</h2>
<p>These days, <strong>React</strong> and <strong>Next.js</strong> have become the current standards for building custom websites and web applications. Netflix, Airbnb, Facebook, TikTok, Twitch are all using them. Thanks to the large community around these technologies, it&#x27;s very easy to hire developers who are proficient in using them. Besides, the React community has already built dozens of pre-built components, which makes it much faster and more efficient to develop an app with this stack.</p>
<p><strong>Next.js</strong> takes React and adds everything you need for a production app: server-side rendering, automatic routing, and built-in optimizations. It&#x27;s deployed on Vercel which makes hosting extremely simple. Startups choose it because it gives you fast development, great performance, and scales easily without you having to think about it.</p>
<p>Now, React and Next.js aren&#x27;t the only options out there. Vue, Svelte, Angular, and others all have their strengths. But React dominates the market, which means easier hiring and more resources. For most startups, that matters more than technical differences. I&#x27;ll dive deeper into comparing different frameworks in a future post, but for now, know that React/Next.js is the safe bet that won&#x27;t limit you.</p>
<h3>Why Not Just Use WordPress?</h3>
<p>WordPress is perfect for blogs, content-heavy websites, and simple marketing pages. If you&#x27;re building something that&#x27;s mostly about displaying content, WordPress, Webflow, or Framer are still solid choices.</p>
<p>But try building an interactive dashboard in WordPress. Or a real-time chat feature. Or anything that feels like a mobile app on the web. You&#x27;ll end up fighting the tool instead of building your product. It&#x27;s like using a hammer to screw in a bolt, it&#x27;ll technically work, but it&#x27;s not the right tool.</p>
<p>Modern frameworks like React and Next.js were built specifically for interactive applications. Things like SaaS dashboards, real-time features, and products that need to scale quickly. If your product needs to feel like an app, not a content website, that&#x27;s when you go modern.</p>
<p><strong>Real example:</strong> Building a todo app in WordPress is like using a hammer to screw in a bolt. It&#x27;ll work, but it&#x27;s not the right tool.</p>
<ul>
<li>Use WordPress for simple blog or marketing sites</li>
<li>Use React/Next.js for SaaS product, dashboard, or app-like experience</li>
</ul>
<h2>Practical Tips for Founders</h2>
<h3>Choosing the Right Tech Stack</h3>
<p>When your developer proposes a tech stack, there are four questions you need to ask:</p>
<p><strong>1. &quot;Why this technology over alternatives?&quot;</strong> A good answer explains trade-offs based on your specific product needs. Red flag? &quot;Because it&#x27;s what I know&quot; or &quot;Because it&#x27;s the newest.&quot; You&#x27;re not paying them to learn on your dime or chase trends.</p>
<p><strong>2. &quot;How easy is it to hire developers for this?&quot;</strong> React and Next.js? Very easy. Some obscure framework they want to try? You&#x27;ll struggle to find talent when they leave. This matters more than you think.</p>
<p><strong>3. &quot;What&#x27;s the cost to scale this?&quot;</strong> Some technologies are cheap to start but expensive to scale. Others cost more upfront but scale automatically. Make sure you understand the long-term costs, not just the MVP price tag.</p>
<p><strong>4. &quot;Can we start simple and upgrade later?&quot;</strong> Good tech stacks allow gradual improvements. Bad ones lock you in and require complete rewrites when you need to scale. Always choose the one that lets you start simple.</p>
<p>Watch out for these <strong>red flags</strong> in tech decisions. If your developer wants to use 5+ new technologies they&#x27;ve never used before, you&#x27;re their learning playground at that point. Also red flag if they can&#x27;t explain decisions in simple terms, every problem needs a complex solution, or they dismiss your concerns about cost or timeline.</p>
<p><strong>Green flags</strong> look like this: they suggest proven, boring technologies. They explain trade-offs honestly instead of selling you on the &quot;best&quot; thing. They recommend starting simple and scaling later. And they&#x27;ve built similar products before, so they know what actually works.</p>
<h3>Communication with Technical Teams</h3>
<p>Stop saying &quot;Can we just add a quick button that does X?&quot; Nothing is &quot;quick&quot; in development. Or &quot;The competitor has this feature, why don&#x27;t we?&quot; You don&#x27;t know their tech debt or team size. And never assume &quot;This should be simple, right?&quot; Assumptions kill timelines.</p>
<p>Instead, ask &quot;What&#x27;s the effort level for adding X feature: small, medium, or large?&quot; Or &quot;What would we need to change in our architecture to support this?&quot; Or &quot;What&#x27;s the trade-off if we prioritize this over that?&quot; These questions show you respect the complexity while still getting clear answers.</p>
<p>Here are a few terms you should know. <strong>Technical debt</strong> means shortcuts taken to ship faster that will slow you down later. <strong>Refactoring</strong> is rewriting code to be cleaner and faster without changing what it does. <strong>Edge cases</strong> are rare scenarios that break things, and they happen way more than you think. <strong>API</strong> is how different parts of your product talk to each other.</p>
<p>When developers use jargon, stop them immediately. Ask them to explain it as if you&#x27;re 12 years old. Tell them &quot;I need to understand the &#x27;why&#x27; not the &#x27;how.&#x27;&quot; This isn&#x27;t about doubting their skills, it&#x27;s about making sure you can make informed decisions.</p>
<p>And set realistic expectations together. &quot;Simple&quot; features often take 2-3x longer than expected. Bugs are inevitable and don&#x27;t mean your developer is incompetent. Good code takes time because fast code often breaks later. Your developer&#x27;s job is to prevent problems you don&#x27;t see coming, so trust them when they push back on timelines.</p>
<h2>Final Take</h2>
<p>You don&#x27;t need to become a developer. But you need to understand enough to make informed decisions about technology choices, communicate effectively with your technical team, know when you&#x27;re being over-sold or under-served, and budget realistically for development.</p>
<p>Three habits that will save your startup: First, ask &quot;why&quot; relentlessly. Not to challenge, but to understand the reasoning behind technical decisions. Second, learn one technical concept per week. Watch a 10-minute YouTube tutorial on something your team mentioned. It adds up faster than you think. Third, trust but verify. Get second opinions on major technical decisions from someone who doesn&#x27;t have skin in the game.</p>
<p>The best non-technical founders I&#x27;ve worked with didn&#x27;t know how to code. But they knew how to ask the right questions, spot red flags early, and create an environment where technical teams could do their best work.</p>
<p>Your job isn&#x27;t to understand every line of code. It&#x27;s to understand enough to lead effectively. That&#x27;s it.</p>
<h2>Resources to Continue Learning</h2>
<p>Want to keep learning? Start with <strong>freeCodeCamp.org</strong> (do just the first few modules to understand how developers think) and the <strong>Fireship YouTube channel</strong> (100-second explainer videos perfect for busy founders). Search &quot;How does [technology] work&quot; on YouTube when your team mentions something new.</p>
<p>Stay curious, but don&#x27;t try to become the expert. That&#x27;s what you hired your team for. And if you need a second opinion on a major technical decision, that&#x27;s completely okay, send it to a trusted technical advisor and ask &quot;Is this reasonable?&quot;</p>]]></content:encoded>
      <pubDate>Mon, 20 Oct 2025 00:00:00 GMT</pubDate>
      <category>Tech for Founders</category>
    </item>
    <item>
      <title>How I Use AI to Ship SaaS Features Faster, Without Losing Control</title>
      <link>https://mohamadh.xyz/blog/how-i-use-ai-to-ship-saas-features-faster</link>
      <guid isPermaLink="true">https://mohamadh.xyz/blog/how-i-use-ai-to-ship-saas-features-faster</guid>
      <description>My actual AI workflow across meetings, design, frontend, and backend work, and where I never let AI make the decision for me.</description>
      <content:encoded><![CDATA[<p>AI tools are everywhere doing almost any type of work these days. If you’ve already adapted them into your workflow and know how to use them right, you’re probably doing your work 10x easier and better. If not… You’re better to catch up fast before it’s too late…</p>
<p>Here&#x27;s how I leverage AI tools to ship SaaS applications faster with higher quality without letting it take control.</p>
<h2>Meetings</h2>
<p>I use Granola in every client meeting. It takes note on everything important detail while I focus on the conversation.</p>
<p>Before Granola, I&#x27;d frantically type notes, miss half of what was said, and spend hours after the meeting trying to remember what the client actually wanted. Now? I listen. I ask better questions. I actually understand what they need.</p>
<p>After the meeting, Granola gives me a complete transcript and pulls out the key points. I review it, find the gaps I need to clarify, and build my Requirements &amp; Specifications doc directly from it.</p>
<p>This turns a 3-hour post-meeting process into 30 minutes. And the docs turn out more accurate because they&#x27;re based on what the client actually said, not what I remember them saying.</p>
<p><strong>The Key</strong> here is to still review everything. I don&#x27;t just accept what the AI extracts. I read the transcript, identify what matters, and structure the R&amp;S doc myself. AI speeds up capture. I handle the thinking and process structure.</p>
<h2>Design</h2>
<p>I never let AI design for me. AI-generated designs are too generic and feel soulless. They all look almost the same, lifeless, and forgettable.</p>
<p>I use tools like Lovable or Figma Make to generate layout ideas and prototypes quickly. Now wireframes, animation ideas, and starting points are created much more faster</p>
<p>Then I take those prototypes and refine them. I adjust spacing, choose real colors (not AI&#x27;s terrible color schemes), add personality, and make design decisions that actually fit the product.</p>
<p>Building a dashboard for a SaaS client. I had Lovable generate 5 different layout options in 10 minutes. I picked the structure that made the most sense, threw away the rest, and spent the next hour making it actually look good.</p>
<p>Without AI, that would&#x27;ve taken me 2 hours just to sketch out different layouts. With AI, I got to the design decisions faster.</p>
<p><strong>The key</strong> is to let AI handles the grunt work of generating options. I handle the creative decisions that make the design work.</p>
<h2>Frontend Development</h2>
<p>I use V0 and Figma Make to build different section UIs and components faster. It always needs refinements but it still makes the whole process faster, since I no longer need to start from scratch.</p>
<p>AI generates clean component code based on what I describe, an image or a Figma frame. I review it, adjust what doesn&#x27;t fit, and use it. This cuts my UI development time in half. Because now AI handles the boilerplate while I focus on the logic and customization.</p>
<p>For instance while building a multi-step form with validation. Instead of writing all the form from scratch, I described what I needed to V0. It gave me the structure. I refined the validation logic, adjusted the styling, and integrated it to the application.</p>
<p>Total time: 30 minutes instead of 2 hours.</p>
<p>With UI , AI gives me a starting point. I finish it. You can’t blindly accept generated code, read it, understand it, and modify it to fit the project.</p>
<h2>Backend Development</h2>
<p>For backend development and logic, Claude is my go-to AI tool for generating functions, code snippets, debugging help, handling repetitive tasks, or creating mock data.</p>
<p>When I’m stuck on a bug, I paste the error and the relevant code into Claude. It suggests possible causes and solutions. I evaluate, test, and apply what works.</p>
<p>When I need to write repetitive code (like CRUD operations for multiple database tables), I have Claude generate the base structure. Then I review it, adjust for my specific use case, and integrate it.</p>
<p>You should <strong>never</strong> copy-paste blindly and hope it works. <strong>Instead,</strong> treat AI-generated code as a starting point. Read through it, understand what it’s doing, and modify it to fit your needs.</p>
<p>When I was building an API with ten similar endpoints, for instance, I asked Claude to generate the structure for one. After reviewing and cleaning it up, I used it as a template for the rest. It saved hours, but I still understood every line because I made the decisions about what stayed and what changed.</p>
<h2>My AI Workflow Summary</h2>
<p>Here&#x27;s the pattern that runs through everything I just showed you:</p>
<p><strong>AI generates fast.</strong> Meeting transcripts, layout options, code snippets, component structures. It handles the repetitive grunt work that used to eat my time.</p>
<p><strong>I still review and refine.</strong> I never accept AI output blindly. This line exists in the documentation of any AI tools: <em>“AI can make mistakes”.</em> So I read what AI generates, evaluate if it fits, modify what doesn&#x27;t, and integrate what works. </p>
<p><strong>AI amplifies my speed.</strong> It removes the boring parts so I can focus on the decisions that actually matter like product architecture, user experience, business logic, quality. Use AI like a multiplier, not a crutch. It should make your skills more effective, not replace them.</p>
<h2>The AI Trap For Developers</h2>
<p>Most developers use AI wrong. They either:</p>
<ol>
<li><strong>Reject it completely</strong> and waste time doing repetitive tasks manually</li>
<li><strong>Let it take control</strong> and produce soulless designs and buggy code they don&#x27;t understand</li>
</ol>
<p>Both approaches fail miserably.</p>
<p>Rejecting AI means falling behind developers who use it strategically, the ones who ship faster, explore more ideas, and spend their time on higher-value work.</p>
<p>Letting AI take control is even worse. It creates a false sense of productivity while burying you in technical debt and shallow design decisions you can’t explain or maintain later.</p>
<p>Instead, <strong>use AI as a tool that amplifies your skills, not replaces them.</strong></p>
<p>AI should speed you up. It shouldn&#x27;t think for you.</p>
<h2>My Final Take</h2>
<p>AI tools made me faster. But they didn&#x27;t make me a better developer, my decisions and strategic thinking did.</p>
<p>Granola doesn&#x27;t replace listening to clients. It captures what they say so I don&#x27;t miss details.</p>
<p>V0 doesn&#x27;t replace my UI skills. It handles boring parts so I focus on making interfaces that work.</p>
<p>Claude doesn&#x27;t replace my problem-solving. It speeds up debugging and repetitive tasks.</p>
<p><strong>The tools work because I&#x27;m still in control.</strong></p>
<p>Let AI take over, you&#x27;ll ship faster but worse. Reject AI completely, you&#x27;ll lose opportunities to competitors.</p>
<p>Use AI to handle speed. Handle quality yourself.</p>
<p>Don&#x27;t let the tool replace your brain. Let it amplify what you already do well.</p>]]></content:encoded>
      <pubDate>Sun, 19 Oct 2025 00:00:00 GMT</pubDate>
      <category>AI &amp; Automation</category>
    </item>
    <item>
      <title>What Losing an $11K Project Taught Me About Scoping MVPs</title>
      <link>https://mohamadh.xyz/blog/what-losing-an-11k-project-taught-me-about-scoping-mvps</link>
      <guid isPermaLink="true">https://mohamadh.xyz/blog/what-losing-an-11k-project-taught-me-about-scoping-mvps</guid>
      <description>I built a comprehensive proposal instead of the smallest testable version, and lost the project because of it.</description>
      <content:encoded><![CDATA[<p>The client had a physical product—an NFC card users could tap at events to introduce themselves and connect with others. They needed a simple event scheduler to go with it.</p>
<p>I went all-in. Event scheduling, real-time updates, user profiles, analytics dashboard, integration options. Built out a comprehensive spec thinking I was adding value.</p>
<p>They were fine with the price. But the timeline? Four months.</p>
<p>They walked away. They didn&#x27;t want a huge project that took months. They wanted something they could test at their next event in six weeks.</p>
<p>I lost the project because I couldn&#x27;t see what they actually needed—a simple MVP they could validate fast.</p>
<h2>I Built a Vision, Not a Test</h2>
<p>I wanted to deliver something comprehensive. So I added features I thought would make the product better.</p>
<p>Full event management. Real-time attendee tracking. Detailed user profiles. Post-event analytics. CRM integration.</p>
<p>But they didn&#x27;t need any of that yet. They needed to know if anyone would actually use NFC cards to network at events.</p>
<p><strong>Mistake #1:</strong> I tried to build everything at once instead of the smallest version that proved the concept.</p>
<p><strong>Mistake #2:</strong> I lost sight of their actual goal—getting something real into users&#x27; hands to validate the idea quickly.</p>
<p>They needed an experiment. I gave them a commitment.</p>
<h2>What I Should Have Done</h2>
<p>Build something small but functional first.</p>
<p>Instead of a four-month build, a two-week sprint with core functionality:</p>
<ul>
<li>Tap NFC card, see contact info</li>
<li>Add person to your event connections list</li>
<li>Basic event creation (name, date, attendee list)</li>
</ul>
<p>Three features. One core flow. Shippable in two weeks, testable at their next event.</p>
<p>Then gather data. Do people actually use it? What do they struggle with? What do they ask for?</p>
<p><strong>Phase 2:</strong> Add features based on real user feedback, not assumptions. Maybe they need analytics. Maybe they need CRM integration. Maybe they need something we never thought of.</p>
<p>But we don&#x27;t know until people use the basic version.</p>
<h2>The Real Cost</h2>
<p>I didn&#x27;t just lose $11K. I lost the chance to work with a client who could&#x27;ve led to more work, referrals, and portfolio pieces.</p>
<p>They lost months of validation time. By the time they found another developer willing to build smaller, their competitors had already launched.</p>
<p>Overcomplicating MVPs doesn&#x27;t just delay launch. It kills momentum, burns budgets, and often kills the project entirely.</p>
<p>Value isn&#x27;t about volume. It&#x27;s about solving the right problem at the right time.</p>
<p>They needed speed and learning. I gave them complexity and commitment.</p>
<hr/>
<h2>How I Work Now</h2>
<p>No more four-month builds before users see anything. We build in sprints, validate with real users, decide what&#x27;s next based on data.</p>
<p><strong>Sprint 1 (2-3 weeks):</strong> Core feature. One main flow. Get it in front of users.</p>
<p><strong>Validation:</strong> Watch what happens. What works? What breaks? What do users ask for?</p>
<p><strong>Sprint 2 (2-3 weeks):</strong> Fix what&#x27;s broken. Add the one feature users keep asking for.</p>
<p><strong>Sprint 3:</strong> Repeat based on real demand.</p>
<p>This approach:</p>
<ul>
<li>Gets users involved early (you&#x27;re watching them use it, not guessing for months)</li>
<li>Reduces risk (find out if the core idea works after $5K and three weeks, not $50K and six months)</li>
<li>Builds the right product (responding to actual user needs, not assumptions)</li>
</ul>
<hr/>
<h2>When Clients Push for Everything Upfront</h2>
<p>Some clients hear &quot;MVP&quot; and want 15 features. They&#x27;re worried it won&#x27;t look professional.</p>
<p>Here&#x27;s what I tell them:</p>
<p>&quot;We can build everything upfront and hope it works. Or we can build the core, test it with real users, then add features we know they&#x27;ll actually use. One approach is a gamble. The other is learning.&quot;</p>
<p>Most choose learning once they understand the trade-off.</p>
<p>For the ones who insist on building everything at once? I walk away. Overcomplicated projects rarely succeed, and when they fail, everyone loses.</p>
<hr/>
<h2>The Questions I Ask Now</h2>
<p><strong>&quot;What&#x27;s the ONE thing this product must do to prove the concept works?&quot;</strong></p>
<p>Not five things. One. Everything else supports that or waits.</p>
<p><strong>&quot;If we could only ship three features in the first version, which three?&quot;</strong></p>
<p>This forces brutal prioritization. Features that don&#x27;t make the top three aren&#x27;t essential yet.</p>
<p><strong>&quot;What&#x27;s the fastest we could get this in front of real users?&quot;</strong></p>
<p>Speed isn&#x27;t about cutting corners. It&#x27;s about learning faster. The faster we validate, the less money we waste building the wrong thing.</p>
<p><strong>&quot;What happens if the core idea doesn&#x27;t work?&quot;</strong></p>
<p>If the answer is &quot;we&#x27;ve already spent six months and $50K,&quot; the approach is wrong. We need to structure projects so we can pivot or kill ideas cheaply.</p>
<hr/>
<h2>My Final Take</h2>
<p>The $11K I lost taught me something worth more: overcomplicating doesn&#x27;t add value. Clarity does. Speed does. Learning does.</p>
<p>Now when I scope projects, I&#x27;m not asking &quot;What can we build?&quot; I&#x27;m asking &quot;What&#x27;s the smallest version that tests if this idea works?&quot;</p>
<p>My clients launch faster, learn faster, and build products people actually want instead of products we hoped they&#x27;d want.</p>
<p>Build small, test fast, iterate based on reality.</p>
<p>Your users don&#x27;t need every feature on day one. They need the one feature that solves their problem. Give them that first. Everything else can wait.</p>]]></content:encoded>
      <pubDate>Sat, 18 Oct 2025 00:00:00 GMT</pubDate>
      <category>MVP &amp; Product Strategy</category>
    </item>
    <item>
      <title>The Clarity Call Framework: How I Validate SaaS Ideas Before We Build</title>
      <link>https://mohamadh.xyz/blog/the-clarity-call-framework-for-validating-your-saas-idea</link>
      <guid isPermaLink="true">https://mohamadh.xyz/blog/the-clarity-call-framework-for-validating-your-saas-idea</guid>
      <description>Five questions that filter out SaaS ideas that aren&apos;t ready to build yet, before any money is spent on development.</description>
      <content:encoded><![CDATA[<p>Most developers start their discovery calls with &quot;What features are you trying to build?&quot;</p>
<p>But SaaS products aren&#x27;t about features. They&#x27;re about problems they solve.</p>
<p>If we don&#x27;t start there, we&#x27;ll waste months building the wrong thing. I&#x27;ve watched it happen. Founders spend six months building a product with every feature they imagined, launch it, and hear crickets. Not because the execution was bad, but because they never validated if anyone actually had the problem they were solving.</p>
<p>So I built a framework to guide every founder conversation I have. It&#x27;s the same structure I use before saying yes to any project. These questions filter out ideas that aren&#x27;t ready and clarify the ones that are.</p>
<h2>My Clarity Call Framework</h2>
<h3>Q1: What Problem Are You Solving?</h3>
<p>Every great SaaS starts with a single painful problem that demands a solution. Not a vague pain point. Not &quot;business inefficiency.&quot; A specific, concrete problem that makes someone&#x27;s day worse.</p>
<p>When I ask this question, I&#x27;m listening for specificity. &quot;Helping businesses be more productive&quot; tells me nothing. &quot;Stopping sales teams from losing leads because their CRM doesn&#x27;t sync with their email&quot; tells me everything.</p>
<p>If you can&#x27;t describe the problem in one clear sentence, you don&#x27;t understand it yet. And if you don&#x27;t understand it, you can&#x27;t build the right solution.</p>
<h3>Q2: Who&#x27;s Already Trying to Solve This?</h3>
<p>I want to know what your target users are doing right now, before your product exists. Are they cobbling together three different tools? Are they spending hours on manual processes? Are they paying for something expensive and hating it?</p>
<p>If they&#x27;re not doing anything, that&#x27;s a red flag. It means either the problem isn&#x27;t painful enough or they don&#x27;t recognize it as a problem. Both kill products. If the problem isn’t painful enough, they won’t pay for your product.</p>
<p>The best SaaS ideas replace something people are already desperately trying to solve. You&#x27;re not creating demand, you&#x27;re capturing it.</p>
<h3>Q3: What&#x27;s Your Timeline?</h3>
<p>The timeline tells me whether we&#x27;re chasing validation or scaling an existing proof. Are you testing an idea to see if anyone cares? Then we build the smallest possible version and get it in front of users fast. Are you scaling something that&#x27;s already working? Then we focus on stability and maintainability.</p>
<p>Most founders say &quot;as fast as possible&quot; but what they really need is &quot;as right as possible for this stage.&quot; Those require different approaches.</p>
<p>If you&#x27;re pre-revenue and haven&#x27;t talked to users, speed matters. If you have traction and paying customers, getting it right matters more. The timeline question forces clarity on what phase you&#x27;re actually in.</p>
<h3>Q4: What Happens If We Don&#x27;t Build Feature X?</h3>
<p>Adding as many features as possible in the first version of you product can be both tempting and damaging.</p>
<p>When you make assumptions about what users may want instead of building from their feedbacks, you risk <strong>spending months building something no one needs, and losing momentum before you even validate the core idea.</strong> To distinguish what’s actually a core feature to build I ask “What happens if we launch without this?&quot;</p>
<p>If the answer is &quot;Well, it would be better with it.&quot; That means it waits.</p>
<p>The only features that make it into V1 are the ones where the answer is &quot;Without this, the product doesn&#x27;t solve the problem.&quot; Everything else is a distraction from learning whether anyone wants what you&#x27;re building.</p>
<h3>Q5: Are You Ready to Be Wrong?</h3>
<p>I&#x27;ve worked with founders who want everything perfect before launch. Pixel-perfect design, every edge case handled, every feature polished. They&#x27;re terrified of looking unprofessional or getting criticized.</p>
<p>But in reality your first version will be wrong about something. Maybe the core feature, maybe the pricing, maybe who you thought your users were. You won&#x27;t know until real people use it.</p>
<p>The founders who succeed are the ones who ship imperfect products, watch what happens, and adapt. The ones who wait for perfection never ship at all.</p>
<p>So I ask this question directly: Are you ready to launch something imperfect and learn from it? If the answer is no, we&#x27;re not ready to build yet.</p>
<h2>What Happens After This Call</h2>
<p>This call often changes the direction of entire projects.</p>
<p>Founders come in thinking they need a developer. They leave realizing they need to adjust their product, messaging, or even the problem they&#x27;re solving.</p>
<p>That&#x27;s the point.</p>
<p>It&#x27;s much cheaper to fix an idea than to rebuild a product.</p>
<p>Sometimes we discover the problem isn&#x27;t validated yet. Go talk to 10 potential users first, then come back. Sometimes we realize the MVP they planned is still too big. Cut half the features and launch faster. Sometimes we find they&#x27;re solving the right problem but targeting the wrong user.</p>
<p>These conversations save months of wasted development. They prevent the situation where a founder burns $30K building something nobody wants, then has to start over.</p>
<p>Once we have clarity (once I understand the problem, who has it, what success looks like, and what the MVP actually needs to do) that&#x27;s when the Strategy Session starts. That&#x27;s where we decide how to build it, what tech to use, and how to get to V1 efficiently.</p>
<p>I&#x27;ll break that down in my next post.</p>
<h2>Final Take</h2>
<p>Most ideas don&#x27;t fail because of bad development. They fail because no one stopped to ask the right questions before writing code.</p>
<p>The Clarity Call isn&#x27;t about convincing you to build. It&#x27;s about making sure building is the right move. Sometimes the answer is yes, start now. Sometimes it&#x27;s yes, but adjust this first. Sometimes it&#x27;s no, not yet, go validate more.</p>
<p>All three outcomes save you money and time compared to building without clarity.</p>
<p>If you&#x27;re unsure whether your SaaS idea is ready to build, <a href="https://cal.com/mhaqnegahdar/discovery">book a Clarity Call with me</a>. We&#x27;ll figure out if it&#x27;s worth building at all.</p>
<p>And if you want to see how we take a validated idea and turn it into a build plan, read <a href="/blog/from-validated-idea-to-build-plan-my-strategy-call-framework">From Validated Idea to Build Plan</a>, where we go from &quot;should we build this&quot; to &quot;here&#x27;s exactly how we&#x27;ll build it.&quot;</p>
<p>Direction first. Execution second. That&#x27;s how products succeed.</p>]]></content:encoded>
      <pubDate>Sat, 18 Oct 2025 00:00:00 GMT</pubDate>
      <category>MVP &amp; Product Strategy</category>
    </item>
    <item>
      <title>From Validated Idea to Build Plan: My Strategy Call Framework</title>
      <link>https://mohamadh.xyz/blog/from-validated-idea-to-build-plan-my-strategy-call-framework</link>
      <guid isPermaLink="true">https://mohamadh.xyz/blog/from-validated-idea-to-build-plan-my-strategy-call-framework</guid>
      <description>The seven questions I use to turn a validated SaaS idea into a concrete technical plan, timeline, and budget before writing any code.</description>
      <content:encoded><![CDATA[<p>In the <a href="/blog/the-clarity-call-framework-for-validating-your-saas-idea">Clarity Call</a>, we decide if building is the right decision. But once we&#x27;ve validated the idea, it&#x27;s time for the Strategy Call.</p>
<p>This is where we go from &quot;Should we build this?&quot; to &quot;Here&#x27;s exactly how we&#x27;ll build it.&quot;</p>
<p>The goal isn&#x27;t just to gather requirements. It&#x27;s to align on your vision, pressure-test your assumptions, and create a plan that actually leads to success. Not just a product that launches, but one that works.</p>
<h2>Step 1: Pre-Call Research</h2>
<p>Before we talk, I dive deep into everything we&#x27;ve discussed so far. The problem you&#x27;re solving, the domain you&#x27;re in, your target market, your competition.</p>
<p>I&#x27;m not going into this blind. I&#x27;m coming prepared.</p>
<p>This isn&#x27;t just professional courtesy. It&#x27;s critical. When I understand your space before we speak, we don&#x27;t waste the call on basics. We go straight to the hard questions that determine whether this product succeeds or fails.</p>
<p>I&#x27;ll spot gaps in what we&#x27;ve covered and come ready with questions about anything that&#x27;s still unclear. By the time we start the Strategy Call, I&#x27;m not just listening to your vision, I&#x27;m ready to own it with you.</p>
<h2>Step 2: The Vision Deep Dive</h2>
<p>This is where most developers just collect a feature list and move on. That&#x27;s not how I approach it.</p>
<p>I need to understand your product so deeply that your vision becomes my vision. When we&#x27;re aligned on what success looks like, the build process becomes exponentially smoother. When we&#x27;re not, we waste months building the wrong thing.</p>
<p>Here are some of the questions that guide this conversation:</p>
<h3>Q1: Who feels this pain most?</h3>
<p>Not &quot;businesses&quot; or &quot;marketers.&quot; I need the specific person in the specific role who wakes up frustrated about this problem.</p>
<p>&quot;Sales managers who lose deals because their CRM doesn&#x27;t talk to their email&quot; is specific. &quot;People who need better productivity&quot; tells me nothing.</p>
<p>The clearer we are about who this is for, the better decisions we make about everything else, features, design, messaging, pricing.</p>
<h3>Q2: Walk me through their first 5 minutes using your product.</h3>
<p>From the moment they land on your site or open your app, what do they see? What do they click? What do they accomplish?</p>
<p>I want you to narrate their journey step by step. Because if you can&#x27;t clearly describe those first 5 minutes, we don&#x27;t understand the product yet.</p>
<p>This is where we discover if the user experience makes sense or if we&#x27;re asking too much too fast. It&#x27;s where we catch confusing flows before they&#x27;re built.</p>
<h3>Q3: What&#x27;s the ONE action that proves your product works?</h3>
<p>Every product has a core action. The thing that, when a user does it, they get value and understand why your product exists.</p>
<p>For a CRM, it&#x27;s closing a deal. For analytics software, it&#x27;s seeing an insight that changes a decision. For a task manager, it&#x27;s completing a task and feeling less overwhelmed.</p>
<p>What&#x27;s yours?</p>
<p>Everything else in your product supports this one action. If we don&#x27;t know what it is, we can&#x27;t prioritize features. We can&#x27;t design flows. We&#x27;re just building stuff and hoping it works.</p>
<h3>Q4: If you could only ship THREE features in V1, which three solve the core problem?</h3>
<p>This is where I force brutal prioritization.</p>
<p>Founders come to me with 15 features they think are essential. They&#x27;re not. Most are nice-to-haves that delay launch and confuse users.</p>
<p>So I make you choose three. Not five. Not &quot;well, these four are really important.&quot; Three.</p>
<p>If you can&#x27;t answer this immediately, we&#x27;re not ready to build yet. We need more clarity on what the MVP actually is.</p>
<p>Everything else waits for V2, V3, after we&#x27;ve validated that anyone cares about the core three.</p>
<h3>Q5: What are your constraints?</h3>
<p>Budget, timeline, integrations, technical requirements. These aren&#x27;t just logistics, they shape every decision we make.</p>
<p><strong>Budget range:</strong> This determines scope. I can&#x27;t plan a build without knowing if we have $10K or $50K to work with. Different budgets mean different approaches.</p>
<p><strong>Timeline:</strong> Is your launch deadline real (investor demo, conference, partnership) or flexible (you just want it done fast)? Real deadlines change how we prioritize. Flexible ones give us room to build right.</p>
<p><strong>Must-have integrations:</strong> Does this need to connect with Stripe? Specific APIs? Existing systems? These affect complexity and timeline.</p>
<p><strong>Technical requirements:</strong> Do you have preferences or limitations I need to know about? Existing infrastructure we need to work with?</p>
<p>Constraints aren&#x27;t bad. They clarify decisions. When we know the boundaries, we make better choices within them.</p>
<h3>Q6: What&#x27;s the biggest risk that could kill this product?</h3>
<p>This question separates founders who&#x27;ve thought deeply about their product from those who haven&#x27;t.</p>
<p>Is the risk that users won&#x27;t adopt it? That means we need to focus obsessively on onboarding and first-time user experience.</p>
<p>Is it technical complexity? That means we need to validate the hardest part first before building everything else.</p>
<p>Is it market timing or competition? That means speed matters more than polish.</p>
<p>Every product has a critical risk. When we identify it, we build the strategy around mitigating it. When we ignore it, we build something that looks good but fails anyway.</p>
<h3>Q7: How do we measure success?</h3>
<p>I&#x27;m not just building a product. I&#x27;m building something that needs to work.</p>
<p>What metrics matter? Signups? Conversion rate? Retention? Revenue?</p>
<p>What&#x27;s the goal for month 1? Month 3? Month 6?</p>
<p>If you don&#x27;t have answers yet, we figure them out together. Because &quot;build the product and see what happens&quot; isn&#x27;t a strategy. It&#x27;s gambling.</p>
<p>When we define success metrics upfront, we can design the product to drive those metrics. We can measure whether it&#x27;s working and adjust when it&#x27;s not.</p>
<h2>Step 3: What You&#x27;ll Get</h2>
<p>After this call, I spend 7-10 days creating the documents that turn our conversation into an executable plan.</p>
<h3>1. Product Blueprint (for you)</h3>
<p>This document shows exactly what we&#x27;re building, why we&#x27;re building it this way, and in what order.</p>
<p>It includes your target users, the core problem we&#x27;re solving, the three essential features for V1, the user flows, and the success metrics we&#x27;re targeting.</p>
<p>This ensures we&#x27;re completely aligned before any code is written. No surprises, no misunderstandings, no &quot;wait, I thought we were building X.&quot;</p>
<h3>2. Technical Specifications (for development)</h3>
<p>This is the detailed requirements document that guides actual development.</p>
<p>System architecture showing how data flows and how everything connects. Visual maps of how users move through the product step-by-step. Database structure and API design. Technical decisions explained in plain English so you understand why we&#x27;re building it this way.</p>
<p>This document works whether you build with me or take it to another developer. It&#x27;s yours.</p>
<h3>3. Build Plan &amp; Timeline</h3>
<p>Phase-by-phase breakdown showing what gets built when, what each phase costs, and what milestones trigger payment.</p>
<p>You&#x27;ll know exactly what you&#x27;re paying for and when you&#x27;ll see results. No vague &quot;it&#x27;ll take a few months&quot; estimates. Concrete timelines based on actual scope.</p>
<h3>4. Risk Assessment</h3>
<p>Potential technical challenges and how we&#x27;ll handle them.</p>
<p>If there&#x27;s a hard part (Complex integration, real-time features, scaling concerns) I call it out upfront and explain the approach. No surprises mid-build when something turns out harder than expected.</p>
<h3>5. Success Criteria</h3>
<p>How we&#x27;ll measure if this is working, from launch through the first 6 months.</p>
<p>What does success look like at 30 days? 90 days? 180 days? What metrics do we track? When do we know it&#x27;s time to iterate versus when we know it&#x27;s working?</p>
<p>This keeps us focused on outcomes, not just outputs.</p>
<h2>Step 4: The Proposal Review</h2>
<p>Once the documents are ready, we schedule another call. This is where I walk you through everything and make sure we&#x27;re still aligned.</p>
<p>If anything doesn&#x27;t feel right, we refine it together. This isn&#x27;t a &quot;take it or leave it&quot; proposal. It&#x27;s a collaborative plan that we both need to believe in.</p>
<p>Once we&#x27;re both confident in the plan, we decide whether to move forward.</p>
<p><strong>If we do:</strong> Payments are made in phases as we hit milestones. You only pay when we deliver tangible progress. No big upfront payment for promises.</p>
<p><strong>If we don&#x27;t:</strong> You walk away with the full technical specification. Take it to another developer, use it to fundraise, or revisit it later when timing is better. It&#x27;s yours either way.</p>
<h2>Final Take</h2>
<p>The Strategy Call isn&#x27;t requirements gathering. It&#x27;s strategic consulting.</p>
<p>I&#x27;m not just collecting what you want to build. I&#x27;m helping you figure out what you actually need to build, in what order, and how to measure if it&#x27;s working.</p>
<p>Most developers take whatever you ask for and build it. I ask the hard questions that determine whether what you&#x27;re asking for will actually succeed.</p>
<p>That&#x27;s the difference between a developer and a technical partner. Developers execute. Partners guide.</p>
<p>When we finish the Strategy Call, you won&#x27;t just have a plan to build your product. You&#x27;ll have clarity on whether that plan leads to success.</p>
<p>And if it doesn&#x27;t, we&#x27;ll adjust it until it does.</p>
<p><strong>Ready to turn your validated idea into a concrete build plan?</strong></p>
<p><a href="https://cal.com/mhaqnegahdar/strategy-call">Book a Strategy Call with me</a> and let&#x27;s create the roadmap for your product.</p>]]></content:encoded>
      <pubDate>Sat, 18 Oct 2025 00:00:00 GMT</pubDate>
      <category>MVP &amp; Product Strategy</category>
    </item>
    <item>
      <title>Build What Users Actually Need: An MVP Validation Framework</title>
      <link>https://mohamadh.xyz/blog/build-what-users-actually-need</link>
      <guid isPermaLink="true">https://mohamadh.xyz/blog/build-what-users-actually-need</guid>
      <description>Stop asking &apos;can we build feature X.&apos; Learn how to validate a real problem before writing code, and avoid feature bloat in your MVP.</description>
      <content:encoded><![CDATA[<p>Most founders ask &quot;Can we build feature X?&quot; Wrong question. The question is &quot;What problem are we solving?&quot;</p>
<p>You&#x27;re excited about a competitor&#x27;s feature or an idea you had. But building features before validating the problem wastes months and creates bloated products nobody uses.</p>
<p>I&#x27;ve watched it happen. Founders spend six months building dozens of features, launch, and get crickets. Not because the execution was bad, because they never validated if anyone had the problem.</p>
<h2>Why Problem-First Development Matters</h2>
<p>Every feature must solve a real pain point. Not a nice-to-have. Not something users might want someday. A real, painful problem they&#x27;re dealing with right now.</p>
<p>When you focus on problems first, you create simpler, more focused MVPs that users actually care about. Instead of building everything you think people might want, you build the one thing they desperately need. And that makes all the difference.</p>
<p>Here&#x27;s the reality in SaaS: users don&#x27;t stick around for nice-to-have features. They only stick around for painkillers. If your product isn&#x27;t solving a problem that genuinely hurts, no amount of polish or features will make them pay month after month.</p>
<h2>How to Validate Problems </h2>
<p>Before we write a single line of code, we need to validate if the problem is real.</p>
<p>A great way is to talk to your potential users. Not surveys. Actual conversations where you can hear the frustration. Ask <strong>&quot;How are you solving this today?&quot;</strong></p>
<p>If they&#x27;re not solving it at all, it&#x27;s not painful enough. If they&#x27;re using a complicated workaround or paying for an expensive tool they hate, that&#x27;s something.</p>
<p>In fact you should Look for these three things: <strong>frequency, frustration, spending</strong>. How often does this happen? How frustrated are they? Are they already spending time or money trying to solve it?</p>
<p><strong>If users aren&#x27;t trying to solve it manually, it&#x27;s not a big enough problem.</strong> The best products replace painful manual processes with automated solutions.</p>
<h2>Avoiding Feature Bloat</h2>
<p>Adding features too early weakens your product.</p>
<p>Every new feature adds complexity. Makes it harder to use, harder to maintain, harder to explain. And it distracts from your core value.</p>
<p>Try to follow the <strong>&quot;Core-Problem Rule&quot;</strong>: if a feature doesn&#x27;t make the main problem easier or faster to solve, it&#x27;s a distraction. Doesn&#x27;t matter how cool it is or how many competitors have it.</p>
<p>Example: A founder wanted time tracking, invoicing, team chat, file storage, and calendar integration before launch. I asked: &quot;What&#x27;s the core problem?&quot; They said &quot;helping small teams know what needs to be done and who&#x27;s doing it.&quot;</p>
<p>We stripped everything else. Launched with tasks, assignments, and a board view. Three features. Users loved it because it was focused.</p>
<p>If we&#x27;d launched with everything, we would&#x27;ve spent six more months building, confused early users, and probably failed.</p>
<h2>Final Take</h2>
<p>Every successful product starts with a problem so painful, people are already trying to solve it. The best developers don&#x27;t build more features, they remove everything that doesn&#x27;t serve the problem.</p>
<p>Your job as a founder isn&#x27;t to imagine what users might want. It&#x27;s to find what they&#x27;re desperately trying to solve today, and make that easier. When you nail that one problem, users will tell you what to build next. But you have to earn that trust by solving their actual pain first.</p>
<p>So before you ask &quot;What should we build?&quot; ask &quot;What problem are we solving, and is it painful enough that people are already trying to solve it?&quot; If you can&#x27;t answer that clearly, delay the build until you figure it out.</p>
<p>And honestly? That&#x27;s the best decision. Because validation is way cheaper than building the wrong product.</p>]]></content:encoded>
      <pubDate>Mon, 13 Oct 2025 00:00:00 GMT</pubDate>
      <category>MVP &amp; Product Strategy</category>
    </item>
    <item>
      <title>How I Overcame Imposter Syndrome to Land My First Dev Job</title>
      <link>https://mohamadh.xyz/blog/how-i-overcame-imposter-syndrome-to-land-my-first-dev-job</link>
      <guid isPermaLink="true">https://mohamadh.xyz/blog/how-i-overcame-imposter-syndrome-to-land-my-first-dev-job</guid>
      <description>A month of hesitation, then a targeted networking and application strategy that turned seven applications into three interviews.</description>
      <content:encoded><![CDATA[<p>Getting a job is the easiest thing you can do as a developer, and back then I had no idea about this fact. I had never done something like that so the whole process felt vague and horrifying. I had a strong portfolio, strong skills and also strong imposter syndrome and perfectionism that prevented me from sending my resume for one more month.</p>
<p>These are some of the objections I had for delaying sending my resume for work:</p>
<ul>
<li>What if I&#x27;m not skilled enough?</li>
<li>What do they even do in software companies?</li>
<li>What if I receive a task I can&#x27;t handle?</li>
<li>….</li>
</ul>
<p>So during that extra month I focused on three things. First, networking with other developers on LinkedIn, hoping they had an empty position at their companies. Second, sending my resume and asking for internships. Third, completing projects similar to real projects out there, hoping I&#x27;d acquire the skills to land a job.</p>
<h2>Networking on LinkedIn</h2>
<p>LinkedIn was the first ever social media I joined. I didn&#x27;t have any ideas about how to leverage it properly. But I got to connect with some amazing developers back then. I&#x27;d message them, send them my resume and ask them for advice on my journey. Even had a few coffee chats with some of them which was pretty enlightening. They had gone through that path before me so their advice was pretty helpful.</p>
<p>Based on their advice I updated my resume anytime I did a new project. I also went beyond just using the tools to actually understanding their systems under the hood. Things like understanding Component Tree, Rendering, States and more in React. Which came super handy in my first job interview later.</p>
<p>Another huge benefit of those conversations was that I got a real glimpse of how working as a developer in a software company would look like. They gave me a realistic view of what I needed to focus on in order to land my first job.</p>
<p>Never be afraid to reach out to people in tech and ask them for their experience. The tech community is so generous. They believe that by sharing their experience freely, they get to help expand this community. This means the more you share without expectations, the more it grows and more opportunities become available for everyone. Beautiful isn&#x27;t it!</p>
<h2>Doing Clone Projects to Learn</h2>
<p>One of the things most developers I spoke with recommended was to add more realistic projects to my resume. Which was a great idea for several reasons:</p>
<p><strong>It built real-world experience:</strong> Working on clone projects exposed me to actual project structures, API integrations, and design patterns used in production applications. Instead of simple todo apps, I was dealing with complex state management, authentication flows, and responsive layouts.</p>
<p><strong>It boosted my confidence:</strong> There&#x27;s something powerful about recreating a platform you use daily. When I successfully cloned Netflix&#x27;s UI and functionality, I realized I could build anything if I broke it down into smaller pieces.</p>
<p><strong>It showcased relevant skills:</strong> Employers could immediately see I understood modern development practices, not just basic concepts. These projects demonstrated I could work with real APIs, handle complex routing, and create polished user interfaces.</p>
<p>These two were my first ever cloned projects, I&#x27;ve written a clean README files for them and both are live if you wish to explore them:</p>
<p><strong>One mistake I see</strong> in those trying to break into this field is that they don’t make their projects live! Let me be brutally honest with you, nobody ever clones your repository and runs it locally to see what you’ve done. If you want them to stand out in your resume and actually be seen, you need to make them live.</p>
<h2>Writing and Sending Work Resumes</h2>
<p>For some time I was only sending my resume for internships. And I saw no results from that. Not even a single &quot;we are not taking interns at the moment&quot; kind of message. After doing more projects and speaking with other developers online, I finally decided to apply for jobs instead of internships. So I updated my resume:</p>
<p>Before <a href="https://ik.imagekit.io/mhaqnegahdar/website/blog/pdfs/resume.pdf?updatedAt=1758174736742">resume.pdf</a></p>
<p>After <a href="https://ik.imagekit.io/mhaqnegahdar/website/blog/pdfs/resume-2.pdf?updatedAt=1758174732574">resume-2.pdf</a></p>
<p>Besides the colors, the only thing that I changed was my profile section.</p>
<p>I also updated my portfolio website from this <a href="https://maxjn-next-portfolio.vercel.app/">https://maxjn-next-portfolio.vercel.app/</a></p>
<p>to this: <a href="https://maxjn-portfolio-first.pages.dev/">https://maxjn-portfolio-first.pages.dev/</a></p>
<p>(Back then if someone had told me one day I&#x27;d create websites like the one I have now, I&#x27;d have thought the guy had lost it)</p>
<p>The main change in my opinion wasn&#x27;t my website or my resume though, it was my mindset. I used to think I wasn&#x27;t good enough to start working right away. So I&#x27;d spray-and-pray for getting an internship.</p>
<p>This time from hundreds of jobs in the job listing website I targeted only 7 of them. Only the ones that matched my interests and skills. Also I adjusted my resume before applying for each one. For example if they had asked for someone skilled in Next.js and capable of handling complex states using Redux and skilled in Bootstrap, I&#x27;d put those three first. If it was a frontend position I&#x27;d remove MongoDB and Express.</p>
<p>Within a week I got 3 interviews out of 7 applications I had sent.</p>
<blockquote>
<p>With AI systems in place, I don&#x27;t recommend you use templates like mine for your resume. Look for ATS ready resumes instead. Something like this: <a href="https://ik.imagekit.io/mhaqnegahdar/website/blog/pdfs/Mohamad_Haqnegahdar_Resume.pdf">ATS Ready Resume</a></p>
</blockquote>
<h2>First Interview and Preparation</h2>
<p>I remember my first job interview like it was yesterday, stressful yet still a beautiful experience. It took me so long to get there but it felt like every action I took had prepared me for that moment. Those networking conversations and all coffee chats I had with other developers had improved my communication and soft skills without me even realizing. Those clone projects and research I had done on React fundamentals had prepared me for the technical aspect of the interview.</p>
<p>The only thing I did before the interview was to review all of that. And as always, YouTube was my savior. Just search like this &quot;[The Tool or Language] Interview Questions.&quot; For example &quot;React Interview Questions&quot; or &quot;JavaScript Interview Questions.&quot;</p>
<p>Most companies ask the same conventional questions you can easily find online. Because these are basically all they need from you in that job. So they won&#x27;t bother asking you about highly unlikely situations that might never happen or are not necessary for that specific position. You don&#x27;t need to look for unconventional job interview questions out there.</p>
<p>Other than that, be prepared to prove anything you&#x27;ve claimed on your resume. Any tools you said you can use or any soft skills you said you have. Explain things with detail and avoid short yes or no answers. If you&#x27;re asked about managing forms and you have experience with Formik, explain in detail how you leveraged it in one of your projects, which functions you used to achieve each feature and more.</p>
<h2>Getting My First Job, How I Felt</h2>
<p>It&#x27;s amazing how fast things we wanted for a long time become normal when we get them. I did a paid test work for 2 weeks, where I was responsible for creating 3 of their websites for their new clients. Thankfully I was able to do quality work on those websites and moved to sign the contract with them.</p>
<p>The moment I signed the contract I had so many mixed feelings. Am I going to be able to provide real value here? Can I make things better? Am I going to be stuck to X salary for a year now? I didn&#x27;t get an answer for the first two questions. But about the third one, something inside me said: &quot;don&#x27;t think about it, I&#x27;ll take care of that.&quot;</p>]]></content:encoded>
      <pubDate>Mon, 06 Oct 2025 00:00:00 GMT</pubDate>
      <category>Career Lessons</category>
    </item>
    <item>
      <title>How I Quadrupled My Developer Salary in One Year</title>
      <link>https://mohamadh.xyz/blog/how-i-quadrupled-my-developer-salary-in-one-year</link>
      <guid isPermaLink="true">https://mohamadh.xyz/blog/how-i-quadrupled-my-developer-salary-in-one-year</guid>
      <description>A real account of going from a junior frontend role to a senior full-stack position, four raises, in under twelve months.</description>
      <content:encoded><![CDATA[<p>&quot;What does a developer actually do working at a company?&quot; The most common question among developers in training or job seekers. It was also a big reason for my imposter syndrome back then. It&#x27;s indeed scary when you don&#x27;t know what might be waiting for you.</p>
<p>There are hundreds of different developer jobs out there, each with their own unique requirements depending on the project. While I can&#x27;t tell you this is the exact thing you can expect, I can share with you my own experience starting as a frontend developer to give you a rough idea about it.</p>
<h2>Paid Test Work (First 2 weeks)</h2>
<p>Even if it&#x27;s not your first job, as a new developer at a company you&#x27;ll start from the simplest tasks they have. This is so you can get familiar with their projects, and they can make sure about your skills and see if you are a fit for their team. These are tasks that if you can&#x27;t finish on time or properly, they can still cover for it on their own.</p>
<p>For me I was responsible for updating some features on their existing websites. And eventually completing 2 other websites for their clients. Nothing too difficult. They were happy with the quality and the speed of my work, so we moved forward to sign an annual contract.</p>
<h2>Onboarding (First 2 months)</h2>
<p>At this point, I was officially part of the team. We didn&#x27;t really have any documents and onboarding was like… Someone handed me a bunch of projects and asked me to figure them out  Yeah, that was it. In fact that&#x27;s the case in many companies.</p>
<p>Still I managed to figure them out. I was still responsible for working on their clients&#x27; websites and didn&#x27;t have any tasks on their CMS. I was a frontend developer, working on the simplest tasks possible, with the lowest salary possible for a dev. To be honest I was super happy and grateful about it. Even though I could see that most of my peers weren&#x27;t.</p>
<p>Many developers get disappointed after landing their first job. It&#x27;s not the glory they expected at all. Low salary, simple tasks, small teams, and eventually they lose their passion for making a difference with their work. I didn&#x27;t, and that was what made all the difference for me.</p>
<p>I worked from the bottom of my heart on those simple tasks. I remember I wouldn&#x27;t take breaks for lunch to finish our clients&#x27; work as fast as possible, with the best quality possible. My clean work made our clients super happy (see I made a difference in a position someone else would say wasn&#x27;t important at all). And happy clients means → Happy Employer. My work was seen there and I was able to prove myself that way.</p>
<h2>First Promotion</h2>
<p>Soon after getting seen as a capable frontend developer, a crucial role got empty. The senior full-stack developer working the night support position left all of a sudden, and I was offered to take that role temporarily so they could find an alternative.</p>
<p>My salary got doubled, so did my work. Night support was a demanding position. Other than working at night (8pm - 4am), you had to handle twice as many tasks as you&#x27;d do in the morning in real time. For each task there was a real customer waiting for the results, so mistakes could cost customers.</p>
<p>I accepted the challenge, and managed to handle the heavy workload and the pressure of that position very well. So well they were surprised actually. All the other developers in that position had quit within 2 - 4 months, and none had the performance I had. So the position that was supposed to be a 1-month temporary position became my permanent position.</p>
<p><em>Our company was working on a CMS for Canadian businesses. Technical base was in Iran, sales and marketing in Canada, so to technically support Canada in the morning someone had to work at night here (in Iran)</em></p>
<h2>Second Promotion</h2>
<p>Night support position was originally a full-stack position and I&#x27;d receive backend tasks I could not handle at that point. This was frustrating. I wanted to be able to support the job as much as I could, so I started learning backend there.</p>
<p>It wasn&#x27;t that hard. I had some prior experience with backend and I was passionate to learn. Also the company fully supported me in this. While I was working at night, each morning I&#x27;d head to the company to learn backend from our senior backend developer.</p>
<p>I&#x27;m not going to lie to you, it was hard. Working at nights and learning in the morning. Still I was more than eager to learn. All I wanted at that time was to learn more and do more and become a better developer.</p>
<p>In 2 months, when I could eventually handle the backend tasks at night, I got my second raise.</p>
<h2>Third Raise</h2>
<p>By then I understood the game. Improve processes and bring more value → make customers happier → make your employer happier → ask for what you deserve. It sounds simple.</p>
<p>I was a solo developer in that position. And I was aware of everything going on in that company. Challenges, inconsistencies, processes and systems that could be improved. I took one of the most costly tasks in our company and implemented some new guidelines for the development process.</p>
<p>Those guidelines improved the process speed and quality and eventually our customers&#x27; satisfaction regarding the software by 70%. And I&#x27;m guessing you already know what happened next.</p>
<h2>Fourth Raise (I&#x27;m leaving)</h2>
<p>As the only night support developer who had stood in that position for more than 4 months (close to one year by that time) I could see the value that I was giving to the company. And honestly I felt it didn&#x27;t match. Part of it was because I had less than 1 year official experience, and in my opinion, that was totally unfair!</p>
<p>So a few months after the third raise, I asked for the fourth raise. But this time I didn&#x27;t let them decide what I was worth, I gave them the minimum number that I knew I was worth. Which was still twice as much as they were paying me at the moment. This request was immediately rejected though. And they received my immediate resignation letter.</p>
<p>Staying firm on the number paid off. Apparently I was actually worth the amount I had asked and even more for the company. Because in the end they offered me more than the amount I had asked + a new contract just to stay :)</p>
<h2>My take on this</h2>
<p>You know who believes it all starts with luck? Those who are not willing to put in enough effort to improve themselves first. Ask for those challenges that no one dares to accept. Do your best to create the best results. After giving the results, ask for what you know you deserve. If you don&#x27;t ask first, no one is willing to give it to you. And never be fully dependent on your job. Make it so you can leave any time you desire. This is what you should call job security, not the ability to stay at a job for 30 years.</p>
<p>In the next part, let&#x27;s see when you know you need to quit.</p>]]></content:encoded>
      <pubDate>Mon, 29 Sep 2025 00:00:00 GMT</pubDate>
      <category>Career Lessons</category>
    </item>
    <item>
      <title>What It Actually Takes to Launch Your Own SaaS: A Founder&apos;s Guide</title>
      <link>https://mohamadh.xyz/blog/what-it-takes-to-launch-your-own-saas</link>
      <guid isPermaLink="true">https://mohamadh.xyz/blog/what-it-takes-to-launch-your-own-saas</guid>
      <description>A practical breakdown of SaaS business models, how to find a real idea, and how to build and sell your first version, without the fluff.</description>
      <content:encoded><![CDATA[<p>When I started thinking about building my first SaaS, I had no clue where to begin. I kept reading success stories of founders making millions, but they all skipped the messy middle parts. The real question I had was: &quot;Okay, but HOW exactly do you go from idea to paying customers?&quot;</p>
<p>After studying dozens of SaaS journeys and analyzing what works, I realized something important. While no founder&#x27;s path is exactly the same, there are still a lot of similarities in them. For us to actually learn something we can implement from them, we must focus on the essential parts that are the same across all their stories.</p>
<p>So let me break it down for you, step by step, without the fluff.</p>
<h2>What is SaaS?</h2>
<ol>
<li><strong>No need for installation:</strong><br/>
You can access it on your phone or desktop via browser</li>
<li><strong>You pay monthly or annually:</strong> <br/>
It&#x27;s an online service, so you pay for it on a recurring basis</li>
<li><strong>You have your own account there:</strong>  <br/>
Each user has their own account and data on the platform</li>
<li><strong>Don&#x27;t need to install updates manually:</strong> <br/>
Developers deliver improvements and fixes to you centrally</li>
<li><strong>Can easily support more users:</strong> <br/>
From 100 → 1000 and above, these platforms scale without you noticing</li>
</ol>
<p><strong>Simple version</strong>: A SaaS product is software you use online (no installs), pay for monthly or yearly, and it keeps improving automatically while serving thousands of users at once.</p>
<p>Examples you use daily: Zoom, Loom, Figma, Slack, Canva, Notion.</p>
<h2>SaaS Business Model</h2>
<h3>B2C (Business to Consumer)</h3>
<p>If your target customers are people rather than businesses, you&#x27;re thinking about a B2C SaaS.</p>
<p><strong>Real talk</strong>: These are usually rare for 2 main reasons:</p>
<ol>
<li><strong>It works best when you get a large number of customers:</strong><br/>
This is because consumers are cheap (they won&#x27;t pay more than $10-15/month), so you need massive scale to make it work. The high churn rate makes it nearly impossible to work at small scale.
<br/>
</li>
<li><strong>The math is brutal:</strong><br/>
Let&#x27;s look at a fitness tracking app charging $9/month. To make just $8K/month, you&#x27;d need 890 paying customers, which means roughly 30,000 free users (assuming 3% conversion), which means 150,000+ website visitors. And $8K won&#x27;t even pay for one employee!</li>
</ol>
<h3>B2B (Business to Business)</h3>
<p>Now we&#x27;re talking! When you sell to businesses, everything changes.
<strong>Firstly</strong>, you get to charge higher prices, because businesses face more expensive problems and they are willing to pay $50, $100, even $1000+ per month if you solve a real problem for them.</p>
<p><strong>Secondly</strong>, the churn rate is much lower when working with businesses. Companies don&#x27;t cancel as easily as consumers do. <strong>Finally</strong>, you need way fewer customers to make the same revenue.</p>
<p><strong>Example</strong>: That same $8K/month? You only need 100 customers at $80/month instead of 890 customers at $9/month. The math actually works.</p>
<h3>B2-Both (The Secret Weapon)</h3>
<p>This is where it gets interesting. Some companies serve both consumers AND businesses with a dual funnel:</p>
<p>In this  model prosumers paying $15-20/month are considered Bottom of the funnel. More than revenue, serving them builds the brand and helps create word-of-mouth.</p>
<p>While enterprise clients paying $500-2000+/month are the main stream of revenue.</p>
<p>Companies like Podscribe (podcast hosting) crush it with this model. They get steady growth from small customers and explosive jumps from enterprise deals.</p>
<h2>Why SaaS is Such a Great Business Model</h2>
<p>Let me be honest with you, SaaS might be the best business model ever created. Here&#x27;s why:</p>
<ol>
<li><strong>Recurring revenue:</strong><br/>
Instead of selling once, customers pay you every month. It&#x27;s like having a salary as a business owner.</li>
<li><strong>Scalable without inventory:</strong><br/>
You build it once, sell it to millions. No warehouses, no shipping, no physical products.</li>
<li><strong>High profit margins:</strong> <br/>
After you build it, your main costs are hosting and support. Everything else is profit.</li>
<li><strong>Predictable growth:</strong> <br/>
With monthly recurring revenue (MRR), you can actually predict your growth and plan ahead.</li>
<li><strong>Global reach from day one</strong>:<br/>
Anyone with internet can be your customer. Your market is literally the entire world.</li>
</ol>
<h2>How to Come Up with SaaS Ideas</h2>
<p>This is where most people get stuck. They think they need some revolutionary idea that&#x27;ll change the world, but honestly? That&#x27;s not how it works.</p>
<p>I&#x27;ve studied dozens of successful SaaS stories, and here&#x27;s what I found: the best ideas usually come from really boring, everyday problems. Let me share the approaches that actually work.</p>
<ol>
<li><strong>Start with your own frustrations:</strong><br/>
This is probably the most reliable way to find a real problem worth solving. Look at your daily work routine - what makes you want to throw your laptop out the window? What tasks do you find yourself doing over and over again manually?Basecamp started because a design agency got tired of managing projects through email. Buffer happened because someone was sick of manually posting to social media all day. These weren&#x27;t groundbreaking innovations - they were just solutions to annoying problems.<br/></li>
<li><strong>Use your day job as research:</strong><br/>
Your workplace is probably full of inefficient processes that everyone just accepts as &quot;how things are done.&quot; I&#x27;ve seen so many successful SaaS companies that started this way. Slack was literally an internal tool at a gaming company before it became what it is today.The beautiful thing about this approach is that you already understand the problem deeply, and you know other people in similar roles who probably have the same frustration.<br/></li>
<li><strong>Take something general and make it specific:</strong><br/>
Instead of building &quot;another project management tool,&quot; why not build project management specifically for construction companies? Or scheduling software just for hair salons?This works because when you get specific, you can charge more, face less competition, and build something people actually love instead of just tolerate. FreshBooks didn&#x27;t try to compete with QuickBooks on everything - they just focused on being the best accounting software for freelancers.<br/></li>
<li><strong>Look for spaces where everyone hates the big player.</strong><br/>
You know those industries where there&#x27;s one dominant company that everyone complains about but feels stuck with? That&#x27;s pure gold right there.If you see forum threads full of people saying &quot;I hate using [company] but there&#x27;s no alternative,&quot; you&#x27;ve found your opportunity. Shopify crushed it by being a better alternative to the clunky e-commerce platforms that existed back then.</li>
</ol>
<p>The key is focusing on problems you actually understand. Don&#x27;t try to solve problems for industries you&#x27;ve never been part of - you&#x27;ll miss all the nuances that matter.</p>
<h2>How to Build Your SaaS</h2>
<p>Here&#x27;s the thing about building a SaaS, you don&#x27;t need to become a coding genius overnight. I&#x27;ve seen too many people get stuck in &quot;learning mode&quot; for months when they could have been testing their idea.</p>
<p><strong>If you want to learn to code</strong> (like I did with React), that&#x27;s totally fine. It gives you complete control and means you&#x27;re not dependent on anyone else. But be realistic about the timeline - it took me weeks to get comfortable with React, and that was with me going full-time on it.</p>
<p><strong>If you have some budget</strong>, hiring developers can get you to market faster. Just know that communication is everything here. The clearer you are about what you want, the better result you&#x27;ll get. This approach gives you more time to focus on marketing your product as well.</p>
<p><strong>If you&#x27;re just validating, start with no-code tools.</strong> Developers tend to look down on no-code, but Bubble, Webflow, and similar tools have gotten genuinely powerful.</p>
<p>The smart move is using no-code to validate that people actually want what you&#x27;re building, then moving to proper development once you have paying customers. Why spend months coding something nobody wants?</p>
<p><strong>And now with AI tools</strong>, the game has changed completely. GitHub Copilot and tools like Cursor can help you build way faster than traditional coding, even if you&#x27;re not an expert yet. It&#x27;s like having a coding buddy who never gets tired of your questions.</p>
<p>Remember: your first version doesn&#x27;t need to be perfect. It just needs to solve the core problem well enough that people will pay for it.</p>
<h2>How to Sell Your SaaS</h2>
<p>Selling SaaS is different from selling anything else. People aren&#x27;t just buying your product - they&#x27;re buying a relationship with your company that they hope will last for years.</p>
<p><strong>The free trial approach works</strong>, but you have to be smart about it. Don&#x27;t make it too long (people forget), but make sure it&#x27;s long enough for them to see real value. I&#x27;ve seen 7-14 days work well for most products.</p>
<p>The real magic happens in those first few days. You need to get them to that &quot;aha moment&quot; as quickly as possible - the moment where they realize your tool actually solves their problem. Then you follow up consistently with helpful content, not just &quot;hey, your trial expires soon&quot; messages.</p>
<p><strong>Freemium can work too</strong>, but it&#x27;s trickier. You need to give away enough value that people actually use your product, but hold back enough that they hit real limits and need to upgrade. Slack does this perfectly - you can use it free, but you hit message limits that make upgrading a no-brainer for active teams.</p>
<p><strong>For B2B sales</strong>, it&#x27;s all about understanding their problem better than they do. Don&#x27;t lead with features - lead with outcomes. Instead of &quot;our tool has advanced reporting,&quot; try &quot;see exactly which marketing campaigns are actually bringing in customers.&quot;</p>
<p>The biggest mistake I see is people trying to sell to everyone. Pick a specific type of customer, understand their exact problem, and show them how their life gets better with your solution. It&#x27;s way easier to go deep with one customer type than to go wide with everyone.</p>
<p>And here&#x27;s something that took me a while to learn: people buy when they&#x27;re ready, not when you&#x27;re ready to sell. Sometimes that means following up for months, staying helpful, and being there when they finally hit the pain point that makes them want to pay for a solution.</p>
<h2>My Take on This</h2>
<p>Building a SaaS is genuinely hard. But it&#x27;s also one of the most rewarding things you can do as an entrepreneur.</p>
<p><strong>Here&#x27;s what I&#x27;ve learned from studying successful SaaS founders:</strong></p>
<ol>
<li><strong>Start smaller than you think</strong> <br/>
Most first ideas are too big. Make it smaller.</li>
<li><strong>Talk to customers constantly</strong> <br/>
The most successful founders do this weekly, not once at launch.</li>
<li><strong>Don&#x27;t build in a cave</strong> <br/>
Share your progress, get feedback, iterate quickly.</li>
<li><strong>Focus on one metric</strong> <br/>
Revenue. Everything else is vanity metrics until you&#x27;re profitable.</li>
<li><strong>Prepare for the long game</strong> <br/>
Most successful SaaS companies take 2-3 years to really take off.</li>
</ol>
<p>But here&#x27;s the beautiful part: once you get it right, SaaS gives you something most businesses can&#x27;t - predictable, growing, recurring revenue that works while you sleep.</p>
<p><strong>The bottom line</strong>: You don&#x27;t need to be the next Slack or Notion. You just need to solve one problem really well for a specific group of people who are willing to pay for the solution.</p>
<p>And if you&#x27;re sitting there thinking &quot;I&#x27;m not ready yet&quot; - nobody ever is. The most successful founders weren&#x27;t ready when they started either. But the best time to plant a tree was 20 years ago. The second best time is now.</p>
<p>So pick a problem, start small, and get building. Your future customers are waiting for someone like you to solve their problem.</p>
<blockquote>
<p>&quot;The best SaaS businesses aren&#x27;t built by the most experienced founders. They&#x27;re built by the founders who start before they feel ready and keep iterating until they get it right.&quot;</p>
</blockquote>
<p>Now stop reading and start building.</p>]]></content:encoded>
      <pubDate>Fri, 26 Sep 2025 00:00:00 GMT</pubDate>
      <category>MVP &amp; Product Strategy</category>
    </item>
    <item>
      <title>A 4-Step Framework to Learn Any Skill With Zero Budget</title>
      <link>https://mohamadh.xyz/blog/learn-any-skill-for-free</link>
      <guid isPermaLink="true">https://mohamadh.xyz/blog/learn-any-skill-for-free</guid>
      <description>How I learned web development with no paid resources, landed a job in six months, and earned four raises in the first year.</description>
      <content:encoded><![CDATA[<p>When I started learning web development, I was basically broke. However, I still managed to learn this profitable skill, landed a job in 6 months and even got 4 raises within my 1st year.</p>
<p>The good part, I did all of that without spending a penny on paid tutorials. Not that they are bad, I just didn&#x27;t have the privilege at that time. So if you are in a similar situation at the moment, in this post, I&#x27;m going to break it down and explain how you can learn any profitable skill step-by-step.</p>
<h2>The 4-Step Learning Framework</h2>
<h3>1. Find a roadmap</h3>
<p>One of the reasons why self-learning a topic is so difficult for many is that they don&#x27;t know where to start. When you don&#x27;t have a clear path to follow, staying consistent becomes impossible.</p>
<p>So in the first step, find a roadmap for learning whatever it is you&#x27;re trying to learn. You can do that by asking experts in that specific field or just searching on the Internet, or even asking AI. I&#x27;ll explain each one in detail:</p>
<ol>
<li><strong>Searching the Internet</strong> (personal recommendation)
When I started, this whole AI vibe didn&#x27;t exist yet, so I went with searching on Google. You can simply just search &quot;[The Skill you are trying to learn] roadmap&quot; to get tons of roadmaps online. <a href="http://roadmap.sh">roadmap.sh</a> was the one I picked due to its accuracy and elaborations. You can also track your progress there which is a helpful feature.Don&#x27;t limit your search to just Google, YouTube is also an amazing source where you can also hear from others&#x27; experience.</li>
<li><strong>Asking AI</strong>
When you&#x27;re trying to ask AI, it&#x27;s important to give it enough context to receive the most accurate and helpful results. This is an example prompt I write when asking AI for learning roadmaps:
<pre><code class="language-bash">I want to learn [SKILL/TOPIC] to [SPECIFIC GOAL].

My current level: [BEGINNER/INTERMEDIATE/ADVANCED]
Available time: [X HOURS PER DAY/WEEK]
Timeline: [X MONTHS]

Create a step-by-step learning roadmap with:
1. Main phases (3-5 phases max)
2. Key concepts for each phase
3. Estimated time for each phase
4. Prerequisites between phases
</code></pre>
</li>
<li><strong>Asking other experts</strong>
You can also achieve something similar to this when you search for learning roadmaps on YouTube. Yet it can be very helpful to speak with experts in the local market in person.</li>
</ol>
<p>My last note on figuring out the path: Do not get obsessed over perfecting your roadmap. I&#x27;ll explain why in step 4.</p>
<h3>2. Find Resources</h3>
<p>I found free resources on YouTube with 10 times the quality of paid resources! The competition between creators is what has made this quality possible.</p>
<p>While we can&#x27;t argue about the quality of tutorials on YouTube, even among those great tutorials, here are some tips to distinguish between good and the best:</p>
<ol>
<li>Make sure you go with the most updated resources</li>
<li>Preferably go with playlists that cover the whole topic</li>
<li>Value practical tutorials over just theory</li>
</ol>
<p>Try to look for practical resources that teach you while doing a real project that you can also follow along. However don&#x27;t be satisfied with watching or even copying those tutorials. You need to gain real EXPERIENCE.</p>
<h3>3. Define Real Projects</h3>
<p>You might have already heard the term &quot;tutorial hell.&quot; This is where you get stuck watching tutorials over and over again without being able to do the job yourself. To break this vicious cycle you need to take real action, and I mean <em>REAL ACTION.</em></p>
<p>For each topic you learn, define a real task that serves your main goal. I&#x27;ll explain this using a real world example. If you&#x27;re trying to become a frontend developer, you need to be able to build a website on your own. That&#x27;s your main goal. Now I&#x27;ll break it into smaller tasks as you learn:</p>
<ul>
<li>Finished HTML, CSS, JS → Create a landing page</li>
<li>Learned React → Rebuild that landing with React components</li>
<li>Learned React Hooks → Make the page interactive</li>
<li>Learned State Management → Add complex functionality</li>
<li>…</li>
</ul>
<p>This is a win-win-win process. First you build real skills, second you build your portfolio for job hunting, third you discover your knowledge gaps, which results in refining your path and iterating.</p>
<h3>4. Refine and Iterate</h3>
<p><strong>Your First Roadmap Won&#x27;t Be Your Last</strong>
Remember when I said don&#x27;t get obsessed over perfecting your roadmap in step one? Now let me explain why. As long as you are outside the game, you never get to actually understand it no matter how hard you try.</p>
<p><strong>You Have to Play to Understand</strong>
The best way to understand the game is to simply play. <em>Take Action</em>. As you do, you&#x27;ll come across things you do or don&#x27;t like about it. You&#x27;ll find other opportunities or spaces you decide to explore, or gaps you need to fill.</p>
<p>As you do, you&#x27;ll come across things you do or don&#x27;t like, find new opportunities to explore, or discover gaps you need to fill. After refining your final goal, it&#x27;s time to turn back to step one: &quot;Finding a Roadmap.&quot;</p>
<p>This is the Learning Cycle: Learn → Execute → Struggle → Learn (repeat). And no matter what we&#x27;re doing my friend, continuous improvement remains everything.</p>
<h2>My final take on this</h2>
<p>When I finally started job hunting, I did not feel ready at all, yet I did it (because I was pressed for money ). Even if you&#x27;re not, I still recommend you act at 80% ready. Because your imposter syndrome and perfectionism will never let that number go any higher.</p>
<p>And never forget that continuous improvement mindset. I was able to get 4 raises because even after landing my first job I was still learning. I improved my skills and became a more valuable asset over time. To the point that when I left after one year I was worth 4x as much as when I had started.</p>
<p>So start with step 1 and remain consistent. Don&#x27;t hesitate to reach out if you have any questions. I&#x27;d be happy to help.</p>
<blockquote>
<p>&quot;Recruiters are not looking for experts who have years of experience (even if they say so in their job ads). They are looking for someone who is skilled enough to do their job&quot;</p>
</blockquote>
<p>So if you can prove that you&#x27;re skilled enough to do the job, there&#x27;s nothing between you and your dream job.
I say this confidently because I&#x27;ve already done it and still doing it myself.</p>
<p>Do you have any questions about the learning cycle? comment them bellow</p>]]></content:encoded>
      <pubDate>Wed, 24 Sep 2025 00:00:00 GMT</pubDate>
      <category>Career Lessons</category>
    </item>
    <item>
      <title>How Learning Web Development Changed My Life in One Year</title>
      <link>https://mohamadh.xyz/blog/how-learning-web-development-changed-my-life-in-one-year</link>
      <guid isPermaLink="true">https://mohamadh.xyz/blog/how-learning-web-development-changed-my-life-in-one-year</guid>
      <description>From five years of computer science theory to a self-taught path through React and Next.js that actually led to a job.</description>
      <content:encoded><![CDATA[<p>Becoming a software developer changed my life in many aspects I never thought possible. This path became easy for me due to the generosity of the tech community. To pay my debt to this amazing community, I&#x27;ve decided to write down my experience here on a series of blog posts.</p>
<p>If my writings can help and encourage even 1 person to continue, I call it a win.</p>
<h3>Back story from school</h3>
<p>I was always fascinated with computers and smartphones as a kid. So, I studied computer science in high school, and software during my Associates. But, to be honest, I couldn&#x27;t create a single piece of software at the end of that 5-year study!</p>
<p>School was all theory. 60% scattered technical lessons (design, mobile development, web, different languages basics). 40% nontechnical useless nonsense. It was cool, and I liked the lessons, but I was more into action I would say.</p>
<p>So after 5 years of studying, it had become obvious to me that school wasn&#x27;t actually going to help me get into the software development world. So in a classic act, I quit school!</p>
<p>Till today I still haven&#x27;t told anyone in my family circle about what I did to school. I was a full fund top-ranked student. So, if anyone had found out about my little secret, I had to endure hearing nonsense advice that I was ruining my life. And I simply didn&#x27;t feel like it at all. I had more important stuff I wanted to focus on.</p>
<h3>How the learning journey started</h3>
<p>With school out of the way I could devote all my time and energy to teaching myself how to code. It wasn&#x27;t that straightforward though, I spent 3 months learning WordPress from a video course only to realize I hated it.</p>
<p>While I was into writing code and building logic I had full control over, WordPress was about making things work with minimal effort, no code, no full control, no actual logic building…. Felt like a waste of time back then, even though it wasn&#x27;t.</p>
<p>During that course I also learned the essentials of frontend development (HTML, CSS, JS). However much more important than that, I learned &quot;how to search&quot; and &quot;how to learn&quot; as a developer. (Yeah, that course actually covered those topics)</p>
<h3>Switching to React</h3>
<p>I had no idea what React actually was, I&#x27;d just heard some rumors about it. So I searched on YouTube, watched a few tutorials and got familiar with the syntax and the overall idea. And I fell in Love With It .</p>
<p>Finding React felt like a breakthrough for me. Previously, I was creating custom WordPress themes with HTML, CSS, and adding interactions using jQuery and its selectors - which was this long, boring, repetitive process.</p>
<p>But React! It transformed that whole workflow into something smooth, clean, and actually enjoyable. The idea of writing one component and reusing it everywhere it was needed, while having full control over what I was writing, made it look like heaven in my eyes.</p>
<p>At that point, I searched for a comprehensive front-end development roadmap and followed it step by step. The approach I took—systematically breaking down skills, finding quality resources, and staying consistent—is something I&#x27;ve written about extensively in this <a href="https://mohamadh.xyz/blog/learn-any-skill-for-free">blog post</a>.</p>
<p>So I won&#x27;t dive too deep into the learning methodology here, but what made the biggest difference was finding high-quality YouTube tutorials. I primarily followed two channels: The <a href="https://www.youtube.com/channel/UCW5YeuERMmlnqo4oq8vwUpg">Net Ninja</a> by <a href="https://github.com/iamshaunjp">Shaun</a> and <a href="https://www.youtube.com/channel/UC80PWRj_ZU8Zu0HSMNVwKWw">Codevolution</a> by <a href="https://github.com/gopinav">Vishwas</a>. Both Offer updated, well-structured content that I honestly found more practical than many paid courses I&#x27;d encountered.</p>
<h3>Learning React:</h3>
<p>I learned React using Net Ninja tutorials and actually understood it from Codevolution tutorials. Net Ninja&#x27;s React tutorial was a project-based tutorial, so I first learned building SPAs (Single Page Applications) with all React had to offer. Then Codevolution&#x27;s React tutorial dived deeper into how things worked under the hood. That deep understanding I got from React has been helping me every time I get stuck till today.</p>
<p>Speed was my priority, because I needed a job ASAP. I learned React basics in a week or two and did a todo list using it. Every time I learned a new concept such as hooks, states, data fetching, routing, etc… I made sure to create a project using it.</p>
<p>These are some of the early projects I did with React. I made sure to write clear and structured README files for them, I also made them live. I wanted to showcase them in my resume no matter how small:</p>
<ul>
<li><a href="https://github.com/mhaqnegahdar/dojo-my-first-react-app">dojo-my-first-react-app</a></li>
<li><a href="https://github.com/mhaqnegahdar/CakeShop-redux">CakeShop-redux</a></li>
<li><a href="https://github.com/mhaqnegahdar/weather-forcast">weather-forcast</a></li>
<li><a href="https://github.com/mhaqnegahdar/memmory-game-react?tab=readme-ov-file">memmory-game-react</a></li>
</ul>
<h3>Learning React Libraries</h3>
<p>As I said getting a job was my priority, I made sure to learn as many packages that I knew I&#x27;d need when working on a real project. Things like react-router-dom, redux, react-query, tailwind, material-ui:</p>
<ul>
<li><a href="https://github.com/mhaqnegahdar/jobarouter">jobarouter</a></li>
<li><a href="https://github.com/mhaqnegahdar/hook-form">hook-form</a></li>
<li><a href="https://github.com/mhaqnegahdar/todolist-redux">todolist-redux</a></li>
<li><a href="https://github.com/mhaqnegahdar/note-material-ui">note-material-ui</a></li>
<li><a href="https://github.com/mhaqnegahdar/starwars-react">starwars-react</a></li>
</ul>
<h3>Starting with Next.js Framework</h3>
<p>I managed to master all a junior needed to know from React in one month. According to the roadmap that I had and questions that I&#x27;d ask other developers on LinkedIn, I decided that it was time to pick a React Framework. Next.js was just very on demand and had just released v13 and its new app router. Everyone was talking about it. So I gave it a try. And in the first try, I again fell in love .</p>
<p>I enjoyed that things were getting easier and easier each time. React felt much easier than WordPress. Now Next.js took it to a whole new level. It felt like my savior at that time. No more react-router-dom, instead we had file-based routing. Server Side rendering, making IPL (Initial Page Load) much faster, and dozens of other features.</p>
<p>Like React, it took me almost a week or two to learn the basics of Next.js. The first project I created using Next.js was a user list application. It fetched user data from jsonplaceholder API:</p>
<ul>
<li><a href="https://github.com/mhaqnegahdar/userlist-next">userlist-next</a></li>
</ul>
<p>And the second project I built was my own first ever portfolio website:</p>
<ul>
<li><a href="https://github.com/mhaqnegahdar/next-portfolio">next-portfolio</a></li>
</ul>
<p>I was ready to put myself out there and get that first job.</p>]]></content:encoded>
      <pubDate>Wed, 17 Sep 2025 00:00:00 GMT</pubDate>
      <category>Career Lessons</category>
    </item>
  </channel>
</rss>