<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Tech, finance, and app insights]]></title><description><![CDATA[Building apps, analyzing markets, sharing insights. Frontend Tech Lead in Singapore building mobile apps for Indian and global markets. Writing about tech and finance from a developer's perspective.]]></description><link>https://blog.venba.dev</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1757901275661/3601150e-df8a-4fed-9c43-b949cce6af2f.png</url><title>Tech, finance, and app insights</title><link>https://blog.venba.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Mon, 18 May 2026 18:01:01 GMT</lastBuildDate><atom:link href="https://blog.venba.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Why I Stopped Writing Detailed Prompts and Started Using Claude Agents]]></title><description><![CDATA[I wrote the perfect prompt. Every detail. Every requirement. "Create a Flutter login screen with BLoC pattern, clean architecture, proper error handling, dependency injection..."
The result? Decent code, but not quite right. Another attempt with more...]]></description><link>https://blog.venba.dev/why-i-stopped-writing-detailed-prompts-and-started-using-claude-agents</link><guid isPermaLink="true">https://blog.venba.dev/why-i-stopped-writing-detailed-prompts-and-started-using-claude-agents</guid><category><![CDATA[AI]]></category><category><![CDATA[claude-code]]></category><category><![CDATA[Flutter]]></category><category><![CDATA[Productivity]]></category><dc:creator><![CDATA[Petchiraj]]></dc:creator><pubDate>Thu, 18 Sep 2025 07:43:52 GMT</pubDate><content:encoded><![CDATA[<p>I wrote the perfect prompt. Every detail. Every requirement. "Create a Flutter login screen with BLoC pattern, clean architecture, proper error handling, dependency injection..."</p>
<p>The result? Decent code, but not quite right. Another attempt with more details. Still not there.</p>
<p>Then I discovered Claude agents. One line: "Use flutter-developer agent." Done. Production-ready code.</p>
<h2 id="heading-the-problem-nobody-talks-about">The Problem Nobody Talks About</h2>
<p>You know that feeling when you ask Claude to write Flutter code and it gives you something that works but isn't <em>right</em>? No proper state management. No error handling. Just a basic StatefulWidget that makes you cringe.</p>
<h2 id="heading-why-this-happens">Why This Happens</h2>
<p>I asked Claude directly. The response was eye-opening:</p>
<p><strong>Specialized agents</strong> come with:</p>
<ul>
<li>Pre-configured prompts for specific frameworks (<a target="_blank" href="https://docs.flutter.dev/ai/ai-rules">Flutter even provides official AI rules</a>)</li>
<li>Built-in best practices and conventions</li>
<li>Industry standards by default</li>
</ul>
<p><strong>Generic Claude</strong> is intentionally flexible:</p>
<ul>
<li>No framework-specific defaults</li>
<li>Treats each request neutrally</li>
<li>Defaults to basic, functional code</li>
</ul>
<h2 id="heading-the-bigger-picture">The Bigger Picture</h2>
<p>This isn't a limitation—it's actually a feature. Claude's flexibility lets you specify exactly what standards and patterns you want, rather than being locked into one opinionated setup. The trade-off is that you need to be more explicit about your requirements.</p>
<p>But who has time to be explicit about everything, every time?</p>
<h2 id="heading-real-world-example">Real-World Example</h2>
<h3 id="heading-generic-claude">Generic Claude:</h3>
<pre><code>Write a Flutter login screen <span class="hljs-keyword">with</span>:
- BLoC pattern
- Clean architecture
- <span class="hljs-built_in">Error</span> handling
- Form validation
- Unit tests
</code></pre><p>Result: Basic implementation. Missing details. Needs work.</p>
<h3 id="heading-with-agent">With Agent:</h3>
<pre><code>@flutter-developer create a login screen
</code></pre><p>Result: Everything above, plus proper folder structure, dependency injection, loading states. Production-ready.</p>
<h2 id="heading-the-agents-i-actually-use">The Agents I Actually Use</h2>
<p><strong>Daily:</strong></p>
<ul>
<li><code>@flutter-developer</code> - Flutter features</li>
<li><code>@debugger</code> - Bug fixes</li>
<li><code>@test-automator</code> - Test coverage</li>
<li><code>@code-reviewer</code> - Quality checks</li>
</ul>
<p><strong>Specialized:</strong></p>
<ul>
<li><code>@security-auditor</code> - Security review</li>
<li><code>@performance-engineer</code> - Optimization</li>
<li><code>@database-optimizer</code> - Query tuning</li>
</ul>
<h2 id="heading-the-quality-gap">The Quality Gap</h2>
<p><strong>Generic Claude:</strong> Basic code that works but needs refactoring</p>
<p><strong>Agents:</strong> Production-ready with proper architecture and tests</p>
<h2 id="heading-when-to-use-what">When to Use What</h2>
<p><strong>Generic Claude:</strong> Quick explanations, one-liners, small snippets</p>
<p><strong>Agents:</strong> Real features, production code, complex implementations</p>
<h2 id="heading-common-mistakes">Common Mistakes</h2>
<ol>
<li>Using wrong agent (<code>@javascript-pro</code> for React instead of <code>@frontend-developer</code>)</li>
<li>Over-controlling the agent instead of letting it use its expertise</li>
<li>Not using review agents before commits</li>
</ol>
<h2 id="heading-the-bottom-line">The Bottom Line</h2>
<p>AI models work best with clear context about structure, standards, and requirements. Agents have all that built in.</p>
<p>Why write detailed prompts when you can call the specialist who already knows?</p>
<p>Generic Claude is the brilliant generalist. Agents are the specialists. Both have their place. But when you need production code, you know which to choose.</p>
<p>Next time you're writing a long prompt, ask: Is there an agent for this?</p>
<p>There probably is. And it knows the best practices better than your prompt ever will.</p>
]]></content:encoded></item><item><title><![CDATA[The No-BS Guide to Term Insurance in India]]></title><description><![CDATA[Three months. That's how long I spent researching term insurance before finally buying it in 2020.
Here's everything useful I learned, written to stay relevant regardless of when you're reading this.
1️⃣ Do You Even Need It?
You NEED it if:

You have...]]></description><link>https://blog.venba.dev/term-insurance-guide-india</link><guid isPermaLink="true">https://blog.venba.dev/term-insurance-guide-india</guid><category><![CDATA[insurance]]></category><category><![CDATA[term insurance and life insurance]]></category><category><![CDATA[personal finance]]></category><dc:creator><![CDATA[Petchiraj]]></dc:creator><pubDate>Mon, 15 Sep 2025 06:59:28 GMT</pubDate><content:encoded><![CDATA[<p>Three months. That's how long I spent researching term insurance before finally buying it in 2020.</p>
<p>Here's everything useful I learned, written to stay relevant regardless of when you're reading this.</p>
<h2 id="heading-1-do-you-even-need-it">1️⃣ Do You Even Need It?</h2>
<p><strong>You NEED it if:</strong></p>
<ul>
<li>You have spouse/kids</li>
<li>Parents depend on your income</li>
<li>You have loans (home/personal/education)</li>
<li>You're the sole breadwinner</li>
<li>Family can't maintain lifestyle without your income</li>
</ul>
<p><strong>You DON'T need it if:</strong></p>
<ul>
<li>Single with no dependents</li>
<li>Spouse earns enough</li>
<li>Parents are financially independent</li>
<li>Your wealth &gt; 25x annual expenses</li>
<li>Zero debts or liabilities</li>
</ul>
<p><strong>Bottom line:</strong> Even one dependent = Get term insurance this week</p>
<h2 id="heading-2-how-much-coverage">2️⃣ How Much Coverage?</h2>
<h3 id="heading-the-formula">The Formula</h3>
<pre><code>Coverage = Annual Expenses × <span class="hljs-number">10</span><span class="hljs-number">-15</span> + All Debts + Future Goals - Liquid Assets
</code></pre><h3 id="heading-real-example-2024-numbers">Real Example (2024 Numbers)</h3>
<p>Let's say you're 32, married with 1 kid, earning ₹12 lakhs/year:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Component</td><td>Calculation</td><td>Amount</td></tr>
</thead>
<tbody>
<tr>
<td><strong>Monthly expenses</strong></td><td>₹50,000/month × 12</td><td>= ₹6 lakhs/year</td></tr>
<tr>
<td><strong>Basic coverage needed</strong></td><td>₹6 lakhs × 12 years</td><td>= ₹72 lakhs</td></tr>
<tr>
<td><strong>+ Home loan outstanding</strong></td><td>Current balance</td><td>+ ₹40 lakhs</td></tr>
<tr>
<td><strong>+ Kid's education</strong></td><td>Today's cost ₹10L × 2.5</td><td>+ ₹25 lakhs</td></tr>
<tr>
<td><strong>+ Kid's marriage</strong></td><td>Today's cost ₹10L × 3</td><td>+ ₹30 lakhs</td></tr>
<tr>
<td><strong>+ Spouse emergency fund</strong></td><td>5 years expenses</td><td>+ ₹30 lakhs</td></tr>
<tr>
<td><strong>- Current investments</strong></td><td>FD + MF + Stocks</td><td>- ₹20 lakhs</td></tr>
<tr>
<td><strong>Total Coverage Needed</strong></td><td></td><td><strong>≈ ₹2.5 crores</strong></td></tr>
</tbody>
</table>
</div><p>*Using 12x multiplier for moderate coverage. Can go up to 15x for safer coverage.</p>
<blockquote>
<p>⚠️ <strong>These numbers will change!</strong> In 2030, the same ₹50,000/month lifestyle might cost ₹75,000/month. That's why we use multipliers (10-15x) not fixed amounts. The formula stays same, numbers change with inflation.</p>
</blockquote>
<h3 id="heading-quick-rules-of-thumb">Quick Rules of Thumb</h3>
<ul>
<li><strong>Minimum:</strong> 10x annual income</li>
<li><strong>Comfortable:</strong> 15x annual income</li>
<li><strong>Conservative:</strong> 20x annual income</li>
<li><strong>Review:</strong> Every 3 years or major life event</li>
</ul>
<h2 id="heading-3-policy-duration">3️⃣ Policy Duration</h2>
<p><strong>Default:</strong> Till retirement age (typically 60-65)</p>
<p><strong>Stop paying when:</strong></p>
<ul>
<li>Your wealth &gt; coverage amount</li>
<li>No more dependents</li>
<li>Achieved 25x annual expenses saved (FIRE number)</li>
</ul>
<blockquote>
<p>⚠️ Premium increases with age: 25 yo vs 35 yo = 2x difference, 25 yo vs 45 yo = 4-5x difference</p>
</blockquote>
<h2 id="heading-4-which-plan-to-choose">4️⃣ Which Plan to Choose?</h2>
<h3 id="heading-get-this">Get This</h3>
<p>✅ <strong>Basic Term Insurance</strong> - Pure death benefit, nothing else</p>
<h3 id="heading-avoid-these">Avoid These</h3>
<p>❌ Money-back plans
❌ Investment + Insurance combos
❌ Whole life insurance
❌ Any plan promising "returns"</p>
<h3 id="heading-how-to-save-money">How to Save Money</h3>
<p><strong>Payment frequency matters:</strong></p>
<ul>
<li>Yearly: Best rate (baseline)</li>
<li>Half-yearly: 2% extra</li>
<li>Quarterly: 4% extra</li>
<li>Monthly: 5% extra</li>
</ul>
<p><strong>Buy online:</strong> Save 5-10% (no agent commission)</p>
<h2 id="heading-5-choosing-the-insurer">5️⃣ Choosing the Insurer</h2>
<h3 id="heading-must-check-these-numbers">Must Check These Numbers</h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Metric</td><td>Good Score</td><td>Source</td></tr>
</thead>
<tbody>
<tr>
<td>Claim Settlement Ratio</td><td>&gt; 95%</td><td>IRDAI report</td></tr>
<tr>
<td>Solvency Ratio</td><td>&gt; 1.5</td><td>Annual report</td></tr>
<tr>
<td>Persistency Ratio</td><td>&gt; 60%</td><td>IRDAI data</td></tr>
</tbody>
</table>
</div><h3 id="heading-red-flags">Red Flags 🚩</h3>
<ul>
<li>Agent pushing investment products</li>
<li>"Guaranteed returns" promises</li>
<li>Pressure tactics ("offer ends today")</li>
</ul>
<h2 id="heading-6-skip-the-riders">6️⃣ Skip the Riders</h2>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Rider Offered</td><td>Why I Skipped</td></tr>
</thead>
<tbody>
<tr>
<td>Accidental death benefit</td><td>Probability too low</td></tr>
<tr>
<td>Critical illness cover</td><td>Separate health insurance is better</td></tr>
<tr>
<td>Premium waiver</td><td>Adds 20-30% to cost</td></tr>
</tbody>
</table>
</div><p><strong>My approach:</strong> Basic term + Comprehensive health insurance</p>
<h2 id="heading-7-avoid-claim-rejection">7️⃣ Avoid Claim Rejection</h2>
<h3 id="heading-never-hide-even-small-things">Never Hide (Even Small Things)</h3>
<ul>
<li>Smoking (even occasionally)</li>
<li>Drinking (even socially)</li>
<li>Medical history (even minor)</li>
<li>Family health issues</li>
<li>Actual income</li>
<li>Previous policies</li>
</ul>
<h3 id="heading-top-rejection-reasons">Top Rejection Reasons</h3>
<ol>
<li><strong>Lied about lifestyle</strong> - 35% of rejections</li>
<li><strong>Hidden medical history</strong> - 25%</li>
<li><strong>Policy lapsed</strong> - 15%</li>
<li><strong>Wrong income declared</strong> - 10%</li>
<li><strong>Death in first 2 years</strong> - Contestability period</li>
</ol>
<h2 id="heading-8-after-you-buy">8️⃣ After You Buy</h2>
<p><strong>Do immediately:</strong></p>
<ul>
<li>Add nominee with full details</li>
<li>Tell nominee about the policy</li>
<li>Save policy number in multiple places</li>
<li>Set auto-pay for premiums</li>
<li>Upload documents to cloud</li>
</ul>
<p><strong>Keep ready for claims:</strong></p>
<ul>
<li>Death certificate</li>
<li>Policy document</li>
<li>Nominee KYC</li>
<li>Medical records</li>
<li>FIR (if accident)</li>
</ul>
<h2 id="heading-9-my-decision-framework-2020">9️⃣ My Decision Framework (2020)</h2>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Decision</td><td>What I Chose</td><td>Why This Matters</td></tr>
</thead>
<tbody>
<tr>
<td><strong>Company</strong></td><td>HDFC Life</td><td>98% claim settlement ratio</td></tr>
<tr>
<td><strong>Plan</strong></td><td>Basic term (Click 2 Protect)</td><td>No investment mix, pure insurance</td></tr>
<tr>
<td><strong>Coverage</strong></td><td>₹1 crore</td><td>Was earning ₹12L/year, had ₹50L loans</td></tr>
<tr>
<td><strong>Duration</strong></td><td>30 years (till 60)</td><td>Standard retirement age</td></tr>
<tr>
<td><strong>Premium</strong></td><td>₹14,000/year</td><td>Could have got ₹11,000 elsewhere</td></tr>
<tr>
<td><strong>Channel</strong></td><td>Online direct</td><td>Saved 5.5% vs agent</td></tr>
</tbody>
</table>
</div><h3 id="heading-the-trade-off-i-made">The Trade-off I Made</h3>
<ul>
<li>Max Life quoted ₹11,000/year (20% cheaper)</li>
<li>HDFC Life was ₹14,000/year</li>
<li>Chose HDFC for better claim settlement (98% vs 94%)</li>
<li>Extra ₹3,000/year = ₹90,000 over 30 years</li>
<li>Worth it? For peace of mind, absolutely</li>
</ul>
<blockquote>
<p>📝 <strong>Note:</strong> These premiums are from 2020 for a 30-year-old non-smoker. Your premium will differ based on age, health, and year of purchase.</p>
</blockquote>
<h3 id="heading-how-to-decide-in-any-year">How to Decide in Any Year</h3>
<ol>
<li>List top 5 insurers by claim settlement ratio</li>
<li>Get quotes from all online</li>
<li>Pick the one with best claims record (not cheapest)</li>
<li>Buy the largest coverage you can afford</li>
<li>Pay annually if possible</li>
</ol>
<h2 id="heading-the-30-second-summary">The 30-Second Summary</h2>
<ol>
<li><strong>Need it?</strong> Yes, if anyone depends on you</li>
<li><strong>How much?</strong> Annual expenses × 10-15 + debts</li>
<li><strong>Which type?</strong> Basic term plan, no riders</li>
<li><strong>Where?</strong> Online, direct from insurer</li>
<li><strong>When?</strong> Now. Every year = higher premium</li>
</ol>
<hr />
<p><strong>Final thought:</strong> Term insurance is boring. That's the point. Get it, forget it, build wealth.</p>
]]></content:encoded></item><item><title><![CDATA[That Time My "Safe" Investment Got Frozen]]></title><description><![CDATA[April 23, 2020. I'm checking my portfolio during a coffee break, and there it is - a notification that makes my heart skip. Franklin Templeton has frozen six debt funds. My "ultra-safe" investment is locked. No withdrawals allowed.
My money. Stuck. I...]]></description><link>https://blog.venba.dev/that-time-my-safe-investment-got-frozen</link><guid isPermaLink="true">https://blog.venba.dev/that-time-my-safe-investment-got-frozen</guid><category><![CDATA[Investing]]></category><category><![CDATA[personal finance]]></category><category><![CDATA[debt funds]]></category><dc:creator><![CDATA[Petchiraj]]></dc:creator><pubDate>Mon, 15 Sep 2025 04:03:50 GMT</pubDate><content:encoded><![CDATA[<p>April 23, 2020. I'm checking my portfolio during a coffee break, and there it is - a notification that makes my heart skip. Franklin Templeton has frozen six debt funds. My "ultra-safe" investment is locked. No withdrawals allowed.</p>
<p>My money. Stuck. In a "safe" fund.</p>
<h2 id="heading-the-setup">The Setup</h2>
<p>Like many developers, I'm good with logic but cautious with money. Stock markets? Too volatile. Crypto? Don't even start. I wanted something boring and predictable - better than my 3.5% savings account but without the drama.</p>
<p>Enter Franklin Ultra Short Duration Fund. The pitch was perfect:</p>
<ul>
<li>Better returns than FDs (7-8% vs 5-6%)</li>
<li>"Ultra short" = super safe, right?</li>
<li>Liquid whenever you need it</li>
<li>Franklin Templeton - big global brand, 25+ years in India</li>
</ul>
<p>I did my homework. Or so I thought. Star ratings, past returns, fund size - all looked solid. Moved a decent chunk of my emergency fund there in 2019.</p>
<h2 id="heading-the-crash">The Crash</h2>
<p>Then COVID hit. And Franklin did something nobody expected.</p>
<p>They didn't just lose value. They literally shut down. "Winding up" they called it. Six debt schemes. ₹26,000 crores locked. My fund included.</p>
<p>My money wasn't just stuck. It was frozen with no timeline for return.</p>
<h2 id="heading-the-lessons-nobody-tells-you">The Lessons Nobody Tells You</h2>
<h3 id="heading-1-low-risk-doesnt-mean-no-risk">1. "Low Risk" Doesn't Mean "No Risk"</h3>
<p>My fund was investing in corporate bonds. When companies started struggling during COVID, those bonds became worthless paper. The fund couldn't sell them even if they wanted to.</p>
<p>It's like having a perfectly good laptop that nobody wants to buy. The value exists only if someone's willing to pay.</p>
<h3 id="heading-2-liquidity-can-vanish-overnight">2. Liquidity Can Vanish Overnight</h3>
<p>"You can withdraw anytime" - except when you can't. When everyone rushes for the exit, the door gets jammed. Too many withdrawal requests, and the system simply stops.</p>
<h3 id="heading-3-big-names-can-fall-too">3. Big Names Can Fall Too</h3>
<p>Franklin Templeton. Since 1996 in India. ₹1 lakh crore under management.</p>
<p>If they can freeze funds, anyone can. Brand value means nothing when fundamentals break.</p>
<h2 id="heading-what-actually-happened-to-my-money">What Actually Happened to My Money</h2>
<p>The waiting game began. Monthly updates. Legal proceedings. Partial payments.</p>
<ul>
<li>First payment: 15% after 8 months</li>
<li>Second payment: 20% after a year</li>
<li>Trickles continued for 2+ years</li>
</ul>
<p>Final recovery: About 92% of my investment. No returns. Just principal, minus 8%.</p>
<p>Meanwhile, my friend's boring FD gave him 6% annually with zero drama.</p>
<h2 id="heading-the-real-irony">The Real Irony</h2>
<p>As a developer, I live by the rule: never trust a single point of failure. Yet with money, I trusted a single fund manager's decisions.</p>
<p>I spent more time reviewing a ₹500 gadget on Amazon than researching where to park lakhs.</p>
<h2 id="heading-what-i-do-now">What I Do Now</h2>
<p>I keep things simple. Emergency money stays in boring places - savings accounts and FDs. No fancy schemes, no chasing extra returns.</p>
<p>For growth? I finally made peace with equity markets. Index funds mostly. The volatility I was avoiding? Turns out it's more predictable than "safe" debt funds freezing overnight.</p>
<p>The irony isn't lost on me.</p>
<h2 id="heading-the-real-lesson">The Real Lesson</h2>
<p>Debt funds aren't evil. But they're not fixed deposits with better returns. They're market-linked products with real risks.</p>
<p>That marketing term "Ultra Short Duration"? It refers to bond maturity, not your access to money.</p>
<p>Would I invest in debt funds again? Yes, but:</p>
<ul>
<li>Never emergency money</li>
<li>Never more than 10% in one fund</li>
<li>Only money I can forget for 3+ years</li>
<li>Always checking what they're actually buying</li>
</ul>
<h2 id="heading-looking-back">Looking Back</h2>
<p>2020 taught everyone different lessons. Mine was simple: There's no free lunch in finance.</p>
<p>Every percent above FD rates comes with proportional risk. The question isn't whether risk exists - it's whether you understand and accept it.</p>
<p>Today, my frozen funds story is a dinner conversation starter. Back then, it was sleepless nights wondering if I'd ever see that money again.</p>
<p>The 8% I lost? Consider it tuition fees for Financial Reality 101.</p>
]]></content:encoded></item><item><title><![CDATA[Hello World]]></title><description><![CDATA[Hello World
After years of shipping code, I'm finally shipping words.
Who Am I
Frontend Tech Lead based in Singapore, building mobile applications for global markets. I write code by day and analyze markets by night.
What I Write About

Tech: Develop...]]></description><link>https://blog.venba.dev/hello-world</link><guid isPermaLink="true">https://blog.venba.dev/hello-world</guid><category><![CDATA[introduction]]></category><category><![CDATA[technology]]></category><category><![CDATA[development]]></category><dc:creator><![CDATA[Petchiraj]]></dc:creator><pubDate>Mon, 15 Sep 2025 03:28:20 GMT</pubDate><content:encoded><![CDATA[<h1 id="heading-hello-world">Hello World</h1>
<p>After years of shipping code, I'm finally shipping words.</p>
<h2 id="heading-who-am-i">Who Am I</h2>
<p>Frontend Tech Lead based in Singapore, building mobile applications for global markets. I write code by day and analyze markets by night.</p>
<h2 id="heading-what-i-write-about">What I Write About</h2>
<ul>
<li><strong>Tech</strong>: Development insights, architecture patterns, and engineering lessons learned</li>
<li><strong>Finance</strong>: Market observations from a developer's perspective</li>
<li><strong>Product</strong>: Building things that matter</li>
</ul>
<h2 id="heading-why-this-blog">Why This Blog</h2>
<p>Code tells computers what to do. Words tell humans why it matters.</p>
<p>This is where I share both.</p>
]]></content:encoded></item></channel></rss>