{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Notes from production, Venus Paneliya",
  "home_page_url": "https://venuspaneliya.com/writing/",
  "feed_url": "https://venuspaneliya.com/feed.json",
  "description": "For founders: what AI tools skip, and what it costs later.",
  "icon": "https://venuspaneliya.com/assets/icon-512.png",
  "favicon": "https://venuspaneliya.com/favicon.ico",
  "language": "en",
  "authors": [
    {
      "name": "Venus Paneliya",
      "url": "https://venuspaneliya.com/about/",
      "avatar": "https://venuspaneliya.com/assets/venus-paneliya.webp"
    }
  ],
  "items": [
    {
      "id": "https://venuspaneliya.com/writing/should-i-hire-a-developer-or-use-ai/",
      "url": "https://venuspaneliya.com/writing/should-i-hire-a-developer-or-use-ai/",
      "title": "Should I hire a developer or use AI to build my product?",
      "summary": "A founder asked me last week: “Should I hire a developer or use AI to build my product?” My answer: both. But not the way you think.",
      "content_html": "<p>A founder asked me last week: “Should I hire a developer or use AI to build my product?”</p>\n<p>My answer: both. But not the way you think.</p>\n<p>Using AI tools to build your product is smart. They’re fast. They’re cheap. And for many use cases, the output is genuinely good.</p>\n<p>But here’s what I keep seeing.</p>\n<p>Founders use AI to build Version 1. It works. They launch. Users sign up. Revenue starts coming in.</p>\n<p>Then they need Version 2. More features. Better performance. Security improvements. Compliance requirements from a new enterprise customer.</p>\n<p>And they hit a wall.</p>\n<p>The AI-generated code wasn’t structured for extension. Adding Feature B requires understanding how Feature A was built. But the founder didn’t build Feature A. The AI did. And the AI doesn’t remember why it made the choices it made.</p>\n<p>There’s no documentation. There’s no architectural reasoning. There’s just code that works until it doesn’t.</p>\n<p>This is where the hybrid model makes sense.</p>\n<p>Use AI tools for the initial build. Move fast. Validate the idea. Get to market.</p>\n<p>Then bring in a developer who can do 3 things.</p>\n<p>First, review what the AI built. Identify the gaps in security, error handling, and architecture that AI tools consistently miss.</p>\n<p>Second, restructure the foundation. Make the codebase ready for the next 12 months of features, not just the next feature.</p>\n<p>Third, own the ongoing development. Someone who understands the full system, makes architecture decisions, and ships production-ready code without needing constant direction.</p>\n<p>AI tools are the best first developer you’ll ever have. But they’re not the last developer you’ll need.</p>\n<p>The founders who win are the ones who know when to switch from “AI building” to “human owning.”</p>\n<p>What’s your approach? Are you building with AI tools, with a developer, or both?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-should-i-hire-a-developer-or-use-ai.jpg",
      "tags": [
        "Founders"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/five-products-five-lessons/",
      "url": "https://venuspaneliya.com/writing/five-products-five-lessons/",
      "title": "5 products I shipped in the last 12 months",
      "summary": "5 products I shipped in the last 12 months. Not a portfolio. Not a resume.",
      "content_html": "<p>5 products I shipped in the last 12 months.</p>\n<p>Not a portfolio.<br>Not a resume.</p>\n<p>Each one taught me something different about building for founders.</p>\n<p>Product 1: A creator platform processing $10K+ per month in payouts for 200+ creators.</p>\n<p>Lesson: Payments aren&#39;t a feature. They&#39;re infrastructure.</p>\n<p>We moved payout state from Stripe&#39;s API into our own database.</p>\n<ul><li>Zero missed payouts.</li><li>Founder stopped worrying about creator payments.</li><li>Community grew to 1,000+ members.</li></ul>\n<p>Product 2: An InsurTech quote engine where quotes took over 10 minutes.</p>\n<p>Lesson: Slow isn&#39;t a server problem. It&#39;s an architecture problem.</p>\n<ul><li>Added a caching layer.</li><li>Switched API calls from sequential to parallel.</li><li>Quote delivery dropped below 2 minutes.</li><li>Support calls about speed nearly disappeared.</li></ul>\n<p>Product 3: An AI form builder for a multi-tenant SaaS platform.</p>\n<p>Lesson: AI features without cost controls are a ticking time bomb.</p>\n<ul><li>Added server-side token validation.</li><li>Introduced workspace-level rate limiting.</li><li>Manual editing dropped 60%.</li><li>OpenAI costs stayed predictable.</li></ul>\n<p>Product 4: An immigration case management platform handling hundreds of active cases.</p>\n<p>Lesson: The best feature is the one that eliminates the support ticket.</p>\n<p>We surfaced the information users kept calling about.</p>\n<ul><li>Support queries dropped 40%.</li><li>No chatbot required.</li></ul>\n<p>Product 5: An EdTech platform built on a non-profit budget.</p>\n<p>Lesson: Constraints force better decisions.</p>\n<ul><li>Serverless architecture reduced infrastructure costs by 60-70%.</li><li>Prioritized 3 launch features instead of 10.</li><li>Shipped on time, under budget, with a foundation built to scale.</li></ul>\n<p>Different industries.<br>Different budgets.<br>Different challenges.</p>\n<p>The pattern was the same every time.</p>\n<ul><li>One developer.</li><li>Full ownership.</li><li>Production-ready software.</li><li>Founder stays focused on growing the business.</li></ul>\n<p>If you&#39;re building a SaaS product and need someone who works this way, my DMs are open.</p>\n<p>Or <a href=\"https://cal.com/venuspaneliya/intro\" rel=\"noopener\">book a call</a>.</p>\n<p>Which of these five lessons resonates most with where your product is right now?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-five-products-five-lessons.jpg",
      "tags": [
        "Founders",
        "Stripe Connect",
        "Redis",
        "OpenAI API",
        "Token and cost controls"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/six-questions-check-a-codebase/",
      "url": "https://venuspaneliya.com/writing/six-questions-check-a-codebase/",
      "title": "Six questions to check a codebase without reading it",
      "summary": "You can’t read code. That’s fine. You can still evaluate whether your codebase is healthy or a ticking time bomb. You just need to ask the right questions.",
      "content_html": "<p>You can’t read code. That’s fine.</p>\n<p>You can still evaluate whether your codebase is healthy or a ticking time bomb. You just need to ask the right questions.</p>\n<p>Most non-technical founders rely entirely on their developer’s word when it comes to code quality. “It’s fine” or “we’re in good shape” is what they hear. Until something breaks. Then it’s “well, we have some technical debt.”</p>\n<p>I put together 6 questions you can ask without understanding a single line of code. Each one reveals something specific about the health of your product.</p>\n<p>No jargon. No technical knowledge required. Just questions that force honest answers.</p>\n<p>Save this. Share it with a founder friend who’s working with a developer right now.</p>\n<p>Non-technical founders: what question do you wish you’d asked your developer before signing the contract?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-six-questions-check-a-codebase.jpg",
      "tags": [
        "Founders"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/edtech-on-a-non-profit-budget/",
      "url": "https://venuspaneliya.com/writing/edtech-on-a-non-profit-budget/",
      "title": "An EdTech platform on a non-profit budget",
      "summary": "A non-profit founder needed an EdTech platform built. Budget was tight.",
      "content_html": "<p>A non-profit founder needed an EdTech platform built.</p>\n<p>Budget was tight.</p>\n<p>Here&#39;s how we made it work.</p>\n<p>The founder had a clear vision.</p>\n<p>An online learning platform for kids with interactive math exercises, progress tracking for teachers and parents, and community features.</p>\n<p>The budget was a fraction of what most agencies would quote.</p>\n<p>Most developers would have said, &quot;Cut features.&quot;</p>\n<p>I said, &quot;Let&#39;s prioritize differently.&quot;</p>\n<p>We started by identifying the three features that mattered for launch.</p>\n<ul><li>Feature 1: The core learning experience. Interactive math exercises that kids could complete independently. If this didn&#39;t work well, nothing else mattered.</li><li>Feature 2: A teacher dashboard. Simple progress tracking showing which students completed which exercises and where they struggled. Not a full analytics suite. Just enough to know who needed help.</li><li>Feature 3: Parent access. A read-only view of their child&#39;s progress. No editing. No complex permissions. Just visibility.</li></ul>\n<p>Everything else went onto a post-launch list.</p>\n<ul><li>Community features</li><li>Gamification</li><li>Advanced analytics</li><li>Notification system</li></ul>\n<p>Good ideas.</p>\n<p>Not launch-critical.</p>\n<p>Then we made architecture decisions that reduced cost without compromising quality.</p>\n<ul><li>Serverless infrastructure. Resources scaled with usage, cutting infrastructure costs by roughly 60-70% compared to traditional hosting.</li><li>Simple authentication. No social login. No SSO. Just secure email and password authentication, saving about a week of development time.</li></ul>\n<p>The platform launched on time.</p>\n<p>Infrastructure costs stayed under $50 per month for the first 500 users.</p>\n<p>The foundation was solid enough that adding features later didn&#39;t require rebuilding.</p>\n<p>Here&#39;s the lesson.</p>\n<p>Tight budgets force better architecture decisions.</p>\n<p>When you can&#39;t afford to build everything, you&#39;re forced to build the right things.</p>\n<p>And when infrastructure costs matter, you choose architectures that scale efficiently instead of architectures that are simply easy to set up.</p>\n<p>Constraints aren&#39;t limitations.</p>\n<p>They&#39;re design inputs.</p>\n<p>Have you ever built something on a tight budget that turned out better because of the constraint?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-edtech-on-a-non-profit-budget.jpg",
      "tags": [
        "Cloud",
        "Authentication and access control"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/most-expensive-hire-second-developer/",
      "url": "https://venuspaneliya.com/writing/most-expensive-hire-second-developer/",
      "title": "The most expensive hire is the second developer",
      "summary": "The most expensive hire a startup founder makes isn't the first developer. It's the second one. The one hired to fix what the first one built. I've seen this pattern repeat so many times it's almost predictable.",
      "content_html": "<p>The most expensive hire a startup founder makes isn&#39;t the first developer.</p>\n<p>It&#39;s the second one.<br>The one hired to fix what the first one built.<br>I&#39;ve seen this pattern repeat so many times it&#39;s almost predictable.</p>\n<p>Here&#39;s how it goes.</p>\n<p>Stage 1</p>\n<p>The founder hires a developer. Usually the cheapest option. Budget is tight. Timeline is aggressive.</p>\n<p>The developer builds a working product. Screens load. Features work. The founder is happy.</p>\n<p>Stage 2</p>\n<p>The product gets users. Real users behave differently than demo users.</p>\n<ul><li>They click things they&#39;re not supposed to.</li><li>They enter data that breaks forms.</li><li>They try to pay with expired cards.</li><li>They use the product on mobile when it was only tested on desktop.</li></ul>\n<p>Bugs start appearing. The developer patches them. Then more appear. Each patch introduces a new problem because the original architecture wasn&#39;t built for real-world complexity.</p>\n<p>Stage 3</p>\n<p>The founder wants to add features. The developer says it&#39;ll take 3 months.</p>\n<p>The founder asks why.</p>\n<p>The answer?</p>\n<p>Adding Feature B requires rebuilding Feature A first. And Feature A is tangled with Features C and D.</p>\n<p>Stage 4</p>\n<p>The founder hires Developer 2.</p>\n<ul><li>Month 1: Understand the existing codebase.</li><li>Month 2: Untangle what needs to change.</li><li>Month 3: Build the feature that should have taken 2 weeks.</li></ul>\n<p>The total cost?</p>\n<ul><li>Developer 1: $8K-$15K</li><li>Developer 2: $15K-$25K</li><li>Plus 6 months of lost time</li></ul>\n<p>For a product that could have been been built correctly the first time for $15K-$20K in 8 weeks.</p>\n<p>The prevention is simple.</p>\n<p>Don&#39;t optimize for the cheapest first developer.</p>\n<p>Optimize for never needing a second one.</p>\n<p>Ask your first developer:</p>\n<p>&quot;If I hire someone else to maintain this code in 12 months, how hard will it be for them to understand?&quot;</p>\n<p>If they can&#39;t answer clearly, that&#39;s your answer.</p>\n<p>Founders: have you ever had to hire someone to redo what the previous developer built?</p>\n<p>What triggered it?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-most-expensive-hire-second-developer.jpg",
      "tags": [
        "Founders"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/not-multi-tenancy-a-filter/",
      "url": "https://venuspaneliya.com/writing/not-multi-tenancy-a-filter/",
      "title": "That’s not multi-tenancy. That’s a filter.",
      "summary": "I asked an AI tool to build a multi-tenant SaaS. It built a single-tenant app with a tenant ID column.",
      "content_html": "<p>I asked an AI tool to build a multi-tenant SaaS.</p>\n<p>It built a single-tenant app with a tenant ID column.</p>\n<p>That’s not multi-tenancy.</p>\n<p>That’s a filter.</p>\n<p>Here’s why this matters if you’re building a SaaS product.</p>\n<p>Multi-tenant means multiple customers share the same infrastructure while their data remains completely isolated.</p>\n<ul><li>Customer A can never see Customer B’s data.</li><li>Customer A’s usage can never affect Customer B’s performance.</li><li>Customer A’s billing is independent of Customer B’s billing.</li></ul>\n<p>What the AI tool built was a single application where every database table had a <code>tenant_id</code> column.</p>\n<p>In theory, queries filter by tenant ID so each customer only sees their own data.</p>\n<p>In practice, this creates three serious problems.</p>\n<ul><li>Problem 1: One missed WHERE clause leaks data.</li></ul>\n<p>Every database query needs a tenant ID filter. Forget it on one query, one endpoint, or one admin panel, and Customer A suddenly sees Customer B’s data.</p>\n<p>In healthcare, that&#39;s a HIPAA violation.</p>\n<p>In finance, that&#39;s a lawsuit.</p>\n<ul><li>Problem 2: No resource isolation.</li></ul>\n<p>One customer running a heavy report slows down the database for everyone else.</p>\n<p>One customer uploading 10 GB of files fills the shared storage.</p>\n<p>One customer hitting the API 50,000 times per hour degrades performance for everyone.</p>\n<ul><li>Problem 3: Billing becomes a nightmare.</li></ul>\n<p>Without proper tenant isolation, tracking usage per customer means aggregating data across shared tables by tenant ID.</p>\n<p>At scale, those queries become slow and expensive.</p>\n<p>And if the numbers are wrong, you&#39;re either undercharging or overcharging customers.</p>\n<p>Real multi-tenancy requires architectural decisions.</p>\n<ul><li>Separate schemas or row-level security policies.</li><li>Per-tenant rate limiting.</li><li>Isolated storage buckets.</li><li>Tenant-aware caching.</li></ul>\n<p>AI tools don&#39;t make these decisions because they build features one at a time.</p>\n<p>Multi-tenancy is a system-level concern that touches every part of the application.</p>\n<p>If you&#39;ve used AI to build a SaaS, did you check whether it&#39;s actually multi-tenant or just faking it?</p>\n<pre class=\"vp-code\" tabindex=\"0\"><code><span class=\"vp-code__k\">alter table</span> invoices <span class=\"vp-code__k\">enable row level security</span>;\n<span class=\"vp-code__k\">create policy</span> tenant_isolation <span class=\"vp-code__k\">on</span> invoices\n  <span class=\"vp-code__k\">using</span> (tenant_id = current_setting(&#39;app.tenant_id&#39;)::uuid);</code></pre>",
      "image": "https://venuspaneliya.com/assets/og/post-not-multi-tenancy-a-filter.jpg",
      "tags": [
        "SaaS",
        "PostgreSQL",
        "Row-level security"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/adding-ai-features-few-users-asked/",
      "url": "https://venuspaneliya.com/writing/adding-ai-features-few-users-asked/",
      "title": "Everyone’s adding AI features. Few users asked.",
      "summary": "Everyone’s adding AI features. Nobody’s asking whether their users actually need them.",
      "content_html": "<p>Everyone’s adding AI features.</p>\n<p>Nobody’s asking whether their users actually need them.</p>\n<p>I’ve had four conversations with founders this month that followed the same pattern.</p>\n<p>“We need to add AI to the product.”</p>\n<p>“Why?”</p>\n<p>“Our investors are asking about our AI strategy.”</p>\n<p>Not &quot;our users are asking for it.&quot; Not &quot;we identified a workflow that AI improves.&quot; Not &quot;we tested it and it reduced time-to-value.&quot;</p>\n<p>Investors are asking. So founders are building.</p>\n<p>This is how you end up with:</p>\n<ul><li>A chatbot on your homepage that nobody uses.</li><li>An &quot;AI-powered&quot; search that returns worse results than a basic filter.</li><li>A recommendation engine that suggests the same three items to every user because the training data was too thin.</li></ul>\n<p>The best AI features I’ve built started with a user problem, not an investor question.</p>\n<p>One founder said, &quot;Our users spend 45 minutes filling out forms manually.&quot;</p>\n<p>We built an AI form generator. Usage was immediate. Value was obvious. Manual editing dropped 60%.</p>\n<p>Another founder said, &quot;Our support team answers the same 20 questions repeatedly.&quot;</p>\n<p>We restructured the product to surface those answers before users needed to ask. Support queries dropped 40%.</p>\n<p>No chatbot. No &quot;AI-powered&quot; label. Just better architecture.</p>\n<p>The pattern is simple.</p>\n<ul><li>Start with the user pain point.</li><li>Evaluate whether AI solves it better than a simpler approach.</li><li>If yes, build the AI feature.</li><li>If no, build the simpler solution.</li></ul>\n<p>&quot;AI&quot; on your pitch deck means nothing if your users don’t experience the value.</p>\n<p>Have you added AI features because users asked, or because investors expected it?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-adding-ai-features-few-users-asked.jpg",
      "tags": [
        "AI engineering",
        "OpenAI API"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/ai-built-saas-enterprise-procurement/",
      "url": "https://venuspaneliya.com/writing/ai-built-saas-enterprise-procurement/",
      "title": "Your AI-built SaaS won’t pass enterprise procurement",
      "summary": "Your AI-built SaaS won’t pass enterprise procurement. Here’s what they’ll ask that you haven’t thought about.",
      "content_html": "<p>Your AI-built SaaS won’t pass enterprise procurement.</p>\n<p>Here’s what they’ll ask that you haven’t thought about.</p>\n<p>You built a working product. Users are signing up. Revenue is growing. Then a mid-size company wants to buy 50 seats.</p>\n<p>Their procurement team sends you a vendor security questionnaire.</p>\n<p>47 questions.</p>\n<p>You freeze.</p>\n<p>Here’s a preview of what’s coming.</p>\n<ul><li>“Describe your data retention and deletion policies.”</li></ul>\n<p>You don’t have one. User data stays in the database forever. When someone asks to delete their account, you run a manual SQL query and hope you got everything. There’s no automated process. No audit trail of what was deleted.</p>\n<ul><li>“Do you encrypt data at rest and in transit?”</li></ul>\n<p>In transit, probably yes. Most modern frameworks default to HTTPS. At rest? Almost certainly not. AI-generated code doesn’t add database-level encryption because it’s infrastructure, not a feature.</p>\n<ul><li>“Provide your SOC 2 Type II report.”</li></ul>\n<p>You don’t have one. You Google it and discover it costs $30K to $50K and takes six months. The enterprise deal suddenly has a six-month prerequisite you didn’t know about.</p>\n<ul><li>“How do you handle GDPR data subject access requests?”</li></ul>\n<p>There’s no mechanism to export all data associated with a specific user. There’s no mechanism to delete it comprehensively across all tables and backups. There’s no logging of who accessed what data and when.</p>\n<ul><li>“What is your incident response plan?”</li></ul>\n<p>There isn’t one. Because no one thought about what happens when something goes wrong. Only what happens when everything goes right.</p>\n<p>Here’s the reality.</p>\n<p>Enterprise customers and government buyers don’t evaluate your features. They evaluate your infrastructure, your processes, and your compliance posture.</p>\n<p>AI tools build none of these.</p>\n<p>If you’re building a SaaS product and plan to sell to businesses with more than 50 employees, compliance architecture needs to be in your roadmap from month one, not month twelve.</p>\n<p>Non-technical founders: does your developer talk to you about security, or do you just assume it’s handled?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-ai-built-saas-enterprise-procurement.jpg",
      "tags": [
        "Security",
        "Authentication and access control"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/what-a-5k-mvp-costs/",
      "url": "https://venuspaneliya.com/writing/what-a-5k-mvp-costs/",
      "title": "What a $5K MVP actually costs",
      "summary": "A founder told me his MVP cost $5,000. Six months later, he’d spent another $35,000 rebuilding it because it couldn’t handle real users.",
      "content_html": "<p>A founder told me his MVP cost $5,000.</p>\n<p>Six months later, he’d spent another $35,000 rebuilding it because it couldn’t handle real users.</p>\n<p>Total cost: $40,000 and 9 months. For a product he could have built right the first time for $15,000 in 8 weeks.</p>\n<p>This pattern is so common it’s almost predictable. The budget you set for your MVP determines what you get. And most founders don’t know what each price range actually buys.</p>\n<p>Here’s a breakdown with real numbers. Save this before your next developer conversation.</p>\n<p>Where does your current product sit on this scale? And where do you need it to be?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-what-a-5k-mvp-costs.jpg",
      "tags": [
        "Founders"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/fix-the-foundation-before-ai/",
      "url": "https://venuspaneliya.com/writing/fix-the-foundation-before-ai/",
      "title": "Fix the foundation before you add AI",
      "summary": "A founder asked me to add AI features to her EdTech platform. I said not yet.",
      "content_html": "<p>A founder asked me to add AI features to her EdTech platform.</p>\n<p>I said not yet.</p>\n<p>She had a working product. Users were growing. Revenue was coming in. She wanted to add an AI-powered recommendation engine to personalize learning paths for students.</p>\n<p>The feature made sense. The timing didn’t.</p>\n<p>Here’s why.</p>\n<p>The platform’s database schema was designed for the original 3 features. Adding an AI recommendation engine meant the system needed to track user behavior across sessions, store interaction patterns, and serve personalized results in real time.</p>\n<p>The existing architecture couldn’t handle any of that. Not because it was bad. It was built for what the product needed at launch. But it wasn’t built for what the product needed next.</p>\n<p>If we’d bolted AI features onto the existing foundation, two things would have happened.</p>\n<ul><li>The AI features would have been slow and unreliable.</li><li>The existing features would have started breaking under the added load.</li></ul>\n<p>So we spent 6 weeks restructuring the data layer first. Normalized the schema. Added proper indexing. Built a caching layer for frequently accessed data. Set up event tracking for user behavior.</p>\n<p>Then we added the AI features.</p>\n<p>They shipped in 2 weeks. Not 2 months. Because the foundation was ready.</p>\n<p>The recommendation engine worked on day one. No performance issues. No data inconsistencies. No emergency patches.</p>\n<p>Here’s the lesson.</p>\n<p>When a founder says, “I want AI features,” and a developer says, “Let’s fix the foundation first,” that developer is saving you time, not wasting it.</p>\n<p>The fastest path to AI features is rarely “add AI features.”</p>\n<p>It’s usually “make the system ready for AI features, then add them.”</p>\n<p>Have you ever been told “not yet” by a developer?</p>\n<p>In hindsight, were they right?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-fix-the-foundation-before-ai.jpg",
      "tags": [
        "AI engineering",
        "PostgreSQL"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/one-developer-vs-a-40k-agency/",
      "url": "https://venuspaneliya.com/writing/one-developer-vs-a-40k-agency/",
      "title": "One senior developer or a $40,000-a-month agency",
      "summary": "I talked to a founder who was paying $40,000 a month to an agency. He still couldn’t get a feature shipped in under 6 weeks.",
      "content_html": "<p>I talked to a founder who was paying $40,000 a month to an agency.</p>\n<p>He still couldn’t get a feature shipped in under 6 weeks.</p>\n<p>Not because the agency was lazy. Not because the developers were bad. The structure itself was the problem.</p>\n<p>Here’s how it worked.</p>\n<p>The founder had calls with an account manager.<br>The account manager translated requirements to a project manager.<br>The project manager assigned tickets to developers.<br>The developers wrote code based on tickets that had already lost half the context.</p>\n<p>When the founder had a question about implementation, it took 3 days to get an answer.</p>\n<p>The question went from founder → account manager → project manager → developer.</p>\n<p>Then the answer came back the same way.</p>\n<p>Four people were involved in every decision. None of them understood both the business and the code.</p>\n<p>The agency wasn’t scamming him.</p>\n<p>This is just how agency models work at scale.</p>\n<p>They optimize for utilization, not speed. Every developer is split across 2-3 projects. Context switching is constant. Deep focus on one product is rare.</p>\n<p>Then there’s the pricing math.</p>\n<p>$40,000 per month sounds like you’re getting a team.</p>\n<p>In reality, you’re getting fractions of people.</p>\n<ul><li>Half a senior developer.</li><li>A quarter of a PM.</li><li>A designer working across multiple clients.</li></ul>\n<p>The total time dedicated to your product might be just 60-80 hours per month.</p>\n<p>For $40K.</p>\n<p>The alternative isn’t hiring a cheaper agency.</p>\n<p>It’s working with one senior developer embedded in your team.</p>\n<p>One person who understands the business, writes the code, and communicates directly with you.</p>\n<p>No translation layers. No context loss. No 3-day turnaround on a simple question.</p>\n<p>That model exists. It costs a fraction of what agencies charge. And it ships faster because decisions happen in minutes, not weeks.</p>\n<p>Have you worked with an agency for development?</p>\n<p>What surprised you most about the experience?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-one-developer-vs-a-40k-agency.jpg",
      "tags": [
        "Founders"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/three-architecture-decisions-ai-wont-make/",
      "url": "https://venuspaneliya.com/writing/three-architecture-decisions-ai-wont-make/",
      "title": "3 architecture decisions AI tools will never make for you",
      "summary": "There are 3 architecture decisions that AI tools will never make for you. They’ll generate code. They’ll build features. They’ll even structure your database schema in a way that looks reasonable.",
      "content_html": "<p>There are 3 architecture decisions that AI tools will never make for you.</p>\n<p>They’ll generate code. They’ll build features. They’ll even structure your database schema in a way that looks reasonable.</p>\n<p>But they won’t make system-level decisions that require understanding your business, your users, and your scale requirements.</p>\n<ul><li>Decision 1: Where does payment state live?</li></ul>\n<p>When a customer pays you through Stripe, the transaction data lives in Stripe’s system. Most AI-generated code treats Stripe as the source of truth and queries Stripe’s API every time you need payout status.</p>\n<p>The problem: Stripe’s API has latency. It has rate limits. And if Stripe goes down for 20 minutes, your entire payment dashboard goes blank.</p>\n<p>The better approach: store payment state in your own database. Use Stripe as the processor, not the record keeper. Sync events through webhooks. Now your system works even when Stripe hiccups.</p>\n<ul><li>Decision 2: How do you limit costs per customer in a multi-tenant app?</li></ul>\n<p>If you’re building AI features, every API call to OpenAI costs money. Without controls, one customer running 10,000 prompts burns through your budget while other customers get slow responses.</p>\n<p>AI tools don’t add per-tenant rate limiting because they don’t think at the system level. They build features for one user at a time.</p>\n<p>You need architecture that thinks about all your users simultaneously.</p>\n<ul><li>Decision 3: What happens when the AI API goes down?</li></ul>\n<p>Your product calls OpenAI. OpenAI has an outage. What does your user see?</p>\n<p>Most AI-generated code shows a crash or a loading spinner that never resolves.</p>\n<p>Production-ready code shows a graceful fallback. Maybe a cached response. Maybe a message that says “this feature is temporarily unavailable.”</p>\n<p>Something that doesn’t destroy the user’s trust.</p>\n<p>These decisions require judgment.</p>\n<p>AI tools generate code.<br>Developers make decisions.</p>\n<p>If you’re building with AI tools, which of these 3 have you thought about?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-three-architecture-decisions-ai-wont-make.jpg",
      "tags": [
        "SaaS",
        "Stripe Connect",
        "OpenAI API",
        "Token and cost controls"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/freelance-market-two-tiers/",
      "url": "https://venuspaneliya.com/writing/freelance-market-two-tiers/",
      "title": "The freelance developer market is splitting into two tiers",
      "summary": "The freelance developer market is splitting into two tiers. - Tier 1: $10 to $20 per hour.",
      "content_html": "<p>The freelance developer market is splitting into two tiers.</p>\n<ul><li>Tier 1: $10 to $20 per hour.</li></ul>\n<p>Developers who follow instructions. You write the spec, they write the code. If the spec is wrong, the code is wrong. If you miss an edge case in the brief, it doesn’t exist in the product. These developers need detailed management and frequent review.</p>\n<ul><li>Tier 2: $40 to $100+ per hour.</li></ul>\n<p>Developers who make decisions. You describe the problem, they figure out the solution.<br>They catch edge cases you missed. They push back when a feature doesn’t make sense. They think about your business model, your users, and your scale requirements.</p>\n<p>The middle is disappearing.</p>\n<p>The $25 to $35 range used to be where most freelancers lived. Competent. Reliable enough. Needed some management but not constant oversight.</p>\n<p>AI tools are eating this tier.</p>\n<p>A founder with Cursor can now produce what a $30/hour developer would have built.<br>The code quality is similar. The speed is faster. The cost is a $20/month subscription.</p>\n<p>So what’s left?</p>\n<ul><li>At the bottom: developers who compete with AI on price and lose slowly.</li><li>At the top: developers who do what AI can’t. Architecture decisions. Security hardening. Compliance readiness. Business judgment. Production ownership.</li></ul>\n<p>For founders, this changes the hiring calculus.</p>\n<p>The question isn’t “how much does a developer cost per hour?”</p>\n<p>The question is “how much does it cost me in total, including my time managing them, fixing their mistakes, and rebuilding what doesn’t scale?”</p>\n<p>A $50/hour developer who needs zero management and ships production-ready code often costs less than a $15/hour developer who needs daily oversight and produces code that needs rebuilding in 6 months.</p>\n<p>Founders: would you rather pay $20/hr and manage closely, or $50/hr and get autonomous delivery?</p>\n<p>Why?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-freelance-market-two-tiers.jpg",
      "tags": [
        "Founders",
        "Cursor"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/the-recommendation-i-didnt-ask-for/",
      "url": "https://venuspaneliya.com/writing/the-recommendation-i-didnt-ask-for/",
      "title": "The recommendation I didn’t ask for",
      "summary": "A few months into a contract, the client who brought me in wrote a recommendation on LinkedIn. Unsolicited. I didn’t ask for it.",
      "content_html": "<p>A few months into a contract, the client who brought me in wrote a recommendation on LinkedIn.</p>\n<p>Unsolicited. I didn’t ask for it.</p>\n<p>That recommendation said three things that stuck with me.</p>\n<ul><li>“Minimal technical supervision.”</li></ul>\n<p>This mattered because the founder had been burned before. Previous developers needed constant direction. Every feature required a detailed brief, a review cycle, and multiple rounds of feedback before anything shipped. The founder was spending more time managing the developer than running the business.</p>\n<ul><li>“Speaking directly with our product team.”</li></ul>\n<p>This mattered because most freelance developers operate through a layer of project management. The founder talks to a PM. The PM talks to the developer. Context gets lost in translation.</p>\n<p>I joined the product team directly. When a question came up, I asked the person who had the answer.</p>\n<p>No intermediary. No game of telephone.</p>\n<ul><li>“Clear, regular, and fast communication.”</li></ul>\n<p>This mattered because the biggest complaint founders have about developers isn’t technical skill. It’s silence.</p>\n<p>You send a message on Monday and hear nothing until Thursday. You ask for a status update and get a vague “working on it.”</p>\n<p>This client got daily updates. Short. Specific. No fluff.</p>\n<p>Here’s what I learned from this.</p>\n<p>Founders don’t leave recommendations because the code was good. They leave recommendations because the experience was good.</p>\n<p>Because they didn’t have to think about the technical side. Because they could focus on their business knowing the product was being handled.</p>\n<p>Technical skill is the minimum requirement.</p>\n<p>The thing that actually earns trust is ownership.</p>\n<p>If you’re looking for a developer who works this way, my DMs are open.</p>\n<p>Or <a href=\"https://cal.com/venuspaneliya/intro\" rel=\"noopener\">book a call</a>.</p>",
      "image": "https://venuspaneliya.com/assets/og/post-the-recommendation-i-didnt-ask-for.jpg",
      "tags": [
        "Founders"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/does-your-developer-understand-your-business/",
      "url": "https://venuspaneliya.com/writing/does-your-developer-understand-your-business/",
      "title": "How do you know if your developer understands your business?",
      "summary": "How do you know if your developer actually understands your business? Not your tech stack. Your business.",
      "content_html": "<p>How do you know if your developer actually understands your business?</p>\n<p>Not your tech stack.<br>Your business.</p>\n<p>I’ve worked with founders who hired developers based entirely on technical skills.</p>\n<p>The developer knew React. The developer knew AWS. The developer had 5 years of experience.</p>\n<p>Six months later, the product was technically solid and completely wrong for the market.</p>\n<p>The developer built exactly what was asked for.</p>\n<p>But never questioned whether what was asked for was the right thing to build.</p>\n<p>Here are 3 signs a developer actually gets your business.</p>\n<ul><li>Sign 1: They ask about your revenue model before your feature list.</li></ul>\n<p>A developer who understands business wants to know how you make money before they start building.</p>\n<p>Because the revenue model shapes every technical decision.</p>\n<p>Subscription billing requires different architecture than one-time payments.</p>\n<p>Marketplace commissions require different infrastructure than direct sales.</p>\n<ul><li>Sign 2: They push back on features that don’t serve users.</li></ul>\n<p>A developer who just says yes to everything is not a good sign.</p>\n<p>The ones who add value are the ones who say “we could build that, but your users probably need this instead” and explain why.</p>\n<ul><li>Sign 3: They mention edge cases you haven’t thought of.</li></ul>\n<p>“What happens if two users edit the same record?”<br>“What if a payment fails halfway through checkout?”<br>“What if your API provider goes down?”</p>\n<p>If your developer raises these questions before you do, they’re thinking about your product.</p>\n<p>Not just your tickets.</p>\n<p>Here’s the flip side.</p>\n<p>Three red flags:</p>\n<ul><li>They only talk about frameworks and tools.</li><li>They never ask why a feature matters.</li><li>They estimate without asking questions first.</li></ul>\n<p>What’s the number one thing you look for when hiring a developer?</p>\n<p>Curious what founders prioritize.</p>",
      "image": "https://venuspaneliya.com/assets/og/post-does-your-developer-understand-your-business.jpg",
      "tags": [
        "Founders"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/quote-engine-10-minutes-to-under-2/",
      "url": "https://venuspaneliya.com/writing/quote-engine-10-minutes-to-under-2/",
      "title": "How a 10-minute quote engine got under 2 minutes",
      "summary": "A quote engine was taking over 10 minutes to return results. Users were leaving the page before their quotes loaded. The client’s support team was getting calls: “Is your site broken?”",
      "content_html": "<p>A quote engine was taking over 10 minutes to return results.</p>\n<p>Users were leaving the page before their quotes loaded. The client’s support team was getting calls: “Is your site broken?”</p>\n<p>It wasn’t broken. It was just slow.<br>Here’s what was happening underneath.</p>\n<p>Every time a user requested a quote, the system called 4 different insurer APIs sequentially. One after another.</p>\n<p>Each API took 1 to 3 minutes to respond depending on load. The system waited for all 4 to finish before showing anything.</p>\n<p>On a good day, that was 5 minutes. On a bad day, 12.</p>\n<p>The fix was not about writing faster code.</p>\n<ul><li>We added a caching layer. When an insurer API returned a result, we stored it. If another user with similar parameters requested a quote within a reasonable window, we served the cached result instead of hitting the API again.</li><li>We also switched the API calls from sequential to parallel. Instead of waiting for API 1 to finish before calling API 2, we called all 4 simultaneously.</li></ul>\n<p>Combined result: quote delivery dropped from over 10 minutes to under 2 minutes. Sometimes under 30 seconds for cached results.</p>\n<p>Support calls about speed dropped to near zero. Completion rates went up because users actually stuck around to see their quotes.</p>\n<p>Here’s what this taught me.</p>\n<p>When a product feels slow, the instinct is to optimize code or upgrade the server. But most of the time, the problem is architectural.</p>\n<p>The system is doing things in the wrong order, or doing the same work repeatedly when it doesn’t need to.</p>\n<p>Before you add more features, fix the foundation.</p>\n<p>What’s the slowest part of your product right now? The one where you know users are dropping off?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-quote-engine-10-minutes-to-under-2.jpg",
      "tags": [
        "Fintech",
        "Redis",
        "REST APIs"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/mvp-90-percent-done/",
      "url": "https://venuspaneliya.com/writing/mvp-90-percent-done/",
      "title": "Your developer says the MVP is 90% done",
      "summary": "Your developer says the MVP is 90% done. Here’s what that actually means in real numbers.",
      "content_html": "<p>Your developer says the MVP is 90% done.</p>\n<p>Here’s what that actually means in real numbers.</p>\n<p>The first 90% is the part you can see. Screens load. Buttons work. The user can sign up, click around, and experience the core feature.</p>\n<p>This is the part developers build fastest because it’s the most straightforward.</p>\n<p>The last 10% is the part you can’t see. And it typically costs 2 to 3 times more than the first 90%.</p>\n<p>Here’s what lives in that last 10%.</p>\n<ul><li>Payment edge cases. What happens when a card is declined? When a subscription is canceled mid-billing cycle? When a user disputes a charge? Each one of these requires specific logic that doesn’t exist until someone builds it.</li><li>Authentication edge cases. What happens when a token expires? When a user resets their password on one device while logged in on another? When someone tries to access an admin route without permission?</li><li>Error handling. What does the user see when the server goes down? When they submit a form with invalid data? When their upload is too large? Right now, most of these scenarios show a blank screen or a cryptic error message.</li><li>Deployment and monitoring. How does the code get from your developer’s laptop to the live server? Is it automated or manual? What alerts exist when something breaks at 2am?</li><li>Security hardening. Input validation. Rate limiting. Data encryption. HTTPS enforcement. Headers that prevent common attacks.</li></ul>\n<p>This is why projects that are “90% done” take another 3 months.</p>\n<p>The last 10% isn’t one thing. It’s fifty small things that each take real time to build correctly.</p>\n<p>The solution isn’t to accept this as inevitable. The solution is to plan for it from the start.</p>\n<p>Budget for the full 100%, not the visible 90%.</p>\n<p>Has a developer ever told you a project was “90% done”? How long did the last 10% take?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-mvp-90-percent-done.jpg",
      "tags": [
        "Founders",
        "Authentication and access control",
        "Monitoring and debugging",
        "CI/CD"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/reviewed-a-codebase-built-with-claude/",
      "url": "https://venuspaneliya.com/writing/reviewed-a-codebase-built-with-claude/",
      "title": "I reviewed a codebase built entirely with Claude",
      "summary": "I reviewed a codebase built entirely with Claude last month. The founder was proud of it. And honestly, he should be. He’s not a developer. He used AI to build a working SaaS product in 3 weeks. That’s impressive.",
      "content_html": "<p>I reviewed a codebase built entirely with Claude last month.</p>\n<p>The founder was proud of it. And honestly, he should be. He’s not a developer. He used AI to build a working SaaS product in 3 weeks. That’s impressive.</p>\n<p>But he asked me to look under the hood before he launched to paying customers. Here’s what I found.</p>\n<p>What worked well:</p>\n<ul><li>The UI was clean.</li><li>Routing was solid.</li><li>CRUD operations were well-structured.</li><li>The database schema made sense for the core use case.</li></ul>\n<p>For a non-developer using AI tools, the output quality was genuinely good.</p>\n<p>What would have broken in production:</p>\n<ul><li>Authentication had no token refresh logic. A user’s session would expire after 60 minutes and the app would just show a blank screen. No redirect to login. No error message. Just white.</li><li>There were zero error boundaries around API calls. If the external API went down (and they all do eventually), the entire page would crash instead of showing a fallback state.</li><li>The app had no concept of concurrent users. Two people editing the same record would silently overwrite each other’s changes. Whoever saved last won. The other person’s work disappeared without warning.</li><li>Environment variables were hardcoded in three different files. API keys sitting in plain text inside the codebase. One public GitHub push away from a security incident.</li></ul>\n<p>None of these problems were the founder’s fault. He asked the AI to build features. The AI built features. It just didn’t build the infrastructure that keeps those features working when real people use them.</p>\n<p>The product went from “not ready” to “production ready” in about two weeks of focused work.</p>\n<p>Not a rebuild. Just filling the gaps AI tools leave behind.</p>\n<p>If you’ve built with AI tools, did you have someone review the output before launch?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-reviewed-a-codebase-built-with-claude.jpg",
      "tags": [
        "Security",
        "Authentication and access control"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/ai-will-not-replace-judgment/",
      "url": "https://venuspaneliya.com/writing/ai-will-not-replace-judgment/",
      "title": "Will AI replace developers? Wrong question.",
      "summary": "Everyone’s debating whether AI will replace developers. Wrong question.",
      "content_html": "<p>Everyone’s debating whether AI will replace developers.</p>\n<p>Wrong question.</p>\n<p>AI will replace developers who only know how to write code. It won’t replace developers who know how to evaluate code, make architecture decisions, and own the outcome.</p>\n<p>Here’s what I mean.</p>\n<p>AI tools can generate a login system in 30 seconds. But they can’t decide whether your app needs session-based auth or token-based auth based on your specific business model.</p>\n<p>They can’t determine that your multi-tenant SaaS needs tenant-isolated rate limiting to prevent one customer from crashing everyone else’s experience. They can’t look at your payment flow and say “this will silently fail for 5% of transactions.”</p>\n<p>Those are judgment calls. They require understanding the business, the users, and the failure modes that only show up in production.</p>\n<p>The developers who survive the next 5 years aren’t the ones who type fastest. They’re the ones who can look at AI-generated code and ask:</p>\n<ul><li>what’s missing?</li><li>What breaks under load?</li><li>What happens when the user does something unexpected?</li><li>What does this look like at 10x the current traffic?</li></ul>\n<p>For founders, this changes what “hiring a developer” means.</p>\n<p>You’re not hiring someone to write code anymore. You’re hiring someone to make decisions about your product’s architecture, security, and reliability and to review what AI tools produce.</p>\n<p>The skill isn’t coding.</p>\n<p>The skill is judgment.</p>\n<p>Do you think AI tools will make hiring developers easier or harder? Genuine question.</p>",
      "image": "https://venuspaneliya.com/assets/og/post-ai-will-not-replace-judgment.jpg",
      "tags": [
        "AI engineering"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/security-questionnaire-ai-built-saas/",
      "url": "https://venuspaneliya.com/writing/security-questionnaire-ai-built-saas/",
      "title": "Five questions an enterprise security review will ask",
      "summary": "You built a working SaaS product with AI tools. Login works. Dashboard loads. Users can sign up and pay.",
      "content_html": "<p>You built a working SaaS product with AI tools.</p>\n<p>Login works. Dashboard loads. Users can sign up and pay.</p>\n<p>Now an enterprise prospect wants to buy. Their procurement team sends over a security questionnaire.</p>\n<ul><li>Question 1: Is user data encrypted at rest?</li></ul>\n<p>You check. It isn’t.</p>\n<p>The database stores everything in plaintext because AI-generated code doesn’t add encryption unless you specifically ask for it.</p>\n<ul><li>Question 2: Do you have audit logs for data access?</li></ul>\n<p>You check. You don’t.</p>\n<p>There’s no record of who accessed what data, when, or from where. The AI tool didn’t generate logging because it wasn’t part of the feature request.</p>\n<ul><li>Question 3: How do you handle data deletion requests?</li></ul>\n<p>You check. There’s no mechanism.</p>\n<p>A user asks to delete their account, and you’d have to manually dig through the database. No GDPR-compliant deletion flow exists.</p>\n<ul><li>Question 4: Do you have rate limiting to prevent abuse?</li></ul>\n<p>You check. You don’t.</p>\n<p>A single user could hit your API 10,000 times per minute and you’d have no throttling. Your OpenAI bill would spike before you noticed.</p>\n<ul><li>Question 5: What’s your incident response process?</li></ul>\n<p>There isn’t one.</p>\n<p>Because the AI tool built features, not operational processes.</p>\n<p>This is the gap between “it works” and “it’s ready for real customers.”</p>\n<p>AI tools are extraordinary for building quickly. But they build features, not infrastructure.</p>\n<p>Security, compliance, and operational readiness are the foundation that separates a prototype from a product.</p>\n<p>The fix isn’t to stop using AI tools.</p>\n<p>The fix is to know what they skip and have someone fill those gaps before your first enterprise customer asks.</p>\n<p>Non-technical founders,</p>\n<p>Does your developer talk to you about security?</p>\n<p>Or do you just assume it’s handled?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-security-questionnaire-ai-built-saas.jpg",
      "tags": [
        "Security",
        "Authentication and access control",
        "Token and cost controls"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/five-questions-before-a-developer-contract/",
      "url": "https://venuspaneliya.com/writing/five-questions-before-a-developer-contract/",
      "title": "5 questions to ask before signing a developer contract",
      "summary": "I've worked with founders who signed developer contracts without asking a single technical question. Not because they were careless.",
      "content_html": "<p>I&#39;ve worked with founders who signed developer contracts without asking a single technical question.</p>\n<p>Not because they were careless.</p>\n<p>Because they didn&#39;t know what to ask.</p>\n<p>Most non-technical founders evaluate developers on:</p>\n<ul><li>Portfolio</li><li>Rate</li><li>Communication skills</li></ul>\n<p>Those matter.</p>\n<p>But they miss the questions that actually predict whether the project will succeed or fail.</p>\n<p>Here are 5 questions I&#39;d ask before signing any developer contract.</p>\n<p>None of them require technical knowledge.</p>\n<p>All of them reveal whether the developer thinks about your business or just your feature list.</p>\n<p>Save this.</p>\n<p>You&#39;ll need it.</p>\n<p>Which of these 5 would you add to your next developer interview?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-five-questions-before-a-developer-contract.jpg",
      "tags": [
        "Founders"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/payouts-failing-silently/",
      "url": "https://venuspaneliya.com/writing/payouts-failing-silently/",
      "title": "Payouts that were failing silently",
      "summary": "A client’s marketplace was processing payments for 200+ creators. Everything looked fine in the dashboard. Stripe showed transactions going through. The founder was focused on growth.",
      "content_html": "<p><strong>A client’s marketplace was processing payments for 200+ creators</strong>.</p>\n<p>Everything looked fine in the dashboard. Stripe showed transactions going through. The founder was focused on growth.</p>\n<p>Then a creator reached out: “I didn’t get paid last month.”</p>\n<p>We dug in. Turns out, about 5-8% of payouts were failing silently. Stripe would attempt the transfer, it would fail due to a banking detail mismatch or an insufficient balance in the connected account, and the system would just… move on. No retry. No alert. No flag.</p>\n<p>The founder had no idea. The creators who were affected mostly didn’t reach out - they just stopped using the platform.</p>\n<p>The fix was not complicated.</p>\n<p>We built a webhook listener that verified every payout event from Stripe. If a transfer failed, the system flagged it, retried with exponential backoff, and notified the ops team if it failed twice.</p>\n<p>We also moved the source of truth for payout status from Stripe’s API to our own database. Stripe became the payment processor. Our system became the record keeper.</p>\n<p>Result: zero missed payouts since. Over $10K/month flowing through the system reliably. The founder sleeps better. The creators trust the platform.</p>\n<p>Here’s the lesson that matters for any founder running a marketplace or creator platform:</p>\n<p><strong>They’re infrastructure you own. Payments aren’t a feature you “integrate</strong>.” If your system doesn’t verify every transaction independently, you’re trusting a third party with your customer relationships.</p>\n<p>If you’re running a marketplace - when was the last time you checked whether every payout actually landed?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-payouts-failing-silently.jpg",
      "tags": [
        "Payments",
        "Stripe Connect"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/what-cursor-apps-skip/",
      "url": "https://venuspaneliya.com/writing/what-cursor-apps-skip/",
      "title": "3 founders showed me what they built with Cursor",
      "summary": "3 founders showed me what they built with Cursor this month. All 3 had working products.",
      "content_html": "<p>3 founders showed me what they built with Cursor this month.</p>\n<p>All 3 had working products.</p>\n<p>Login worked. Dashboards loaded. Features functioned.</p>\n<p>All 3 had the same 2 problems hiding underneath.</p>\n<ul><li>Problem 1: Authentication looked complete but wasn’t.</li></ul>\n<p>The login screen worked.</p>\n<p>But none of the three apps handled:</p>\n<ul><li>What happens when a token expires mid-session.</li><li>When the same user logs in from two devices.</li><li>When someone manually edits a JWT in their browser.</li></ul>\n<p>These aren’t edge cases.</p>\n<p>They’re Tuesday afternoon for any app with paying users.</p>\n<ul><li>Problem 2: Payment failures were invisible.</li></ul>\n<p>All three had Stripe integrated.</p>\n<p>Charges went through.</p>\n<p>But none of them had logic for what happens when a charge fails.</p>\n<ul><li>No retry.</li><li>No webhook verification.</li><li>No dunning flow.</li></ul>\n<p>One founder told me, “Stripe handles that.”</p>\n<p>It doesn’t.</p>\n<p>Stripe processes the payment.</p>\n<p>Your app decides what happens when it fails.</p>\n<p>Here’s what’s worth knowing.</p>\n<p>AI tools build the happy path beautifully.</p>\n<p>The screen where everything goes right.</p>\n<p>But production software is 70% about what happens when things go wrong.</p>\n<ul><li>Token expires.</li><li>Payment fails.</li><li>API times out.</li><li>User submits garbage data.</li><li>Two people edit the same record simultaneously.</li></ul>\n<p>That’s where products break.</p>\n<p>And that’s what AI-generated code consistently skips.</p>\n<p>The fix isn’t “don’t use AI tools.”</p>\n<p>The fix is:</p>\n<ul><li>Have someone review the output specifically for failure scenarios before you launch.</li></ul>\n<p>Have you built anything with AI tools?</p>\n<p>What broke first?</p>",
      "image": "https://venuspaneliya.com/assets/og/post-what-cursor-apps-skip.jpg",
      "tags": [
        "SaaS",
        "Cursor",
        "Authentication and access control",
        "Stripe Connect"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/whats-running-in-production/",
      "url": "https://venuspaneliya.com/writing/whats-running-in-production/",
      "title": "What’s running in production right now",
      "summary": "One month into posting consistently on LinkedIn, here’s what production looks like across my active client work right now. This isn’t a highlight reel.",
      "content_html": "<p>One month into posting consistently on LinkedIn, here’s what production looks like across my active client work right now.</p>\n<p>This isn’t a highlight reel.</p>\n<p>It’s a status update on systems I built that are running in production as you read this.</p>\n<ul><li>A creator platform processing automated Stripe Connect payouts for 200+ creators every month.</li><li>Over $10,000 per month flowing through a system I designed and built end-to-end.</li><li>Zero manual intervention.</li><li>Zero missed payouts since launch.</li><li>An AI-powered form builder generating complete forms from plain-text prompts in a multi-tenant SaaS environment.</li><li>Workspace-level rate limiting controlling API costs across dozens of business tenants.</li><li>Server-side token validation ensuring no oversized prompt ever reaches OpenAI.</li><li>An InsurTech quote engine serving real users with sub-2-minute response times.</li><li>Down from over 10 minutes before I rebuilt the caching layer.</li><li>A video production pipeline running entirely on serverless infrastructure.</li><li>AWS Lambda and SQS processing content for 1,000+ users without a single provisioned server.</li><li>An immigration case management platform with multi-role access.</li><li>Handling applicants, attorneys, case managers, and admin staff.</li><li>Support queries down 40% since launch.</li></ul>\n<p>All of these systems are live.</p>\n<p>All of them handle real users, real money, or both.</p>\n<p>All of them were built by one developer, me, working directly with the founder or CTO, embedded with their team, accumulating context over time.</p>\n<p>I work with a small number of clients on a retainer basis.</p>\n<p>I take on new engagements only when I have genuine bandwidth because the quality of the work depends on the context I build with each client, and that context requires sustained attention, not split focus.</p>\n<p>If you’re building a SaaS product and need a developer who can own the full technical stack from architecture and AI integration to payments and deployment, I’d welcome a conversation.</p>\n<p>DM me on LinkedIn or <a href=\"https://cal.com/venuspaneliya/intro\" rel=\"noopener\">book an intro call</a>.</p>",
      "image": "https://venuspaneliya.com/assets/og/post-whats-running-in-production.jpg",
      "tags": [
        "SaaS",
        "Stripe Connect",
        "OpenAI API",
        "AWS Lambda",
        "SQS"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/three-developers-slower-than-one/",
      "url": "https://venuspaneliya.com/writing/three-developers-slower-than-one/",
      "title": "Why 3 developers can ship slower than 1",
      "summary": "A startup with 3 developers should move faster than a startup with 1 developer. In theory.",
      "content_html": "<p>A startup with 3 developers should move faster than a startup with 1 developer.</p>\n<p>In theory.</p>\n<p>In practice, I’ve watched 3-developer teams ship slower than solo developers on the same scope of work.</p>\n<p>Not because the individual developers were bad.<br>Because the coordination cost was eating their output alive.</p>\n<p>Here’s the math nobody shows you.</p>\n<p>1 developer</p>\n<ul><li>Zero coordination overhead.</li></ul>\n<p>One person holds the full context.<br>Decisions happen in real time.</p>\n<p>There’s no meeting to align on the API contract because the same person is building both sides of it.</p>\n<p>2 developers</p>\n<ul><li>1 communication path.</li></ul>\n<p>Developer A and Developer B need to stay synchronized.</p>\n<p>That’s manageable.<br>A quick daily sync, a shared document, a Slack channel.<br>Maybe 30 minutes of overhead per day.</p>\n<p>3 developers</p>\n<ul><li>3 communication paths.</li></ul>\n<p>A-to-B.</p>\n<p>A-to-C.</p>\n<p>B-to-C.</p>\n<p>Now you need:</p>\n<ul><li>A standup.</li><li>A shared task board.</li><li>Someone making sure that the frontend developer’s assumptions about the API match the backend developer’s implementation.</li></ul>\n<p>That’s 1-2 hours of coordination per day across the team.</p>\n<p>6 developers</p>\n<ul><li>15 communication paths.</li></ul>\n<p>The kind of team an agency puts together.</p>\n<p>You need:</p>\n<ul><li>A project manager just to manage the communication.</li><li>Weekly planning meetings.</li><li>Integration testing processes because six people building independently will produce six slightly different interpretations of the spec.</li></ul>\n<p>That project manager becomes the highest-value person on the team.</p>\n<p>Not because they contribute code,<br>but because without them, nothing connects.<br>The overhead compounds.</p>\n<p>Every new developer adds coordination cost that is invisible in the budget but visible in the timeline.</p>\n<p>A project scoped at 8 weeks with 1 developer doesn’t become a 4-week project with 2 developers.</p>\n<p>It becomes a 6-week project with 2 developers,<br>because 2 weeks of total effort went to coordination.<br>For early-stage startups,</p>\n<p>Pre-product-market-fit.<br>Burning runway.</p>\n<p>Building version one of a product that might pivot.</p>\n<p>This math matters.<br>I’m not arguing that teams are bad.<br>I’m arguing that teams should be sized to the problem,<br>not to the budget or the instinct that &quot;more people means faster.&quot;</p>\n<p>If your entire product can be understood by one person,<br>it can be built by one person.</p>\n<p>Faster, cheaper, and with zero coordination loss.</p>\n<p>The right time to grow the team is when the product complexity genuinely exceeds what one person can hold in their head.</p>\n<p>Not before.</p>",
      "image": "https://venuspaneliya.com/assets/og/post-three-developers-slower-than-one.jpg",
      "tags": [
        "Founders"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/walk-me-through-your-approach/",
      "url": "https://venuspaneliya.com/writing/walk-me-through-your-approach/",
      "title": "The one question to ask before hiring a developer",
      "summary": "There’s a question I think every founder should ask before hiring a developer. Not about the tech stack. Not about the rate. Not about availability. “Walk me through how you’d approach building this.”",
      "content_html": "<p>There’s a question I think every founder should ask before hiring a developer. Not about the tech stack. Not about the rate. Not about availability.</p>\n<p>“Walk me through how you’d approach building this.”</p>\n<p>Not “what would you build it with.” How would you approach it.</p>\n<ul><li><strong>The tool-first developer</strong>: Starts with frameworks. “I’d use React for the frontend, Node for the backend, PostgreSQL for the database.” They’re thinking in tools and answering a different question than the one you asked.</li><li><strong>The business-first developer</strong>: Starts with questions. “Who are the primary users? What’s the workflow they’ll go through daily? Where’s the money flowing? What does this look like in 6 months when you’ve scaled?”</li></ul>\n<p>Both developers might build the same product. But the second one will make different decisions along the way.<br>Decisions about architecture, data modeling, payment flows, and feature scoping that account for where the product is going, not just where it is today.</p>\n<p>This is the difference between code that works and code that lasts.</p>\n<p>I’ve taken over codebases built by developers who never asked about the business model. You can tell within an hour:</p>\n<ul><li>The database schema reflects the first feature that was built, not the product vision.</li><li>The payment integration assumes one pricing tier, adding a second tier means restructuring half the billing logic.</li><li>The user roles are hardcoded because nobody anticipated that the product would serve more than one type of user.</li></ul>\n<p>None of these were bugs when the code was written. They became bugs when the business grew beyond the developer’s assumptions. And the developer’s assumptions were narrow because they never asked the questions that would have expanded them.</p>\n<p>When you’re evaluating a developer, whether it’s me or anyone else, look closely at their starting point.</p>\n<p>If they ask about frameworks first, they’re thinking about the next sprint. If they ask about your business first, they’re thinking about the next year.</p>\n<p>Hire accordingly.</p>",
      "image": "https://venuspaneliya.com/assets/og/post-walk-me-through-your-approach.jpg",
      "tags": [
        "Founders"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/support-problem-was-architecture/",
      "url": "https://venuspaneliya.com/writing/support-problem-was-architecture/",
      "title": "The support problem that was really an architecture problem",
      "summary": "A client came to me with a problem that looked like a customer service problem but wasn’t. He was running an immigration case management platform.",
      "content_html": "<p>A client came to me with a problem that looked like a customer service problem but wasn’t.</p>\n<p>He was running an immigration case management platform.</p>\n<p>Applicants, attorneys, case managers, support staff.</p>\n<p>Four different user types, all interacting with the same cases, all needing different views of the same information.</p>\n<p>The support team was drowning.</p>\n<p>Not because they were bad at their jobs.</p>\n<p>Because the system forced every question through them.</p>\n<ul><li>An applicant wanted to check the status of their case? Email to support.</li><li>An attorney needed to see which documents were still pending? Email to support.</li><li>A case manager wanted to know which applications were stuck in review?</li></ul>\n<p>They had a dashboard, but it hadn’t been updated since the last developer left.</p>\n<p>Every question, no matter how simple, ended up in the support inbox.</p>\n<p>The team was spending 70% of their day answering questions that the system should have answered automatically.</p>\n<p>The founder tried hiring more support staff.</p>\n<p>That helped for a month.</p>\n<p>Then volume grew and they were underwater again.</p>\n<p>Adding people to a broken process just gives you more people working on a broken process.</p>\n<p><strong>The fix wasn’t more staff</strong>.</p>\n<p><strong>It was architecture</strong>.</p>\n<p>I built a multi-role portal.</p>\n<ul><li>Each user type, applicant, attorney, case manager, admin, gets a view designed specifically for their needs.</li><li>Applicants see their case status, pending documents, and next steps without contacting anyone.</li><li>Attorneys see their full caseload with filters for urgency and status.</li><li>Case managers get a real-time dashboard with bottleneck identification.</li></ul>\n<p>The information was already in the database.</p>\n<p>It just wasn’t being surfaced to the people who needed it.</p>\n<p>After launch, inbound support queries dropped by approximately 40%.</p>\n<p>The founder didn’t hire those extra support staff.</p>\n<p>The existing team went from spending most of their day on repetitive status questions to handling only the cases that genuinely needed human judgment.</p>\n<p><strong>This is what I mean when I say I try to understand the business flow before writing code</strong>.</p>\n<p>The technical build wasn’t complicated.</p>\n<ul><li>React frontend.</li><li>Role-based access control.</li><li>Real-time data sync.</li></ul>\n<p>Standard tools.</p>\n<p>The insight that made it work wasn’t technical.</p>\n<p>It was recognizing that the support problem was actually an information architecture problem.</p>\n<p>A different developer might have built a better ticketing system.</p>\n<p><strong>I built a system that made most tickets unnecessary</strong>.</p>",
      "image": "https://venuspaneliya.com/assets/og/post-support-problem-was-architecture.jpg",
      "tags": [
        "SaaS",
        "React",
        "Authentication and access control"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/add-ai-in-one-sentence/",
      "url": "https://venuspaneliya.com/writing/add-ai-in-one-sentence/",
      "title": "Can you say what AI does for your users in one sentence?",
      "summary": "Every second startup I talk to wants to “add AI” to their product. Only about 1 in 5 can tell me what AI would actually do for their users.",
      "content_html": "<p>Every second startup I talk to wants to “add AI” to their product.</p>\n<p>Only about 1 in 5 can tell me what AI would actually do for their users.</p>\n<p>Not for their pitch deck.<br>Not for their investor update.<br>For their users.</p>\n<p>If you can’t describe the user problem AI solves in one sentence, you’re not ready to build it yet. That’s not a criticism.<br>That’s the most expensive mistake I see founders make right now.</p>\n<p>The best AI features I’ve built started with a founder saying something like: &quot;my users spend 20 minutes building a form manually every single time.&quot; That’s specific. That’s measurable. That’s worth automating.</p>\n<p>The worst requests start with: &quot;our competitors launched an AI feature.&quot;</p>\n<p>That’s not a product decision. That’s a panic decision.</p>\n<p>And panic decisions are what The Rebuild Tax feeds on.</p>",
      "image": "https://venuspaneliya.com/assets/og/post-add-ai-in-one-sentence.jpg",
      "tags": [
        "AI engineering"
      ]
    },
    {
      "id": "https://venuspaneliya.com/writing/a-client-who-keeps-coming-back/",
      "url": "https://venuspaneliya.com/writing/a-client-who-keeps-coming-back/",
      "title": "A client who keeps coming back",
      "summary": "One of the clients I’ve worked with longest sent me a recommendation a few months ago. We’ve been working together across multiple projects, AI-powered SaaS builds, serverless infrastructure on AWS, and production systems handling real...",
      "content_html": "<p>One of the clients I’ve worked with longest sent me a recommendation a few months ago. We’ve been working together across multiple projects, AI-powered SaaS builds, serverless infrastructure on AWS, and production systems handling real users and real money.</p>\n<p>Here’s what he wrote:</p>\n<p>“I’ve been working with Venus across multiple production projects involving AI-powered SaaS products and serverless infrastructure on AWS, and we continue to work together.</p>\n<p>Venus has handled full-stack architecture using React, TypeScript, Supabase, and the OpenAI API shipping to production. Communication has always been clear and proactive throughout. The kind of engineer you can trust to own a feature end-to-end. I’d highly recommend Venus for any AI SaaS or full-stack build.”</p>\n<p>Two things stand out to me about that testimonial:</p>\n<p>First: “We continue to work together.”<br>This isn’t a review from someone I worked with once. It’s from an ongoing relationship spanning multiple projects and multiple production deployments.<br>He keeps coming back because the working relationship compounds, I understand his architecture, his business logic, and his priorities. Every new project starts faster because I already carry the context from the last one.</p>\n<p>Second: “The kind of engineer you can trust to own a feature end-to-end.”<br>Ownership isn’t just building what you’re told. It’s understanding why you’re building it, flagging problems before they become emergencies, and making decisions that account for where the product is going, not just where it is today.</p>\n<p>That’s the working relationship I build with every long-term client.</p>\n<p>Not just a developer who shows up, writes code, and submits a timesheet. A developer who thinks about your product the way you think about your product.</p>\n<p>I work on a retainer basis with a small number of clients.</p>\n<ul><li>If you’re building a SaaS product and need a developer who stays, accumulates context, and owns the technical side end-to-end, I’d be happy to talk:</li></ul>\n<p><a href=\"https://cal.com/venuspaneliya/intro\" rel=\"noopener\">Let&#39;s connect</a>.</p>",
      "image": "https://venuspaneliya.com/assets/og/post-a-client-who-keeps-coming-back.jpg",
      "tags": [
        "Founders"
      ]
    }
  ]
}