<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Jayesh Pamnani</title>
    <description>The latest articles on Forem by Jayesh Pamnani (@jayesh_pamnani_4ecb1c7338).</description>
    <link>https://forem.com/jayesh_pamnani_4ecb1c7338</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3899704%2F8676b05b-55fd-4688-845d-beeb4caf56de.jpg</url>
      <title>Forem: Jayesh Pamnani</title>
      <link>https://forem.com/jayesh_pamnani_4ecb1c7338</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jayesh_pamnani_4ecb1c7338"/>
    <language>en</language>
    <item>
      <title>Structural limitations in SaaS products that block AI-first workflows</title>
      <dc:creator>Jayesh Pamnani</dc:creator>
      <pubDate>Wed, 29 Apr 2026 18:50:42 +0000</pubDate>
      <link>https://forem.com/jayesh_pamnani_4ecb1c7338/structural-limitations-in-saas-products-that-block-ai-first-workflows-3oel</link>
      <guid>https://forem.com/jayesh_pamnani_4ecb1c7338/structural-limitations-in-saas-products-that-block-ai-first-workflows-3oel</guid>
      <description>&lt;p&gt;Most SaaS products were not built for AI.&lt;/p&gt;

&lt;p&gt;They were built for forms, dashboards, and predictable workflows.&lt;/p&gt;

&lt;p&gt;You can add AI on top. Many do.&lt;/p&gt;

&lt;p&gt;But once you try to run real workflows through it, the limitations show up quickly.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. CRUD-based architecture
&lt;/h2&gt;

&lt;p&gt;Most SaaS systems are built around CRUD.&lt;/p&gt;

&lt;p&gt;Create. Read. Update. Delete.&lt;/p&gt;

&lt;p&gt;Every flow is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;user inputs data
&lt;/li&gt;
&lt;li&gt;system stores it
&lt;/li&gt;
&lt;li&gt;user retrieves it
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI does not fit this model.&lt;/p&gt;

&lt;p&gt;AI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;generates outputs
&lt;/li&gt;
&lt;li&gt;makes decisions
&lt;/li&gt;
&lt;li&gt;works with incomplete context
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Trying to fit AI into CRUD flows creates friction everywhere.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Rigid data models
&lt;/h2&gt;

&lt;p&gt;SaaS systems rely on fixed schemas.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;defined fields
&lt;/li&gt;
&lt;li&gt;strict validation
&lt;/li&gt;
&lt;li&gt;predictable relationships
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI needs flexibility.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;unstructured input
&lt;/li&gt;
&lt;li&gt;variable output
&lt;/li&gt;
&lt;li&gt;evolving context
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When the data model is rigid, AI either:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;gets restricted
&lt;/li&gt;
&lt;li&gt;or breaks the system assumptions
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. No decision layer
&lt;/h2&gt;

&lt;p&gt;Typical SaaS architecture has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;UI
&lt;/li&gt;
&lt;li&gt;backend services
&lt;/li&gt;
&lt;li&gt;database
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no layer designed for decision-making.&lt;/p&gt;

&lt;p&gt;So AI ends up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;embedded inside services
&lt;/li&gt;
&lt;li&gt;scattered across endpoints
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This creates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;inconsistent behavior
&lt;/li&gt;
&lt;li&gt;hard debugging
&lt;/li&gt;
&lt;li&gt;duplicated logic
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without a dedicated layer, AI becomes unmanageable.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Synchronous execution model
&lt;/h2&gt;

&lt;p&gt;SaaS systems assume fast responses.&lt;/p&gt;

&lt;p&gt;AI does not guarantee that.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;responses take time
&lt;/li&gt;
&lt;li&gt;retries are needed
&lt;/li&gt;
&lt;li&gt;outputs may need validation
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If everything is synchronous:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;APIs slow down
&lt;/li&gt;
&lt;li&gt;users wait
&lt;/li&gt;
&lt;li&gt;systems timeout
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI-first workflows require async design.&lt;/p&gt;

&lt;p&gt;Most SaaS systems don’t have that built in.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. No tolerance for uncertainty
&lt;/h2&gt;

&lt;p&gt;SaaS systems expect exact outputs.&lt;/p&gt;

&lt;p&gt;AI produces probabilistic results.&lt;/p&gt;

&lt;p&gt;That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;output can vary
&lt;/li&gt;
&lt;li&gt;structure can change
&lt;/li&gt;
&lt;li&gt;confidence is not guaranteed
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without handling this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;wrong data gets stored
&lt;/li&gt;
&lt;li&gt;actions trigger incorrectly
&lt;/li&gt;
&lt;li&gt;trust in the system drops
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI needs validation and control layers.&lt;/p&gt;

&lt;p&gt;Most SaaS products don’t have them.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. No system-wide context
&lt;/h2&gt;

&lt;p&gt;SaaS products operate in silos.&lt;/p&gt;

&lt;p&gt;Each module:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;has its own data
&lt;/li&gt;
&lt;li&gt;its own logic
&lt;/li&gt;
&lt;li&gt;its own workflows
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI needs cross-system context.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;history
&lt;/li&gt;
&lt;li&gt;relationships
&lt;/li&gt;
&lt;li&gt;external data
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without that, AI becomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;shallow
&lt;/li&gt;
&lt;li&gt;inaccurate
&lt;/li&gt;
&lt;li&gt;limited in value
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What we changed
&lt;/h2&gt;

&lt;p&gt;We stopped trying to fit AI into SaaS patterns.&lt;/p&gt;

&lt;p&gt;Instead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;introduced a separate AI layer
&lt;/li&gt;
&lt;li&gt;moved workflows to async where needed
&lt;/li&gt;
&lt;li&gt;allowed flexible data handling
&lt;/li&gt;
&lt;li&gt;added validation for every AI output
&lt;/li&gt;
&lt;li&gt;built context across systems
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI is not a feature inside SaaS.&lt;/p&gt;

&lt;p&gt;It is a layer that sits across the entire system.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;Most SaaS products don’t fail with AI because of models.&lt;/p&gt;

&lt;p&gt;They fail because their architecture was never designed for it.&lt;/p&gt;

&lt;p&gt;If the system is built for predictable flows, AI will always feel like an add-on.&lt;/p&gt;

&lt;p&gt;And add-ons don’t scale.&lt;/p&gt;

</description>
      <category>brainpack</category>
      <category>saas</category>
      <category>webdev</category>
      <category>ai</category>
    </item>
    <item>
      <title>What breaks when you try to plug AI into an existing backend</title>
      <dc:creator>Jayesh Pamnani</dc:creator>
      <pubDate>Tue, 28 Apr 2026 07:07:32 +0000</pubDate>
      <link>https://forem.com/jayesh_pamnani_4ecb1c7338/what-breaks-when-you-try-to-plug-ai-into-an-existing-backend-41p0</link>
      <guid>https://forem.com/jayesh_pamnani_4ecb1c7338/what-breaks-when-you-try-to-plug-ai-into-an-existing-backend-41p0</guid>
      <description>&lt;p&gt;Most teams think adding AI is simple.&lt;/p&gt;

&lt;p&gt;Call an API. Send some data. Get a response.&lt;/p&gt;

&lt;p&gt;In reality, the moment you try to plug AI into an existing backend, things start breaking.&lt;/p&gt;

&lt;p&gt;Not because AI is hard.&lt;/p&gt;

&lt;p&gt;Because your backend was never designed for it.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Your data is not usable
&lt;/h2&gt;

&lt;p&gt;AI needs clean, structured, and consistent data.&lt;/p&gt;

&lt;p&gt;Most backends don’t have that.&lt;/p&gt;

&lt;p&gt;You’ll find:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;missing fields
&lt;/li&gt;
&lt;li&gt;inconsistent formats
&lt;/li&gt;
&lt;li&gt;duplicated records
&lt;/li&gt;
&lt;li&gt;business logic spread across code
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your system works because humans understand the gaps.&lt;/p&gt;

&lt;p&gt;AI doesn’t.&lt;/p&gt;

&lt;p&gt;So before AI works, you end up fixing your data layer.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Your workflows are too rigid
&lt;/h2&gt;

&lt;p&gt;Backends are built for deterministic flows.&lt;/p&gt;

&lt;p&gt;AI is not deterministic.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backend expects exact input
&lt;/li&gt;
&lt;li&gt;AI returns slightly different structure
&lt;/li&gt;
&lt;li&gt;Flow breaks
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Or worse:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI output needs validation
&lt;/li&gt;
&lt;li&gt;system has no place to handle it
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You realize quickly that your workflows are too strict for AI.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. No place for AI in the architecture
&lt;/h2&gt;

&lt;p&gt;Most systems don’t have a layer for decision-making.&lt;/p&gt;

&lt;p&gt;They have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;controllers
&lt;/li&gt;
&lt;li&gt;services
&lt;/li&gt;
&lt;li&gt;database
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Where does AI sit?&lt;/p&gt;

&lt;p&gt;If you plug it directly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;logic gets mixed
&lt;/li&gt;
&lt;li&gt;debugging becomes harder
&lt;/li&gt;
&lt;li&gt;behavior becomes unpredictable
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without a proper layer, AI turns into scattered API calls.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Latency becomes a problem
&lt;/h2&gt;

&lt;p&gt;Your backend was designed for fast responses.&lt;/p&gt;

&lt;p&gt;AI is slower.&lt;/p&gt;

&lt;p&gt;Now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;APIs take longer
&lt;/li&gt;
&lt;li&gt;users wait
&lt;/li&gt;
&lt;li&gt;timeouts start happening
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you don’t redesign flows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;async handling
&lt;/li&gt;
&lt;li&gt;queues
&lt;/li&gt;
&lt;li&gt;background jobs
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;your system performance drops.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Cost is not controlled
&lt;/h2&gt;

&lt;p&gt;Normal backend logic has predictable cost.&lt;/p&gt;

&lt;p&gt;AI doesn’t.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;more tokens → more cost
&lt;/li&gt;
&lt;li&gt;retries → double cost
&lt;/li&gt;
&lt;li&gt;bad prompts → wasted cost
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without control:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;costs grow fast
&lt;/li&gt;
&lt;li&gt;no visibility on usage
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most systems are not built to track this.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. No way to handle bad output
&lt;/h2&gt;

&lt;p&gt;Traditional systems assume correct output.&lt;/p&gt;

&lt;p&gt;AI can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;hallucinate
&lt;/li&gt;
&lt;li&gt;return partial data
&lt;/li&gt;
&lt;li&gt;format responses differently
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your system trusts the output:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;wrong actions happen
&lt;/li&gt;
&lt;li&gt;data corruption starts
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You need validation layers.&lt;/p&gt;

&lt;p&gt;Most backends don’t have them.&lt;/p&gt;




&lt;h2&gt;
  
  
  What we changed
&lt;/h2&gt;

&lt;p&gt;After hitting these issues, we stopped treating AI like a feature.&lt;/p&gt;

&lt;p&gt;Instead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cleaned and structured data first
&lt;/li&gt;
&lt;li&gt;added an AI layer between backend and logic
&lt;/li&gt;
&lt;li&gt;moved AI flows to async where needed
&lt;/li&gt;
&lt;li&gt;validated every AI response
&lt;/li&gt;
&lt;li&gt;tracked usage and cost
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;AI doesn’t break your system.&lt;/p&gt;

&lt;p&gt;It exposes what was already weak.&lt;/p&gt;

&lt;p&gt;If your backend is not designed for flexibility, visibility, and control - AI will make that obvious very quickly.&lt;/p&gt;

</description>
      <category>brainpack</category>
      <category>ai</category>
      <category>webdev</category>
      <category>backend</category>
    </item>
    <item>
      <title>Why integrations fail in production (not theory, what actually breaks)</title>
      <dc:creator>Jayesh Pamnani</dc:creator>
      <pubDate>Mon, 27 Apr 2026 13:35:24 +0000</pubDate>
      <link>https://forem.com/jayesh_pamnani_4ecb1c7338/why-integrations-fail-in-production-not-theory-what-actually-breaks-2b29</link>
      <guid>https://forem.com/jayesh_pamnani_4ecb1c7338/why-integrations-fail-in-production-not-theory-what-actually-breaks-2b29</guid>
      <description>&lt;p&gt;On paper, integrations look simple.&lt;/p&gt;

&lt;p&gt;ERP connects to CRM. CRM connects to external tools. APIs handle the rest.&lt;/p&gt;

&lt;p&gt;Everything looks clean.&lt;/p&gt;

&lt;p&gt;Then you go live - and things slowly start breaking.&lt;/p&gt;

&lt;p&gt;Not immediately. But enough to cause real problems.&lt;/p&gt;

&lt;p&gt;Here’s what actually goes wrong.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Systems don’t agree on what data means
&lt;/h2&gt;

&lt;p&gt;A “customer” is not the same everywhere.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In CRM - it’s a lead with activity
&lt;/li&gt;
&lt;li&gt;In ERP - it’s a billing entity
&lt;/li&gt;
&lt;li&gt;In other tools - it might just be an email
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You map fields and think you're done.&lt;/p&gt;

&lt;p&gt;Then you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;duplicates
&lt;/li&gt;
&lt;li&gt;missing data
&lt;/li&gt;
&lt;li&gt;updates overriding each other
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The issue is not mapping. It’s the data model.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. No clear source of truth
&lt;/h2&gt;

&lt;p&gt;Multiple systems updating the same fields is where things fall apart.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CRM updates phone number
&lt;/li&gt;
&lt;li&gt;ERP updates it later
&lt;/li&gt;
&lt;li&gt;Another tool syncs an older value back
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now you have conflicting data and no clarity.&lt;/p&gt;

&lt;p&gt;If ownership is not defined, consistency is impossible.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. APIs work, workflows don’t
&lt;/h2&gt;

&lt;p&gt;APIs returning 200 does not mean your system works.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CRM creates a deal
&lt;/li&gt;
&lt;li&gt;ERP needs validated customer data
&lt;/li&gt;
&lt;li&gt;External tool triggers actions
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If timing and sequence are not defined:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;things happen too early
&lt;/li&gt;
&lt;li&gt;required data is missing
&lt;/li&gt;
&lt;li&gt;processes silently fail
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;APIs move data. Workflows define behavior.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. No handling for failure
&lt;/h2&gt;

&lt;p&gt;Production always fails at some point.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API timeouts
&lt;/li&gt;
&lt;li&gt;network issues
&lt;/li&gt;
&lt;li&gt;third-party downtime
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your system assumes everything works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;data gets lost
&lt;/li&gt;
&lt;li&gt;retries create duplicates
&lt;/li&gt;
&lt;li&gt;processes break halfway
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;retries
&lt;/li&gt;
&lt;li&gt;idempotency
&lt;/li&gt;
&lt;li&gt;proper logging
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Otherwise, failures stay hidden until users notice.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Real-time everywhere (when it shouldn’t be)
&lt;/h2&gt;

&lt;p&gt;Real-time sounds good. It’s often a mistake.&lt;/p&gt;

&lt;p&gt;It creates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;race conditions
&lt;/li&gt;
&lt;li&gt;higher load
&lt;/li&gt;
&lt;li&gt;harder debugging
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not everything needs to be instant.&lt;/p&gt;

&lt;p&gt;Some flows should be queued or batched.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. No visibility across systems
&lt;/h2&gt;

&lt;p&gt;When something breaks, no one knows where.&lt;/p&gt;

&lt;p&gt;Each system has its own logs.&lt;/p&gt;

&lt;p&gt;There is no single place to see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what triggered
&lt;/li&gt;
&lt;li&gt;what failed
&lt;/li&gt;
&lt;li&gt;what is pending
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without visibility, debugging becomes guesswork.&lt;/p&gt;




&lt;h2&gt;
  
  
  What changed for us
&lt;/h2&gt;

&lt;p&gt;We stopped treating integration as just connecting APIs.&lt;/p&gt;

&lt;p&gt;Instead:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;defined ownership of data
&lt;/li&gt;
&lt;li&gt;controlled workflows centrally
&lt;/li&gt;
&lt;li&gt;handled failure as a default case
&lt;/li&gt;
&lt;li&gt;made everything traceable
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final thought
&lt;/h2&gt;

&lt;p&gt;Most integrations don’t fail because of bad code.&lt;/p&gt;

&lt;p&gt;They fail because no one designed how systems should behave together.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>brainpack</category>
      <category>architecture</category>
      <category>api</category>
    </item>
  </channel>
</rss>
