<?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: Vishal Koriya</title>
    <description>The latest articles on Forem by Vishal Koriya (@vishal_koriya_cc39200afeb).</description>
    <link>https://forem.com/vishal_koriya_cc39200afeb</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%2F3894526%2F7d21d8e1-24a2-4609-8708-67b8761746cb.png</url>
      <title>Forem: Vishal Koriya</title>
      <link>https://forem.com/vishal_koriya_cc39200afeb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/vishal_koriya_cc39200afeb"/>
    <language>en</language>
    <item>
      <title>The moment you realize users don’t follow your flow</title>
      <dc:creator>Vishal Koriya</dc:creator>
      <pubDate>Thu, 30 Apr 2026 04:40:29 +0000</pubDate>
      <link>https://forem.com/vishal_koriya_cc39200afeb/the-moment-you-realize-users-dont-follow-your-flow-223g</link>
      <guid>https://forem.com/vishal_koriya_cc39200afeb/the-moment-you-realize-users-dont-follow-your-flow-223g</guid>
      <description>&lt;p&gt;We designed a clean flow.&lt;/p&gt;

&lt;p&gt;Step 1 → Step 2 → Step 3&lt;br&gt;
Everything validated&lt;br&gt;
Everything controlled&lt;/p&gt;

&lt;p&gt;Looked perfect.&lt;/p&gt;

&lt;p&gt;Then users showed up.&lt;/p&gt;

&lt;p&gt;They skipped steps&lt;br&gt;
Went back and edited things&lt;br&gt;
Opened multiple tabs&lt;br&gt;
Triggered the same action twice&lt;/p&gt;

&lt;p&gt;Nothing crashed.&lt;/p&gt;

&lt;p&gt;But data started breaking:&lt;br&gt;
Incomplete records&lt;br&gt;
Duplicate entries&lt;br&gt;
Out of order updates&lt;/p&gt;

&lt;p&gt;Problem was not the code.&lt;/p&gt;

&lt;p&gt;Problem was the assumption:&lt;br&gt;
Users will follow the flow.&lt;/p&gt;

&lt;p&gt;They don’t.&lt;/p&gt;

&lt;p&gt;Fix was not adding more UI restrictions.&lt;/p&gt;

&lt;p&gt;We changed the backend:&lt;br&gt;
Every step validates current state&lt;br&gt;
Actions become idempotent&lt;br&gt;
Order of execution is not trusted&lt;br&gt;
System accepts messy input and still produces a correct result&lt;/p&gt;

&lt;p&gt;Real systems are not linear.&lt;/p&gt;

&lt;p&gt;They are chaotic.&lt;/p&gt;

&lt;p&gt;This comes up a lot in BrainPack deployments. You are not designing flows for ideal users, you are building systems that survive real behavior.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>backend</category>
      <category>systemdesign</category>
      <category>ux</category>
    </item>
    <item>
      <title>You are not building features. You are controlling outcomes</title>
      <dc:creator>Vishal Koriya</dc:creator>
      <pubDate>Wed, 29 Apr 2026 04:39:28 +0000</pubDate>
      <link>https://forem.com/vishal_koriya_cc39200afeb/you-are-not-building-features-you-are-controlling-outcomes-a4i</link>
      <guid>https://forem.com/vishal_koriya_cc39200afeb/you-are-not-building-features-you-are-controlling-outcomes-a4i</guid>
      <description>&lt;p&gt;Early on, I thought my job was to build features.&lt;/p&gt;

&lt;p&gt;New endpoint&lt;br&gt;
New button&lt;br&gt;
New flow&lt;/p&gt;

&lt;p&gt;Ship it and move on.&lt;/p&gt;

&lt;p&gt;That works until the system starts doing real work.&lt;/p&gt;

&lt;p&gt;A single action is never just one thing:&lt;br&gt;
Create order&lt;br&gt;
Update inventory&lt;br&gt;
Trigger invoice&lt;br&gt;
Notify someone&lt;/p&gt;

&lt;p&gt;Now add retries, partial failures, and inconsistent data.&lt;/p&gt;

&lt;p&gt;You realize quickly:&lt;br&gt;
The feature is not the outcome.&lt;/p&gt;

&lt;p&gt;The outcome is:&lt;br&gt;
Was the order created correctly&lt;br&gt;
Is inventory accurate&lt;br&gt;
Did the right person get notified&lt;br&gt;
Can we trust the system state after all this&lt;/p&gt;

&lt;p&gt;Most of the time, the code “works”.&lt;/p&gt;

&lt;p&gt;But the outcome is wrong.&lt;/p&gt;

&lt;p&gt;That is where the real work starts.&lt;/p&gt;

&lt;p&gt;We started changing how we build:&lt;/p&gt;

&lt;p&gt;Every action is tracked end to end&lt;br&gt;
Each step is validated before moving forward&lt;br&gt;
Failures are handled explicitly, not ignored&lt;br&gt;
State is checked across systems, not assumed&lt;/p&gt;

&lt;p&gt;Less focus on adding features.&lt;/p&gt;

&lt;p&gt;More focus on controlling what actually happens after they run.&lt;/p&gt;

&lt;p&gt;Because in real systems, users do not care what you built.&lt;/p&gt;

&lt;p&gt;They care if the result is correct.&lt;/p&gt;

&lt;p&gt;This is how we approach systems at BrainPack. The goal is not to ship features, but to make sure every action across connected systems leads to a predictable and correct outcome.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>backend</category>
      <category>softwareengineering</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>You don’t need a new ERP. You need control over the one you have</title>
      <dc:creator>Vishal Koriya</dc:creator>
      <pubDate>Tue, 28 Apr 2026 04:13:12 +0000</pubDate>
      <link>https://forem.com/vishal_koriya_cc39200afeb/you-dont-need-a-new-erp-you-need-control-over-the-one-you-have-39n5</link>
      <guid>https://forem.com/vishal_koriya_cc39200afeb/you-dont-need-a-new-erp-you-need-control-over-the-one-you-have-39n5</guid>
      <description>&lt;p&gt;Most systems are not the problem.&lt;br&gt;
Lack of control is.&lt;br&gt;
We have seen companies running:&lt;br&gt;
ERP&lt;br&gt;
Spreadsheets&lt;br&gt;
Email workflows&lt;br&gt;
Custom tools&lt;/p&gt;

&lt;p&gt;Everything exists. Nothing works together.&lt;/p&gt;

&lt;p&gt;So the first instinct is:&lt;br&gt;
Let’s replace the ERP.&lt;/p&gt;

&lt;p&gt;That usually turns into a long cycle:&lt;br&gt;
Migration planning&lt;br&gt;
Data cleanup&lt;br&gt;
Vendor coordination&lt;br&gt;
Months of partial rollout&lt;/p&gt;

&lt;p&gt;And during all this, the business still runs on the same broken flows.&lt;/p&gt;

&lt;p&gt;We take a different approach.&lt;br&gt;
Instead of replacing the system:&lt;br&gt;
Connect it to the rest of the stack&lt;br&gt;
Add missing workflows on top&lt;br&gt;
Fix how data moves between systems&lt;br&gt;
Control execution from one layer&lt;/p&gt;

&lt;p&gt;In one case, order flow was split across ERP and manual Excel tracking.&lt;/p&gt;

&lt;p&gt;We did not replace anything.&lt;/p&gt;

&lt;p&gt;We added:&lt;/p&gt;

&lt;p&gt;A layer to capture orders from all sources&lt;br&gt;
Validation before pushing into ERP&lt;br&gt;
Sync logic to keep both sides consistent&lt;/p&gt;

&lt;p&gt;Same ERP. Different behavior.&lt;br&gt;
Most systems fail because they are isolated, not because they are outdated.&lt;/p&gt;

&lt;p&gt;Once you control how systems talk and execute, the need to replace them drops a lot.&lt;/p&gt;

&lt;p&gt;This is what we deal with in BrainPack deployments every day. The goal is not to remove existing systems, but to make them work together in a way the business can rely on.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>automation</category>
      <category>productivity</category>
      <category>systemdesign</category>
    </item>
    <item>
      <title>AI was slow. The problem wasn’t the model.</title>
      <dc:creator>Vishal Koriya</dc:creator>
      <pubDate>Mon, 27 Apr 2026 04:39:16 +0000</pubDate>
      <link>https://forem.com/vishal_koriya_cc39200afeb/ai-was-slow-the-problem-wasnt-the-model-3ofl</link>
      <guid>https://forem.com/vishal_koriya_cc39200afeb/ai-was-slow-the-problem-wasnt-the-model-3ofl</guid>
      <description>&lt;p&gt;AI responses were taking 6 to 8 seconds. Not the model. Data fetching.&lt;/p&gt;

&lt;p&gt;Flow was fully sequential:&lt;br&gt;
CRM&lt;br&gt;
Inventory&lt;br&gt;
Accounting&lt;br&gt;
Then build response&lt;/p&gt;

&lt;p&gt;Each question was starting from zero.&lt;/p&gt;

&lt;p&gt;Same data. Same queries. Repeated every time.&lt;/p&gt;

&lt;p&gt;Fix was simple. Stop fetching everything again and again.&lt;/p&gt;

&lt;p&gt;We changed how context is handled.&lt;/p&gt;

&lt;p&gt;Instead of fetching on every request:&lt;/p&gt;

&lt;p&gt;Preload frequently used data when session starts&lt;br&gt;
Store it in session context&lt;br&gt;
Reuse it across multiple questions&lt;/p&gt;

&lt;p&gt;So the second and third question do not hit all systems again.&lt;/p&gt;

&lt;p&gt;Problems we hit:&lt;/p&gt;

&lt;p&gt;Stale data&lt;br&gt;
Some values changed during the session&lt;br&gt;
Fixed by adding expiry on cached context&lt;br&gt;
Memory growth&lt;br&gt;
Session context kept increasing&lt;br&gt;
Fixed by limiting what we store and cleaning unused data&lt;/p&gt;

&lt;p&gt;Result:&lt;br&gt;
6 to 8 seconds down to around 3 seconds average&lt;br&gt;
Follow up queries became much faster&lt;/p&gt;

&lt;p&gt;AI did not get faster. We just stopped wasting time fetching the same data.&lt;/p&gt;

&lt;p&gt;This is the kind of problem that shows up in BrainPack deployments where AI depends on multiple existing systems. The bottleneck is almost always in how data is orchestrated, not the model.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The hardest part of adding AI on top of business systems isn’t the model. It’s making it work safely in production.</title>
      <dc:creator>Vishal Koriya</dc:creator>
      <pubDate>Thu, 23 Apr 2026 15:45:46 +0000</pubDate>
      <link>https://forem.com/vishal_koriya_cc39200afeb/the-hardest-part-of-adding-ai-on-top-of-business-systems-isnt-the-model-its-making-it-work-g0g</link>
      <guid>https://forem.com/vishal_koriya_cc39200afeb/the-hardest-part-of-adding-ai-on-top-of-business-systems-isnt-the-model-its-making-it-work-g0g</guid>
      <description>&lt;p&gt;Everyone focuses on prompts and accuracy.&lt;br&gt;
But once AI connects to real systems, things change.&lt;/p&gt;

&lt;p&gt;Now it’s not just answering.&lt;/p&gt;

&lt;p&gt;It’s:&lt;br&gt;
reading actual business data,&lt;br&gt;
triggering real actions,&lt;br&gt;
working across different tools.&lt;/p&gt;

&lt;p&gt;“Show revenue” is not just a query.&lt;br&gt;
It depends on who’s asking.&lt;br&gt;
“Create order” is not just a command.&lt;br&gt;
It needs validation before execution.&lt;/p&gt;

&lt;p&gt;This is where most demos stop.&lt;br&gt;
And real systems start.&lt;/p&gt;

&lt;p&gt;What we are building is not just AI responses.&lt;br&gt;
It’s a layer that:&lt;/p&gt;

&lt;p&gt;understands context,&lt;br&gt;
respects access,&lt;br&gt;
executes correctly.&lt;/p&gt;

&lt;p&gt;AI on top of systems works.&lt;br&gt;
But only when you treat it like infrastructure, not a feature.&lt;/p&gt;

&lt;p&gt;That’s the difference.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>architecture</category>
      <category>security</category>
    </item>
  </channel>
</rss>
