<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Fyle Stories]]></title><description><![CDATA[Stories about humans at FyleHQ]]></description><link>https://stories.fylehq.com</link><image><url>https://substackcdn.com/image/fetch/$s_!d1rq!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F68099c7c-403a-4e09-98b6-28297086a36b_425x425.png</url><title>Fyle Stories</title><link>https://stories.fylehq.com</link></image><generator>Substack</generator><lastBuildDate>Sun, 19 Apr 2026 10:26:20 GMT</lastBuildDate><atom:link href="https://stories.fylehq.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Sivaramakrishnan Narayanan]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[fylestories@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[fylestories@substack.com]]></itunes:email><itunes:name><![CDATA[Siva Narayanan]]></itunes:name></itunes:owner><itunes:author><![CDATA[Siva Narayanan]]></itunes:author><googleplay:owner><![CDATA[fylestories@substack.com]]></googleplay:owner><googleplay:email><![CDATA[fylestories@substack.com]]></googleplay:email><googleplay:author><![CDATA[Siva Narayanan]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Introducing Warm Outbound: The New Way to Capture Lost Intent]]></title><description><![CDATA[A behind-the-scenes look at building warm outbound into a scalable and predictable growth channel.]]></description><link>https://stories.fylehq.com/p/introducing-warm-outbound-the-new</link><guid isPermaLink="false">https://stories.fylehq.com/p/introducing-warm-outbound-the-new</guid><dc:creator><![CDATA[Briti Sen]]></dc:creator><pubDate>Wed, 01 Apr 2026 06:29:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!s5qL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a84f8c-d648-4b21-9d86-0e46cef544e0_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Heya! I&#8217;m <a href="https://www.linkedin.com/in/briti-s-8827a21b1/">Briti</a> and I work in the Demand Generation team at Sage.</p><p>Over the past few years, I&#8217;ve been deeply curious about marketing not just learning it but understanding how to drive real outcomes. I wanted to work on something measurable something that could directly impact how a company grows.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Sage gave me that opportunity. What started as an experiment eventually grew into a channel that now generates over <strong>100 demo requests every quarter</strong>.</p><p>We call it warm outbound and here&#8217;s exactly how I built it, so you can too.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!s5qL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a84f8c-d648-4b21-9d86-0e46cef544e0_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!s5qL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a84f8c-d648-4b21-9d86-0e46cef544e0_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!s5qL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a84f8c-d648-4b21-9d86-0e46cef544e0_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!s5qL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a84f8c-d648-4b21-9d86-0e46cef544e0_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!s5qL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a84f8c-d648-4b21-9d86-0e46cef544e0_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!s5qL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a84f8c-d648-4b21-9d86-0e46cef544e0_1536x1024.png" width="608" height="405.4725274725275" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/38a84f8c-d648-4b21-9d86-0e46cef544e0_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:608,&quot;bytes&quot;:1026459,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/192817221?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a84f8c-d648-4b21-9d86-0e46cef544e0_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!s5qL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a84f8c-d648-4b21-9d86-0e46cef544e0_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!s5qL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a84f8c-d648-4b21-9d86-0e46cef544e0_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!s5qL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a84f8c-d648-4b21-9d86-0e46cef544e0_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!s5qL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F38a84f8c-d648-4b21-9d86-0e46cef544e0_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>Finding the Opportunity</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!fe9w!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cc0cadd-7800-4009-bdf5-c79e7f5eb231_200x200.webp" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!fe9w!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cc0cadd-7800-4009-bdf5-c79e7f5eb231_200x200.webp 424w, https://substackcdn.com/image/fetch/$s_!fe9w!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cc0cadd-7800-4009-bdf5-c79e7f5eb231_200x200.webp 848w, https://substackcdn.com/image/fetch/$s_!fe9w!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cc0cadd-7800-4009-bdf5-c79e7f5eb231_200x200.webp 1272w, https://substackcdn.com/image/fetch/$s_!fe9w!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cc0cadd-7800-4009-bdf5-c79e7f5eb231_200x200.webp 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!fe9w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cc0cadd-7800-4009-bdf5-c79e7f5eb231_200x200.webp" width="200" height="200" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3cc0cadd-7800-4009-bdf5-c79e7f5eb231_200x200.webp&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:200,&quot;width&quot;:200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:119638,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/webp&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://britiwrites.substack.com/i/192752673?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cc0cadd-7800-4009-bdf5-c79e7f5eb231_200x200.webp&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!fe9w!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cc0cadd-7800-4009-bdf5-c79e7f5eb231_200x200.webp 424w, https://substackcdn.com/image/fetch/$s_!fe9w!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cc0cadd-7800-4009-bdf5-c79e7f5eb231_200x200.webp 848w, https://substackcdn.com/image/fetch/$s_!fe9w!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cc0cadd-7800-4009-bdf5-c79e7f5eb231_200x200.webp 1272w, https://substackcdn.com/image/fetch/$s_!fe9w!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3cc0cadd-7800-4009-bdf5-c79e7f5eb231_200x200.webp 1456w" sizes="100vw"></picture><div></div></div></a><figcaption class="image-caption"><em>(GIF via Giphy)</em></figcaption></figure></div><p>When I started working on this, one thing stood out almost immediately.</p><p>We were already driving strong traffic through paid and organic channels and demo requests were coming in consistently. But a large portion of visitors, people who had already gained context by visiting our website, were dropping off without any follow-up.</p><p>Once they left, there was no structured way to act on that intent. That gap felt like an opportunity.</p><h3><strong>Introducing Warm Outbound</strong></h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!V96a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9892c78e-766f-47ec-929d-cd3dc0050567_1536x804.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!V96a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9892c78e-766f-47ec-929d-cd3dc0050567_1536x804.png 424w, https://substackcdn.com/image/fetch/$s_!V96a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9892c78e-766f-47ec-929d-cd3dc0050567_1536x804.png 848w, https://substackcdn.com/image/fetch/$s_!V96a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9892c78e-766f-47ec-929d-cd3dc0050567_1536x804.png 1272w, https://substackcdn.com/image/fetch/$s_!V96a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9892c78e-766f-47ec-929d-cd3dc0050567_1536x804.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!V96a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9892c78e-766f-47ec-929d-cd3dc0050567_1536x804.png" width="1456" height="762" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9892c78e-766f-47ec-929d-cd3dc0050567_1536x804.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:762,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2045045,&quot;alt&quot;:&quot;The image conveys what warm outbound means&quot;,&quot;title&quot;:&quot;The image conveys what warm outbound means&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://britiwrites.substack.com/i/192752673?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9892c78e-766f-47ec-929d-cd3dc0050567_1536x804.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="The image conveys what warm outbound means" title="The image conveys what warm outbound means" srcset="https://substackcdn.com/image/fetch/$s_!V96a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9892c78e-766f-47ec-929d-cd3dc0050567_1536x804.png 424w, https://substackcdn.com/image/fetch/$s_!V96a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9892c78e-766f-47ec-929d-cd3dc0050567_1536x804.png 848w, https://substackcdn.com/image/fetch/$s_!V96a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9892c78e-766f-47ec-929d-cd3dc0050567_1536x804.png 1272w, https://substackcdn.com/image/fetch/$s_!V96a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9892c78e-766f-47ec-929d-cd3dc0050567_1536x804.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The idea is simple.</p><p>When someone visits your website, they&#8217;re already exploring a solution, they have context, they know what you do, they&#8217;re just not ready to raise their hand yet.</p><p>Warm outbound is about reaching out to those people while that interest is still fresh, rather than waiting for them to come back on their own.</p><p>It&#8217;s not cold outreach. It&#8217;s acting on existing demand.</p><h3>Building the First Version</h3><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wQba!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86ce90c-7543-4ab7-8fda-5bc9053770a3_220x164.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wQba!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86ce90c-7543-4ab7-8fda-5bc9053770a3_220x164.gif 424w, https://substackcdn.com/image/fetch/$s_!wQba!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86ce90c-7543-4ab7-8fda-5bc9053770a3_220x164.gif 848w, https://substackcdn.com/image/fetch/$s_!wQba!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86ce90c-7543-4ab7-8fda-5bc9053770a3_220x164.gif 1272w, https://substackcdn.com/image/fetch/$s_!wQba!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86ce90c-7543-4ab7-8fda-5bc9053770a3_220x164.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wQba!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86ce90c-7543-4ab7-8fda-5bc9053770a3_220x164.gif" width="314" height="234.07272727272726" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a86ce90c-7543-4ab7-8fda-5bc9053770a3_220x164.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:164,&quot;width&quot;:220,&quot;resizeWidth&quot;:314,&quot;bytes&quot;:43334,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://britiwrites.substack.com/i/192752673?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86ce90c-7543-4ab7-8fda-5bc9053770a3_220x164.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!wQba!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86ce90c-7543-4ab7-8fda-5bc9053770a3_220x164.gif 424w, https://substackcdn.com/image/fetch/$s_!wQba!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86ce90c-7543-4ab7-8fda-5bc9053770a3_220x164.gif 848w, https://substackcdn.com/image/fetch/$s_!wQba!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86ce90c-7543-4ab7-8fda-5bc9053770a3_220x164.gif 1272w, https://substackcdn.com/image/fetch/$s_!wQba!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86ce90c-7543-4ab7-8fda-5bc9053770a3_220x164.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption"><em>(GIF via Giphy)</em></figcaption></figure></div><p>I started small.</p><p>The initial process was mostly manual - identifying website drop-offs, enriching them with relevant data and filtering for Ideal Customer Profile fit before reaching out via email.</p><p>Even at a small scale, the results were encouraging. People responded. Conversations started. That&#8217;s when it became clear this wasn&#8217;t just an experiment, there was a real opportunity to build a channel here.</p><p>But to make this work consistently, I needed to move beyond one-off efforts.</p><p>The focus shifted to building something that was:</p><ul><li><p>Repeatable</p></li><li><p>Scalable</p></li><li><p>Predictable</p></li></ul><h3><strong>Turning It into a Workflow</strong></h3><p>Manually identifying, enriching and reaching out to every lead wasn&#8217;t sustainable. So we built automated workflows using tools like <a href="https://www.clay.com/">Clay</a> and <a href="https://n8n.io/">n8n</a> to handle the entire process end-to-end.</p><p>Here&#8217;s how the four-step system works and how you can replicate it:</p><p><strong>1. Capture</strong> - Rather than tracking visitors across every page on our website, we narrowed our focus to high-intent pages only. This kept our pipeline defined and ensured we were only acting on companies who were genuinely exploring a solution, captured with the help of AI-powered visitor identification tools.</p><p>These tools work by matching anonymous website sessions to company data, surfacing which businesses are actively browsing your site even when no form is filled.</p><p><strong>2. Enrich &amp; Filter</strong> - Once we know which companies were browsing, we enrich that data into actual business contacts but only for people who match our Ideal Customer Profile.</p><p>&#128161; Before any outreach, leads are also run against a suppression list to automatically exclude existing customers and active opportunities. This is a deliberate step: enriching and filtering selectively means we&#8217;re not wasting credits on irrelevant contacts or embarrassing ourselves by reaching out to someone we&#8217;re already in conversation with.</p><p><strong>3. Segment</strong> - Those filtered contacts are then segmented based on context and intent - job title, company size and the specific pages they visited. This ensures each person is routed to the most relevant campaign rather than receiving a generic message that won&#8217;t resonate.</p><p><strong>4. Trigger</strong> - Leads then flow into targeted email campaigns, each matched to a specific segment and use case. The outreach feels personal because it&#8217;s built on actual intent, not guesswork.</p><p>In simple terms, the system worked like this:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!q1c_!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3939dac6-27de-4016-8f76-d791961f897f_1024x559.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!q1c_!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3939dac6-27de-4016-8f76-d791961f897f_1024x559.png 424w, https://substackcdn.com/image/fetch/$s_!q1c_!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3939dac6-27de-4016-8f76-d791961f897f_1024x559.png 848w, https://substackcdn.com/image/fetch/$s_!q1c_!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3939dac6-27de-4016-8f76-d791961f897f_1024x559.png 1272w, https://substackcdn.com/image/fetch/$s_!q1c_!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3939dac6-27de-4016-8f76-d791961f897f_1024x559.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!q1c_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3939dac6-27de-4016-8f76-d791961f897f_1024x559.png" width="1024" height="559" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3939dac6-27de-4016-8f76-d791961f897f_1024x559.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:559,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:647825,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://britiwrites.substack.com/i/192752673?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3939dac6-27de-4016-8f76-d791961f897f_1024x559.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!q1c_!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3939dac6-27de-4016-8f76-d791961f897f_1024x559.png 424w, https://substackcdn.com/image/fetch/$s_!q1c_!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3939dac6-27de-4016-8f76-d791961f897f_1024x559.png 848w, https://substackcdn.com/image/fetch/$s_!q1c_!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3939dac6-27de-4016-8f76-d791961f897f_1024x559.png 1272w, https://substackcdn.com/image/fetch/$s_!q1c_!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3939dac6-27de-4016-8f76-d791961f897f_1024x559.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>In short: <strong>Capture &#8594; Enrich &amp; Filter &#8594; Segment &#8594; Trigger outreach.</strong> That four-step system is what moved warm outbound from experiment to scalable channel.</p><h3><strong>Where We Are Today</strong></h3><p>Today, warm outbound generates over <strong>100 demo requests per quarter</strong>, consistently.</p><p>It works alongside our existing paid and organic channels, helping capture demand that would otherwise be lost entirely.</p><p>Instead of relying only on form fills, we&#8217;re able to engage with potential buyers earlier in their journey, while intent is still fresh.</p><p>And this is still early. There&#8217;s significant room to scale further.</p><h3><strong>What&#8217;s Next - And What You Should Try</strong></h3><p>I&#8217;m continuing to build on this foundation.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!k8yF!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa7ba3-ef01-447a-8fd7-6aad9fae0f7c_220x220.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!k8yF!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa7ba3-ef01-447a-8fd7-6aad9fae0f7c_220x220.gif 424w, https://substackcdn.com/image/fetch/$s_!k8yF!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa7ba3-ef01-447a-8fd7-6aad9fae0f7c_220x220.gif 848w, https://substackcdn.com/image/fetch/$s_!k8yF!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa7ba3-ef01-447a-8fd7-6aad9fae0f7c_220x220.gif 1272w, https://substackcdn.com/image/fetch/$s_!k8yF!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa7ba3-ef01-447a-8fd7-6aad9fae0f7c_220x220.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!k8yF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa7ba3-ef01-447a-8fd7-6aad9fae0f7c_220x220.gif" width="288" height="288" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/74aa7ba3-ef01-447a-8fd7-6aad9fae0f7c_220x220.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:220,&quot;width&quot;:220,&quot;resizeWidth&quot;:288,&quot;bytes&quot;:329471,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://britiwrites.substack.com/i/192752673?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa7ba3-ef01-447a-8fd7-6aad9fae0f7c_220x220.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!k8yF!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa7ba3-ef01-447a-8fd7-6aad9fae0f7c_220x220.gif 424w, https://substackcdn.com/image/fetch/$s_!k8yF!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa7ba3-ef01-447a-8fd7-6aad9fae0f7c_220x220.gif 848w, https://substackcdn.com/image/fetch/$s_!k8yF!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa7ba3-ef01-447a-8fd7-6aad9fae0f7c_220x220.gif 1272w, https://substackcdn.com/image/fetch/$s_!k8yF!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F74aa7ba3-ef01-447a-8fd7-6aad9fae0f7c_220x220.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a><figcaption class="image-caption"><em>(GIF via Giphy)</em></figcaption></figure></div><p>The focus now is on increasing volume, sharpening targeting and expanding outreach beyond email to make the system even more robust.</p><p>If you&#8217;re running demand gen and you&#8217;re not acting on high-intent website traffic, that&#8217;s the first place to start. You don&#8217;t need a perfect system on day one. Start manual, prove the concept, then automate.</p><p>For us, warm outbound is no longer just an experiment.</p><p>It&#8217;s becoming a core part of how we capture demand.</p><p><em>Not all demand needs to be created. Sometimes it already exists. The real question is whether you&#8217;re able to act on it at the right time.</em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[When API Migration Meets an Unfamiliar Domain: The Dwolla Migration Story]]></title><description><![CDATA[What happens if the most challenging aspect of a migration isn&#8217;t the code itself?]]></description><link>https://stories.fylehq.com/p/when-api-migration-meets-an-unfamiliar</link><guid isPermaLink="false">https://stories.fylehq.com/p/when-api-migration-meets-an-unfamiliar</guid><dc:creator><![CDATA[Sahil K]]></dc:creator><pubDate>Tue, 10 Mar 2026 05:50:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Xs-C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2940fee4-f8ba-44c0-94c5-78c8a6c8baef_1970x1106.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi, I&#8217;m Sahil K., and I&#8217;m back with yet another API migration story! &#128578;</p><p>If you&#8217;ve read my prior migration posts: <strong><a href="https://stories.fylehq.com/p/the-way-we-migrate-apis-projects">Projects API Migration</a></strong> (single-endpoint refactor) and <strong><a href="https://stories.fylehq.com/p/ccc-api-migration">Corporate Credit Cards API Migration</a></strong> (wide-scope migration across payment flows), you know how and why we are migrating APIs. As a developer, for me, each API migration comes with something new. And with every migration, I learned new things and thought I had a decent mental model of what these things looked like. For every other aspect, Dwolla API Migration follows the same disciplined process, but with one important twist: the Dwolla migration required learning payment-domain concepts (ACH, micro-deposits, beneficial owners) to get the frontend behavior correct.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Xs-C!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2940fee4-f8ba-44c0-94c5-78c8a6c8baef_1970x1106.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Xs-C!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2940fee4-f8ba-44c0-94c5-78c8a6c8baef_1970x1106.png 424w, https://substackcdn.com/image/fetch/$s_!Xs-C!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2940fee4-f8ba-44c0-94c5-78c8a6c8baef_1970x1106.png 848w, https://substackcdn.com/image/fetch/$s_!Xs-C!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2940fee4-f8ba-44c0-94c5-78c8a6c8baef_1970x1106.png 1272w, https://substackcdn.com/image/fetch/$s_!Xs-C!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2940fee4-f8ba-44c0-94c5-78c8a6c8baef_1970x1106.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Xs-C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2940fee4-f8ba-44c0-94c5-78c8a6c8baef_1970x1106.png" width="1456" height="817" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2940fee4-f8ba-44c0-94c5-78c8a6c8baef_1970x1106.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:817,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:286852,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/188478063?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2940fee4-f8ba-44c0-94c5-78c8a6c8baef_1970x1106.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Xs-C!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2940fee4-f8ba-44c0-94c5-78c8a6c8baef_1970x1106.png 424w, https://substackcdn.com/image/fetch/$s_!Xs-C!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2940fee4-f8ba-44c0-94c5-78c8a6c8baef_1970x1106.png 848w, https://substackcdn.com/image/fetch/$s_!Xs-C!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2940fee4-f8ba-44c0-94c5-78c8a6c8baef_1970x1106.png 1272w, https://substackcdn.com/image/fetch/$s_!Xs-C!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2940fee4-f8ba-44c0-94c5-78c8a6c8baef_1970x1106.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3>Why am I Writing This? &#9999;&#65039;</h3><p>Here&#8217;s my honest answer: every time I&#8217;ve written one of these kinds of blogs, it has forced me to reflect on what actually made that initiative hard. Not the surface-level &#8220;we changed endpoints &#8230;&#8221; kind of hard, but the <em>what did I not know going in</em> kind. And looking back, the Dwolla migration had more of those moments than any I&#8217;ve done before.</p><p>The Projects API migration was my introduction to the world of API migration as an intern, involving a single GET API, response transformation, and a couple of personas. The CCC migration was more extensive in scope, involving 10+ APIs, card and transaction workflows, and a complex export feature; however, the domain was something I could reason about fairly quickly. Credit card transactions, assignments, and statements, the words made sense.</p><p>Dwolla was different. The moment I opened the PRD (<strong>Product Requirements Document</strong>), I was staring at words I didn&#8217;t know: ACH, micro-deposit verification, beneficial owner, Dwolla customer, funding source. It felt less like an API migration and more like being handed a map in a language I hadn&#8217;t learned yet.</p><p>And that&#8217;s why I&#8217;m writing this. Not just because the technical work was interesting (though it was), but because this migration taught me something I hadn&#8217;t expected: that understanding the domain is the real prerequisite, not just reading the API docs.</p><p><em>This is the story of a journey where an API migration turns into a domain crash course!</em></p><div><hr></div><h3>What Even Is Dwolla? &#128218;</h3><p>Before I could migrate anything, I had to understand what I was migrating <em>for</em>.</p><p><strong><a href="https://www.dwolla.com/">Dwolla</a></strong> is a payment infrastructure provider that powers <strong><a href="https://www.investopedia.com/terms/a/ach.asp">ACH (Automated Clearing House)</a></strong> bank transfers. In our app, it&#8217;s what enables employees to receive their expense reimbursements directly to their bank accounts, no check, no delay, just a bank transfer.</p><p>The core entity I&#8217;d be working with is called a <strong>Dwolla Customer.</strong> A metadata record that tracks the verification status of a user or an organization. And the verification journey is surprisingly involved:</p><ul><li><p>Has the customer&#8217;s identity been verified?</p></li><li><p>Has a bank account been linked?</p></li><li><p>Has that bank account been verified via micro-deposits (where the bank sends two tiny deposits and the user confirms the amounts)?</p></li><li><p>Has a beneficial owner been added and verified (required for certain business types)?</p></li><li><p>Has the account been suspended, or does it need a retry after a failed verification?</p></li></ul><p>Each of these states drove different UI behaviors across more than a dozen components: dashboards, report submission dialogs, settings pages, and admin views. If I had just started swapping endpoints without understanding this, I would have been flying blind.</p><div><hr></div><h3>How Was This Different From My Previous Migrations &#8265;</h3><p>Let me be upfront about this,</p><p><strong><a href="https://stories.fylehq.com/p/the-way-we-migrate-apis-projects">Projects API migration</a></strong> taught me the basics, how to write an ED, how to transform API responses, and why we migrate in the first place. The scope was manageable: one GET endpoint, one persona, a straightforward field rename.</p><p><strong><a href="https://stories.fylehq.com/p/ccc-api-migration">CCC API migration</a></strong> taught me the scale. 40+ API calls audited, 10+ APIs migrated, 2 categories of actions (card-level and transaction-level), and a particularly complex export feature. But the domain was familiar territory. I could look at <code>&#8220;Assign card&#8221;</code> or <code>&#8220;Delete transaction&#8221;</code> and immediately understand what the code was supposed to do.</p><p><strong>Dwolla API migration was both at once:</strong> wide in scope <em>and</em> unfamiliar in domain. It added two layers of complexity I hadn&#8217;t encountered before: a subtle change in how <code>null</code> Responses were handled, and a persona-specific field problem that required understanding <em>why</em> two different user roles needed different data from what looked like the same endpoint.</p><p>More on both of those in a bit.</p><div><hr></div><h3>The Old World vs. The New &#128117;&#127995;</h3><p>The old API had endpoints that required resource IDs in the URL:</p><p><code>GET /api/orgusers/{id}/dwolla_customers &#8592; spender context</code></p><p><code>GET /api/orgs/{id}/dwolla_customers &#8592; admin context</code></p><p>The new Platform API drops the IDs (authentication context handles scoping) and uses persona-specific paths:</p><p><code>GET /platform/v1/spender/dwolla_customers</code></p><p><code>GET /platform/v1/admin/dwolla_customers</code></p><p>Cleaner, more RESTful, and a consistent pattern with the rest of our <strong><a href="https://fyle.stoplight.io/">Platform APIs</a></strong>. Easy enough to reason about.</p><p>But the API response key field names, that&#8217;s where things got interesting.</p><div><hr></div><h3>Why not just Find-and-Replace &#129320;</h3><p>The new Platform API standardized all boolean fields with a <code>is_*</code> prefix.</p><p>Ten boolean fields, all renamed. And these API response fields were used across 16+ component files.</p><p>My first instinct was simple global find-and-replace. Done in five minutes, right? Not quite.</p><p>This approach had two main problems: firstly, it creates a lot of noise in component files, which makes it harder to review the change systematically. And second, most importantly, if any of these field names had already been used as local variable names or component properties, a blind find-and-replace would create duplicate declaration issues. The code would break in ways that aren&#8217;t immediately obvious during review.</p><p>Hmm, okay, then I thought, why not transform the response in the service layer itself, just like I did during the Projects API migration? However, the challenge with the Projects API migration was that it involved many keys, and the changes in their naming were not as straightforward as simply adding a <code>"is_*"</code> prefix. We decided to transform the names to facilitate a quicker migration of the API. Unfortunately, these transformed API methods have become an oversight in the codebase, making it harder to read and maintain. Ultimately, we will need to eliminate them in the future.</p><p>So instead, I created a new model <code>DwollaCustomerPlatform</code> , that exactly reflected the API response shape with <code>is_*</code> field names. The service layer owns the HTTP call and returns this typed model. Components consume it and use <code>is_*</code> fields directly. This way, if the API shape ever changes again, there&#8217;s one place to update.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;typescript&quot;,&quot;nodeId&quot;:&quot;1b5aa904-2593-4396-ba13-5c0d832d691a&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-typescript">export interface DwollaCustomerPlatform {
  is_customer_verified: boolean;
  is_bank_account_added: boolean;
  is_bank_account_verified: boolean;
  is_customer_suspended: boolean;
  // ...
}</code></pre></div><p>Clean, explicit, typed. Anyone reading the code knows exactly what the API returns.</p><p>The tradeoff was risk. Updating field accesses across 16+ files meant that missing even one would cause a silent failure, and Dwolla data is financial data. A missed field update <code>is_bank_account_verified</code> doesn&#8217;t just show a wrong value; it could break the consistency of a transaction flow entirely. So the approach demanded care: methodical file-by-file updates, TypeScript&#8217;s type checker flagging every unchecked access, and thorough testing at the end. But it was the right call, temporary pain for a codebase that would actually be maintainable on the other side.</p><div><hr></div><h2>The Null Problem (Which Was Actually a Correctness Problem) &#129753;</h2><p>Here&#8217;s the change that required the most careful attention.</p><p>The old API would throw an error if no Dwolla customer record existed for a user or org. Components had been written to treat that error as a signal: <em>no record exists yet</em>. It was an implicit convention, not great, but it worked.</p><p>The new Platform API changed this: it returns <code>HTTP 200</code> with a <code>null</code> body when no record exists. Which is actually a better API design! But it meant that every component&#8217;s error-handling logic was now wrong.</p><p>Where components previously caught an API error as &#8220;no data,&#8221; they&#8217;d now receive a successful response with <code>null</code>. If you didn&#8217;t handle that, you&#8217;d get runtime errors trying to access properties on <code>null</code>.</p><p>The fix was systematic: update return types to <code>Observable&lt;DwollaCustomerPlatform | null&gt;</code>, add optional chaining on every property access (<code>dwollaCustomer?.is_customer_suspended</code>), and add explicit null guards at decision points where null was unacceptable.</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;typescript&quot;,&quot;nodeId&quot;:&quot;6ab7f7f6-8870-418e-92e7-f49d67e83060&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-typescript">switchMap((dwollaCustomer: DwollaCustomerPlatform | null) =&gt; {
  if (!dwollaCustomer) {
    return throwError(() =&gt; new Error('No Dwolla customer record found'));
  }
  // safe to proceed
})</code></pre></div><p>The TypeScript compiler was my best friend here. Once I updated the return type, it surfaced every unchecked access across all 16 files. I couldn&#8217;t miss one even if I tried.</p><div><hr></div><h3>The Persona Problem (The Interesting One) &#129465;&#127996;</h3><p>This is the part I find most interesting to talk about, because it required understanding the domain, not just the code.</p><p>When a spender (employee) navigates to their profile page, the app needs to check whether the <em>organization&#8217;s</em> bank account is verified, not the spender&#8217;s own. This determines whether the spender can even see their personal bank account section. The org&#8217;s verification status is the gate.</p><p>In the old code, both admin and spender contexts used the same field name <code>customer_verified</code> because the underlying data was the same, and both roles could hit the same endpoint. Nobody had documented this assumption. It was just baked into the code.</p><p>In the new Platform API, things are split. The admin endpoint (<code>/admin/dwolla_customers</code>) is now admin-only. Spenders can&#8217;t touch it. And the spender endpoint returns a <em>separate</em> field, <code>is_org_customer_verified</code>, specifically to handle this use case, since spenders still need to know the org&#8217;s verification status without being able to access the admin endpoint directly.</p><p>Here&#8217;s where it gets interesting: the old code in one shared component used <code>customer_verified</code> for both roles. For the admin role, that was correct. For the spender role, it was already semantically wrong; it just happened to work because both roles could access the same endpoint. Once the admin endpoint became inaccessible to spenders, that component would silently break: a 403 in the background, and the bank account section just&#8230; disappearing for spenders, with no obvious error to debug.</p><p>We caught this during the ED phase. And the fix had two parts.</p><p>First, flagging it as a backend dependency: the Platform API needed to be exposed <code>is_org_customer_verified</code> on the spender endpoint so the frontend had something to work with. This couldn&#8217;t be solved purely on the frontend side.</p><p>Second, once that field existed, fixing the condition in the shared component:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;typescript&quot;,&quot;nodeId&quot;:&quot;4e5f4eb9-05b4-4692-8cf8-8e67c4b8653f&quot;}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-typescript">const isVerified =
  this.userRole === 'ADMIN'
    ? dwollaCustomer.is_customer_verified
    : (dwollaCustomer.is_org_customer_verified ?? false);</code></pre></div><p>One migration, one pre-existing bug surfaced and fixed, one silent production failure avoided. This is exactly the kind of thing that doesn&#8217;t show up in a ticket description; it only appears when you understand what each component is actually doing and <em>why</em>, not just what endpoint it&#8217;s calling.</p><div><hr></div><h3>What I Took Away &#128104;&#127995;&#8205;&#127891;</h3><p>Every migration teaches me something different. Here&#8217;s what this one added to the list:</p><ul><li><p><strong>Domain understanding is the real prerequisite.</strong> I couldn&#8217;t have caught the spender profile access-control gap or understood why <code>is_org_customer_verified</code> existed as a separate field without first understanding what ACH onboarding actually looked like for users and organizations. The code is just the implementation of business rules, and you have to know the rules to know if the implementation is right.</p></li><li><p><strong>Null contracts are API contracts.</strong> The shift from &#8220;error on missing record&#8221; to &#8220;null on missing record&#8221; isn&#8217;t a small detail. It changes how every consumer has to be written. Treating it as a minor footnote in the API changelog would have been a mistake.</p></li><li><p><strong>The service layer is the right place to own API complexity.</strong> Field renames, payload wrapping, and endpoint selection by persona all live in the service. Components stay clean. Reviews are easier. Future changes have one place to go.</p></li><li><p><strong>Migrations surface what the original code assumed.</strong> The old code assumed the API would not return null. It was assumed that <code>customer_verified</code> meant the same thing for all roles. These assumptions were not documented; they were just baked into the code. A migration forces you to read carefully enough to notice them.</p></li></ul><div><hr></div><h3>Wrapping Up &#128478;&#65039;</h3><p>This migration was the most involved one I&#8217;ve done so far, with wider code impact than Projects, a more complex domain than CCC, and a set of subtle contract changes that required careful attention rather than mechanical execution.</p><p>But it&#8217;s also the one I learned the most from. ACH, Dwolla, micro-deposits, and beneficial owners were all new words to me when I started. By the end, I could draw the full data flow from a user clicking &#8220;Add Bank Account&#8221; to the Dwolla API call and back.</p><p>That kind of domain knowledge doesn&#8217;t come from reading API docs. It comes from slowing down, asking questions, and refusing to treat a migration as a purely mechanical task.</p><p>A big thank you to <strong><a href="https://www.linkedin.com/in/dimple-kaluram-hemanth-2073a5158/">Dimple</a></strong> for the help, and to <strong><a href="https://www.linkedin.com/in/kirti-gautam/">Kirti</a></strong> and <strong><a href="https://www.linkedin.com/in/prabhakarmishra-/">Prabhakar</a></strong> for patiently fielding every backend query I had and keeping the API contracts tight. Couldn&#8217;t have caught half of what I caught without those conversations.</p><p>Here&#8217;s to more of that.</p><p>Happy coding! &#128640;</p>]]></content:encoded></item><item><title><![CDATA[📖 My Journey : Purpose, People & Problem-Solving]]></title><description><![CDATA[Driven by Curiosity, Inspired by Growth]]></description><link>https://stories.fylehq.com/p/my-journey-purpose-people-and-problem</link><guid isPermaLink="false">https://stories.fylehq.com/p/my-journey-purpose-people-and-problem</guid><dc:creator><![CDATA[Sonia]]></dc:creator><pubDate>Fri, 22 Aug 2025 08:19:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!a2es!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8109d062-d76c-44e1-ba15-ac7620a75680_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!a2es!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8109d062-d76c-44e1-ba15-ac7620a75680_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!a2es!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8109d062-d76c-44e1-ba15-ac7620a75680_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!a2es!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8109d062-d76c-44e1-ba15-ac7620a75680_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!a2es!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8109d062-d76c-44e1-ba15-ac7620a75680_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!a2es!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8109d062-d76c-44e1-ba15-ac7620a75680_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!a2es!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8109d062-d76c-44e1-ba15-ac7620a75680_1536x1024.png" width="728" height="485.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8109d062-d76c-44e1-ba15-ac7620a75680_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Sonia&#8217;s professional journey, highlighting her growth, with a colorful timeline-style illustration representing purpose, people and problem-solving in a puzzle piece.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Sonia&#8217;s professional journey, highlighting her growth, with a colorful timeline-style illustration representing purpose, people and problem-solving in a puzzle piece." title="Sonia&#8217;s professional journey, highlighting her growth, with a colorful timeline-style illustration representing purpose, people and problem-solving in a puzzle piece." srcset="https://substackcdn.com/image/fetch/$s_!a2es!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8109d062-d76c-44e1-ba15-ac7620a75680_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!a2es!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8109d062-d76c-44e1-ba15-ac7620a75680_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!a2es!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8109d062-d76c-44e1-ba15-ac7620a75680_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!a2es!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8109d062-d76c-44e1-ba15-ac7620a75680_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Where purpose, people, and problem-solving come together.</figcaption></figure></div><p>I&#8217;ve spent years learning and growing at global companies like <a href="https://www.amazon.com">Amazon</a> and <a href="https://www.tcs.com">TCS</a>. Those experiences gave me a solid foundation&#8212;an appreciation for structure, teamwork, and the power of large-scale impact. </p><p>But I realized I wanted to be in a space where I could see the results of my work firsthand, connect directly with clients, and move quickly from ideas to action. That curiosity let me to Fyle and the world of Customer Success. At Fyle, I&#8217;ve found the best of both worlds: the freedom to take initiative and a team that makes collaboration effortless.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Hi, I&#8217;m <strong><a href="http://linkedin.com/in/sonia16saha">Sonia</a> &#128075;</strong></p><p>It&#8217;s been a year since I joined Fyle and looking back, it feels like nothing short of a whirlwind&#8212;in the best way possible. I&#8217;ve learned a ton, stretched myself in ways I didn&#8217;t expect and built connections that go far beyond just &#8220;work.&#8221;</p><p>Beyond work, I thrive on balance and little joys. I could live on Chinese food every day and my Bengali sweet tooth always makes room for dessert. For me, it&#8217;s all about mixing hustle with happiness&#8212;and making the ride as colorful (and delicious) as possible.</p><h4><strong>&#128260; From Processes to People</strong></h4><p>One of the biggest shifts for me has been how collaboration happens. Here, cross-functional collaboration isn&#8217;t scheduled into quarterly meetings&#8212; It happens every day : in<a href="https://slack.com/intl/en-in/"> Slack</a> threads, in quick <a href="https://slack.com/intl/en-in/help/articles/4402059015315-Use-huddles-in-Slack">huddles</a>, in real-time problem-solving.</p><p>In my role, I get to work closely with product, engineering, support, marketing, and other teams to ensure our customers don&#8217;t just use Fyle&#8212;they love it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HkaE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a0d960c-aabb-4603-a3a4-7f21271b19c7_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HkaE!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a0d960c-aabb-4603-a3a4-7f21271b19c7_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!HkaE!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a0d960c-aabb-4603-a3a4-7f21271b19c7_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!HkaE!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a0d960c-aabb-4603-a3a4-7f21271b19c7_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!HkaE!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a0d960c-aabb-4603-a3a4-7f21271b19c7_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HkaE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a0d960c-aabb-4603-a3a4-7f21271b19c7_1536x1024.png" width="728" height="485.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a0d960c-aabb-4603-a3a4-7f21271b19c7_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:728,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Visual representing team collaboration and people-driven problem-solving in a modern workplace.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Visual representing team collaboration and people-driven problem-solving in a modern workplace." title="Visual representing team collaboration and people-driven problem-solving in a modern workplace." srcset="https://substackcdn.com/image/fetch/$s_!HkaE!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a0d960c-aabb-4603-a3a4-7f21271b19c7_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!HkaE!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a0d960c-aabb-4603-a3a4-7f21271b19c7_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!HkaE!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a0d960c-aabb-4603-a3a4-7f21271b19c7_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!HkaE!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a0d960c-aabb-4603-a3a4-7f21271b19c7_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Building success through people-first connections</em></figcaption></figure></div><p>From onboarding to ongoing engagement, managing a diverse portfolio of clients means every step of the customer journey is an opportunity to create impact. I get to be right at the heart of it&#8212;partnering with real users, solving meaningful problems, and witnessing firsthand how we&#8217;re transforming expense management for the better.</p><p></p><h4><strong>&#128105;&#8205;&#128187; A Day in the Life of a CSM</strong></h4><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!4umW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec94ba46-b3f6-4c6d-b389-45166e4d82f1_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!4umW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec94ba46-b3f6-4c6d-b389-45166e4d82f1_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!4umW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec94ba46-b3f6-4c6d-b389-45166e4d82f1_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!4umW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec94ba46-b3f6-4c6d-b389-45166e4d82f1_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!4umW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec94ba46-b3f6-4c6d-b389-45166e4d82f1_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!4umW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec94ba46-b3f6-4c6d-b389-45166e4d82f1_1536x1024.png" width="725" height="483.4993131868132" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ec94ba46-b3f6-4c6d-b389-45166e4d82f1_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:725,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Illustration of a woman sitting at a desk with a laptop, coffee mug, checklist, phone, and clock, symbolizing the daily routine of a customer success manager.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Illustration of a woman sitting at a desk with a laptop, coffee mug, checklist, phone, and clock, symbolizing the daily routine of a customer success manager." title="Illustration of a woman sitting at a desk with a laptop, coffee mug, checklist, phone, and clock, symbolizing the daily routine of a customer success manager." srcset="https://substackcdn.com/image/fetch/$s_!4umW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec94ba46-b3f6-4c6d-b389-45166e4d82f1_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!4umW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec94ba46-b3f6-4c6d-b389-45166e4d82f1_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!4umW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec94ba46-b3f6-4c6d-b389-45166e4d82f1_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!4umW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fec94ba46-b3f6-4c6d-b389-45166e4d82f1_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A peek into a CSM&#8217;s day</figcaption></figure></div><p>What does my day look like? No two days are alike&#8212;and that&#8217;s exactly what keeps it exciting. But some core themes remain constant :</p><ul><li><p>Managing client portfolios&#8212;tracking adoption, engagement, and business alignment.</p></li><li><p>Partnering with finance teams to simplify their setup, support reconciliations, and answer billing queries.</p></li><li><p>Troubleshooting integrations with platforms like<a href="https://quickbooks.intuit.com/global/"> QuickBooks</a>,<a href="https://www.netsuite.com/portal/in/home.shtml"> NetSuite</a>, and<a href="https://www.xero.com/"> Xero</a> etc&#8212;ensuring clean, reliable data flows.</p></li><li><p>Collaborating with product teams to share client feedback and surface insights that inform roadmap priorities.</p></li><li><p>Helping optimize policy configurations for compliance, accuracy, and operational efficiency.</p></li><li><p>Proactively checking in with clients&#8212;supporting their goals and spotting new opportunities to add value.</p></li><li><p>Hosting onboarding sessions tailored to each customer&#8217;s workflow and culture.<br></p></li></ul><p>It&#8217;s not just about solving challenges&#8212;it&#8217;s about building relationships and <strong>being a trusted partner</strong> in their success. At Fyle, being close to the client isn&#8217;t an occasional responsibility&#8212;it&#8217;s the core of the job. That proximity has been one of the most rewarding parts of my journey. I get to be the voice of the customer internally and a trusted advisor externally. Every resolved issue feels like a win. Every insight shared helps the product grow.</p><p></p><h4><strong>&#129504; What I Love About Being a CSM</strong></h4><p>What truly energizes me about being a CSM is the blend of <strong>purpose, people, and problem-solving</strong> that defines the role. I love the variety. No two days are the same. Some moments call for deep listening and empathy, others for analytical thinking or strategic planning. I get to wear multiple hats&#8212;consultant, advocate, troubleshooter, and partner&#8212;all while staying connected to the real-world impact of our product.</p><p>Every client interaction is an opportunity to build trust, uncover insights, and drive meaningful outcomes&#8212;not just for them, but for us as a company.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!YzWY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee9d061a-a550-44f5-95b6-2a2673b9aabe_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!YzWY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee9d061a-a550-44f5-95b6-2a2673b9aabe_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!YzWY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee9d061a-a550-44f5-95b6-2a2673b9aabe_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!YzWY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee9d061a-a550-44f5-95b6-2a2673b9aabe_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!YzWY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee9d061a-a550-44f5-95b6-2a2673b9aabe_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!YzWY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee9d061a-a550-44f5-95b6-2a2673b9aabe_1536x1024.png" width="724" height="482.8324175824176" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ee9d061a-a550-44f5-95b6-2a2673b9aabe_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:724,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;Illustration of a woman wearing a headset, smiling while speaking during a video call, with sticky notes, calendar, lightbulb, and team avatars around her.&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Illustration of a woman wearing a headset, smiling while speaking during a video call, with sticky notes, calendar, lightbulb, and team avatars around her." title="Illustration of a woman wearing a headset, smiling while speaking during a video call, with sticky notes, calendar, lightbulb, and team avatars around her." srcset="https://substackcdn.com/image/fetch/$s_!YzWY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee9d061a-a550-44f5-95b6-2a2673b9aabe_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!YzWY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee9d061a-a550-44f5-95b6-2a2673b9aabe_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!YzWY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee9d061a-a550-44f5-95b6-2a2673b9aabe_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!YzWY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fee9d061a-a550-44f5-95b6-2a2673b9aabe_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Making an impact each day</figcaption></figure></div><p>But what I enjoy most is seeing the lightbulb moments&#8212;when a customer realizes how much easier their workflow has become, or when a product tweak we suggested makes a huge difference to their daily operations and reconciliations. That&#8217;s what makes the work deeply fulfilling.</p><p></p><h4><strong>&#129309; The Power of Teamwork</strong></h4><p>One thing I&#8217;ve truly come to appreciate at Fyle is the <strong>tight-knit collaboration</strong> across teams. If there&#8217;s one thing that stands out about Fyle, it&#8217;s the people. The <strong>collaboration</strong> here isn&#8217;t just efficient&#8212;it&#8217;s genuine.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hos8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145c3cd1-6c5a-4431-8e48-565ebd698784_500x338.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hos8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145c3cd1-6c5a-4431-8e48-565ebd698784_500x338.gif 424w, https://substackcdn.com/image/fetch/$s_!Hos8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145c3cd1-6c5a-4431-8e48-565ebd698784_500x338.gif 848w, https://substackcdn.com/image/fetch/$s_!Hos8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145c3cd1-6c5a-4431-8e48-565ebd698784_500x338.gif 1272w, https://substackcdn.com/image/fetch/$s_!Hos8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145c3cd1-6c5a-4431-8e48-565ebd698784_500x338.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hos8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145c3cd1-6c5a-4431-8e48-565ebd698784_500x338.gif" width="500" height="338" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/145c3cd1-6c5a-4431-8e48-565ebd698784_500x338.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:338,&quot;width&quot;:500,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1858386,&quot;alt&quot;:&quot;Animated visual of a team celebrating success together, symbolizing collaboration and unity.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/171494683?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145c3cd1-6c5a-4431-8e48-565ebd698784_500x338.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Animated visual of a team celebrating success together, symbolizing collaboration and unity." title="Animated visual of a team celebrating success together, symbolizing collaboration and unity." srcset="https://substackcdn.com/image/fetch/$s_!Hos8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145c3cd1-6c5a-4431-8e48-565ebd698784_500x338.gif 424w, https://substackcdn.com/image/fetch/$s_!Hos8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145c3cd1-6c5a-4431-8e48-565ebd698784_500x338.gif 848w, https://substackcdn.com/image/fetch/$s_!Hos8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145c3cd1-6c5a-4431-8e48-565ebd698784_500x338.gif 1272w, https://substackcdn.com/image/fetch/$s_!Hos8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F145c3cd1-6c5a-4431-8e48-565ebd698784_500x338.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Teamwork in action  (GIF via Giphy)</em></figcaption></figure></div><p>Need a quick answer? Help is always a ping away. We cheer for each other&#8217;s wins and share learnings from our challenges. That culture of openness and mutual support doesn&#8217;t just improve how we work&#8212;it strengthens how we grow together.</p><p></p><h4><strong>&#128161; Final Thoughts</strong></h4><p>Looking back, every chapter of my career&#8212;from structured environments at MNCs to the dynamic, client-focused world of Account Management&#8212;has shaped who I am today. I&#8217;m grateful for the experiences, the people, and the lessons along the way. And I&#8217;m excited for the adventures and impact that lie ahead.</p><p>I&#8217;ve found a space here that aligns with what drives me: <strong>people, problem-solving, and purposeful progress</strong>. I get to do meaningful work every day, supported by an amazing team and continuously learn from the challenges we solve together.</p><p>If you&#8217;re considering a move&#8212;or taking the plunge into startup life&#8212; here&#8217;s my advice:<br> <strong>Be open, stay curious, and never underestimate the power of great teamwork.</strong></p><p>So that&#8217;s been my ride &#8212;time to grab some sweets and dive back in &#128512;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!c3aJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaef47d4-2fae-4b37-b255-1facd4331b4c_500x289.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c3aJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaef47d4-2fae-4b37-b255-1facd4331b4c_500x289.gif 424w, https://substackcdn.com/image/fetch/$s_!c3aJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaef47d4-2fae-4b37-b255-1facd4331b4c_500x289.gif 848w, https://substackcdn.com/image/fetch/$s_!c3aJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaef47d4-2fae-4b37-b255-1facd4331b4c_500x289.gif 1272w, https://substackcdn.com/image/fetch/$s_!c3aJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaef47d4-2fae-4b37-b255-1facd4331b4c_500x289.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!c3aJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaef47d4-2fae-4b37-b255-1facd4331b4c_500x289.gif" width="592" height="342.176" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aaef47d4-2fae-4b37-b255-1facd4331b4c_500x289.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:289,&quot;width&quot;:500,&quot;resizeWidth&quot;:592,&quot;bytes&quot;:411645,&quot;alt&quot;:&quot;Uplifting GIF of positivity, representing reflection and excitement for the future.&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/171494683?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaef47d4-2fae-4b37-b255-1facd4331b4c_500x289.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Uplifting GIF of positivity, representing reflection and excitement for the future." title="Uplifting GIF of positivity, representing reflection and excitement for the future." srcset="https://substackcdn.com/image/fetch/$s_!c3aJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaef47d4-2fae-4b37-b255-1facd4331b4c_500x289.gif 424w, https://substackcdn.com/image/fetch/$s_!c3aJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaef47d4-2fae-4b37-b255-1facd4331b4c_500x289.gif 848w, https://substackcdn.com/image/fetch/$s_!c3aJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaef47d4-2fae-4b37-b255-1facd4331b4c_500x289.gif 1272w, https://substackcdn.com/image/fetch/$s_!c3aJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faaef47d4-2fae-4b37-b255-1facd4331b4c_500x289.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>(GIF via Giphy)</em></figcaption></figure></div><p></p><div><hr></div><p><em>&#10024; Thanks for reading all the way! </em></p><p><em>If my journey resonates or sparks curiosity, let&#8217;s connect:<a href="http://linkedin.com/in/sonia16saha"> LinkedIn</a></em></p>]]></content:encoded></item><item><title><![CDATA[🕒 Fixing Time zones at Fyle — Making Time Make Sense for Everyone]]></title><description><![CDATA[From bug reports to a seamless experience: Solving timezone display issues the right way.]]></description><link>https://stories.fylehq.com/p/fixing-time-zones-at-fyle-making</link><guid isPermaLink="false">https://stories.fylehq.com/p/fixing-time-zones-at-fyle-making</guid><dc:creator><![CDATA[Devendra Singh Rana]]></dc:creator><pubDate>Tue, 19 Aug 2025 07:24:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!1w6T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a13454-5160-429d-a676-056f40d431ed_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1w6T!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a13454-5160-429d-a676-056f40d431ed_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1w6T!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a13454-5160-429d-a676-056f40d431ed_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!1w6T!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a13454-5160-429d-a676-056f40d431ed_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!1w6T!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a13454-5160-429d-a676-056f40d431ed_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!1w6T!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a13454-5160-429d-a676-056f40d431ed_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1w6T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a13454-5160-429d-a676-056f40d431ed_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/00a13454-5160-429d-a676-056f40d431ed_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2177907,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://devendrarana05.substack.com/i/170855080?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a13454-5160-429d-a676-056f40d431ed_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!1w6T!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a13454-5160-429d-a676-056f40d431ed_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!1w6T!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a13454-5160-429d-a676-056f40d431ed_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!1w6T!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a13454-5160-429d-a676-056f40d431ed_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!1w6T!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F00a13454-5160-429d-a676-056f40d431ed_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hello, I&#8217;m <strong><a href="https://www.linkedin.com/in/devendrarana05/">Devendra</a></strong> &#128075;&#127996; from the engineering team at Fyle. Over the past few months, I&#8217;ve been on a mission to fix one of the trickiest problems in software &#8212; time zones. Our goal? Make sure every timestamp in Fyle shows the <strong>right time for each user, based on their preferred timezone</strong>, no matter where they are in the world.</p><p>If you&#8217;ve ever tried scheduling a global meeting where everyone&#8217;s clock is different, you know how messy time zones can be. At Fyle, this challenge was real: we needed to ensure every timestamp &#8212; across expenses, reports, and comments &#8212; stayed perfectly aligned with the user&#8217;s chosen timezone, not their device clock or UTC. Here&#8217;s how we approached it, why it mattered, and how we made it work seamlessly in both Angular and legacy AngularJS.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>&#9203; The Challenge: A Timezone Tangle</h2><p>Imagine you&#8217;re in London, but your finance team is in India. You set your Fyle app to &#8220;Asia/Kolkata&#8221; to sync with them, but the app shows timestamps in &#8220;Europe/London&#8221; or even UTC (Coordinated Universal Time &#8212; the primary global time standard used to regulate clocks and time worldwide, unaffected by time zones or daylight saving changes). Confusing, right? That&#8217;s exactly what our users faced.</p><p>Here&#8217;s why it happened:</p><ul><li><p><strong>Database</strong>: We store timestamps in <strong>UTC</strong> (standard practice for consistency).</p></li><li><p><strong>Angular App</strong>: JavaScript&#8217;s Date object auto-converts UTC to the <strong>device&#8217;s local timezone</strong> when parsing Application Programming Interface (API) responses.</p></li><li><p><strong>AngularJS App</strong>: Some components displayed raw UTC strings without conversion.</p></li><li><p><strong>User Preference</strong>: Users can set a preferred time zone in &#8220;My Settings &gt; Preferences,&#8221; which might differ from their device&#8217;s timezone.</p></li></ul><p>The result? A single screen could show timestamps in <strong>local time</strong>, <strong>UTC</strong>, or a mix&#8212;causing chaos for expense comments, report comments, and action timelines.</p><blockquote><p>Example: A London-based employee sets their timezone to &#8220;Asia/Kolkata.&#8221; An expense timestamp shows &#8220;10:00 AM Europe/London&#8221; in one component (Angular) but &#8220;3:30 PM UTC&#8221; in another (AngularJS). Confusion guaranteed.</p></blockquote><h2>&#128226; Customer Feedback</h2><p>We received <strong>multiple customer requests</strong> to fix this &#8212; the consistent ask was:</p><blockquote><p>&#8220;Show me all times in my preferred timezone from settings, not my device time or UTC.&#8221;</p></blockquote><p>This was not just about aesthetics; it was about <strong>workflow accuracy</strong>.</p><p>Reviewing reports, reviewing expenses, or tracking actions all depend on precise and contextually correct timestamps.</p><p>Users expected <strong>all timestamps, everywhere</strong> &#8212; including expenses, reports, and comments &#8212; to follow that setting, regardless of where they appear in the app.</p><h2>&#129504; Designing the Fix</h2><p>When we dug into the problem, one key design decision emerged:</p><p>Should the timestamp be shown in the timezone of:</p><ol><li><p><strong>The expense owner?</strong></p></li><li><p><strong>The viewer?</strong></p></li></ol><p>We went with the <strong>viewer&#8217;s timezone</strong> &#8212; because the person reading the timestamp needs the context in <em>their</em> preferred time, not someone else&#8217;s.</p><p>That led us to three possible approaches:</p><h3><strong>Approach 1 &#8212; Service-Level Conversion (API Layer)</strong></h3><p>Convert UTC to the employee&#8217;s preferred timezone <strong>before sending from the API response</strong>.</p><p>&#9989; Consistent across platforms</p><p>&#9989; No UI changes</p><p>&#10060; Any backend error affects all clients</p><p>&#10060; Requires backend deployments for formatting changes</p><h3><strong>Approach 2 &#8212; Component-Level Conversion (Frontend Layer)</strong></h3><p>Keep UTC from the API and convert it into each component before rendering.</p><p>&#9989; UI flexibility</p><p>&#10060; Repeated logic across components</p><p>&#10060; Easy to miss places &#8594; inconsistency</p><h3><strong>Approach 3 &#8212; String-Based Handling + <a href="https://www.npmjs.com/package/dayjs">Day.js</a> + Framework-Specific Injection (Final Approach)</strong> &#9989;</h3><p>Both previous approaches still risked accidental <strong>system-local conversions</strong> when using <code>Date</code>.</p><p>Our <strong>breakthrough</strong>:</p><ul><li><p>Keep timestamps as <strong>raw UTC strings</strong> until they are displayed.</p></li><li><p>Convert only at the last step using <strong><a href="https://www.npmjs.com/package/dayjs">Day.js</a></strong> with the user&#8217;s preferred timezone.</p></li><li><p>Use <strong><a href="https://angular.dev/api/core/InjectionToken">Angular InjectionToken</a></strong> for global timezone access in Angular and <strong>service-level configuration</strong> in AngularJS.</p></li></ul><p><strong>Performance Impact:</strong></p><ul><li><p>The <strong><a href="https://www.npmjs.com/package/dayjs">Day.js</a></strong> conversion runs <strong>once per timestamp at render time</strong> (centralised via a pipe/filter), making it lightweight.</p></li><li><p>Even for high-traffic views like expense timelines with hundreds of timestamps, the performance cost was negligible (&lt;1&#8211;2ms per conversion on average in our profiling).</p></li><li><p>By centralising conversion in a pipe/filter, we avoided repetitive conversions across multiple components, further reducing unnecessary overhead.</p></li></ul><p>We ran a simple <strong><a href="https://github.com/devendrafyle/timezone-benchmark/tree/main?tab=readme-ov-file#sample-output-mac-m3-air-16gb">benchmark</a></strong> by converting timestamps using <strong><a href="https://www.npmjs.com/package/dayjs">Day.js</a></strong> with timezone in different list sizes:</p><p>List Size&#9;          Conversion Calls&#9;Average Time (ms)&#9;Per-Item Avg (ms)</p><p>10 items&#9;                   10&#9;                                  0.87 ms&#9;                       0.09 ms</p><p>100 items&#9;          100&#9;                          3.99 ms&#9;                       0.04 ms</p><p>1,000 items&#9;         1,000&#9;                          37.16 ms&#9;               0.04 ms</p><p><strong>Benchmark Methodology</strong></p><p>All benchmarks were run in a controlled environment to ensure reproducibility. Tests were executed using MacBook Air (Apple M3, 16 GB RAM, macOS Sequoia 15.6)</p><p>Benchmarks were conducted using Node.js v22.14.0 and Chrome 116 (headless mode). Each result represents the average of 30 consecutive runs to minimise variance. For fairness, all libraries were tested with equivalent functionality and without unnecessary imports. <strong><a href="https://www.npmjs.com/package/dayjs">Day.js</a></strong> was benchmarked both with and without plugins, depending on the use case, with plugin inclusion explicitly noted where applicable. No external caching or precompilation was used; all measurements reflect pure runtime performance.</p><p>&#9989; <strong>Observation:</strong> Even for <strong>1,000 conversions</strong>, the delay is under 200ms, which is generally unnoticeable for most viewers.</p><p>&#9989; Centralising conversion in a pipe/filter avoids multiple re-parsings and keeps overhead low.</p><p>You can reproduce the benchmark using this open-source script:<br>&#128073; <a href="https://github.com/devendrafyle/timezone-benchmark/blob/main/benchmark.js">View benchmark script on GitHub</a></p><blockquote><p><strong>Does Converting on Display Cause Performance Issues in Large Lists?</strong></p></blockquote><p>In most real-world Fyle views (like expense timelines or report histories), we render <strong>well under 500 timestamps</strong> at a time, so the performance hit is negligible.</p><p>For <strong>extensive lists</strong>:</p><ul><li><p>We recommend combining this approach with <strong>Angular&#8217;s OnPush change detection</strong> or <strong>virtual scrolling</strong> to ensure that conversions run only for visible items.</p></li><li><p>This ensures smooth rendering even for thousands of timestamps.</p></li></ul><h2>&#128640; Results</h2><ul><li><p><strong>Unified Experience</strong>: Timestamps are consistent across expenses, reports, and comments in both Angular and AngularJS.</p></li><li><p><strong>No More Confusion</strong>: Eliminated mismatches between local time and UTC.</p></li><li><p><strong>Happier Users</strong>: Zero timezone-related support tickets post-fix.</p></li><li><p><strong>Developer-Friendly</strong>: One pipe/filter reduces manual timezone handling.</p></li></ul><h2>&#128218; Key Takeaways</h2><ol><li><p><strong>Avoid JavaScript&#8217;s</strong> Date <strong>Object</strong>: It auto-converts to local time, causing unexpected behaviour.</p></li><li><p><strong>Use Strings Until Display</strong>: Keep timestamps as UTC strings to prevent premature conversion.</p></li><li><p><strong>Centralised Logic</strong>: A single pipe/filter saves time and ensures consistency.</p></li><li><p><strong>Hybrid Stacks Need Extra Care</strong>: Angular and AngularJS require tailored solutions.</p></li></ol><h2>&#128444; Before vs After</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-ZGN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8bd9cfd-641b-40b1-8b3b-f6d4263f7987_2120x1038.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-ZGN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8bd9cfd-641b-40b1-8b3b-f6d4263f7987_2120x1038.png 424w, https://substackcdn.com/image/fetch/$s_!-ZGN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8bd9cfd-641b-40b1-8b3b-f6d4263f7987_2120x1038.png 848w, https://substackcdn.com/image/fetch/$s_!-ZGN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8bd9cfd-641b-40b1-8b3b-f6d4263f7987_2120x1038.png 1272w, https://substackcdn.com/image/fetch/$s_!-ZGN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8bd9cfd-641b-40b1-8b3b-f6d4263f7987_2120x1038.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-ZGN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8bd9cfd-641b-40b1-8b3b-f6d4263f7987_2120x1038.png" width="1456" height="713" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d8bd9cfd-641b-40b1-8b3b-f6d4263f7987_2120x1038.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:713,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:113299,&quot;alt&quot;:&quot;Angular + AngularJS timezone handling architecture diagram&quot;,&quot;title&quot;:&quot;Angular + AngularJS timezone handling architecture diagram&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://devendrarana05.substack.com/i/170855080?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8bd9cfd-641b-40b1-8b3b-f6d4263f7987_2120x1038.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="Angular + AngularJS timezone handling architecture diagram" title="Angular + AngularJS timezone handling architecture diagram" srcset="https://substackcdn.com/image/fetch/$s_!-ZGN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8bd9cfd-641b-40b1-8b3b-f6d4263f7987_2120x1038.png 424w, https://substackcdn.com/image/fetch/$s_!-ZGN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8bd9cfd-641b-40b1-8b3b-f6d4263f7987_2120x1038.png 848w, https://substackcdn.com/image/fetch/$s_!-ZGN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8bd9cfd-641b-40b1-8b3b-f6d4263f7987_2120x1038.png 1272w, https://substackcdn.com/image/fetch/$s_!-ZGN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd8bd9cfd-641b-40b1-8b3b-f6d4263f7987_2120x1038.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>&#128172; Final Thoughts</h2><p>This wasn&#8217;t just about fixing a bug&#8212;it was about building trust. By unifying timestamps across two frameworks, we streamlined workflows, eliminated confusion, and made Fyle&#8217;s app more reliable for global teams. Next time you&#8217;re wrestling with time zones, remember: keep it simple, keep it string-based, and let <strong><a href="https://www.npmjs.com/package/dayjs">Day.js</a></strong> do the heavy lifting.</p><p>Have a timezone horror story? Share it below! &#11015;&#65039;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[🚀 Automating Data Migrations at Fyle]]></title><description><![CDATA[Hello, I&#8217;m Shreyansh &#128075;&#127996;, part of the engineering team at Fyle.]]></description><link>https://stories.fylehq.com/p/automating-data-migrations-at-fyle</link><guid isPermaLink="false">https://stories.fylehq.com/p/automating-data-migrations-at-fyle</guid><dc:creator><![CDATA[Shreyansh Sahare]]></dc:creator><pubDate>Tue, 12 Aug 2025 07:04:36 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!mc7a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feda15494-7bac-4775-a08f-8061cd7f7860_1398x1400.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mc7a!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feda15494-7bac-4775-a08f-8061cd7f7860_1398x1400.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mc7a!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feda15494-7bac-4775-a08f-8061cd7f7860_1398x1400.png 424w, https://substackcdn.com/image/fetch/$s_!mc7a!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feda15494-7bac-4775-a08f-8061cd7f7860_1398x1400.png 848w, https://substackcdn.com/image/fetch/$s_!mc7a!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feda15494-7bac-4775-a08f-8061cd7f7860_1398x1400.png 1272w, https://substackcdn.com/image/fetch/$s_!mc7a!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feda15494-7bac-4775-a08f-8061cd7f7860_1398x1400.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mc7a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feda15494-7bac-4775-a08f-8061cd7f7860_1398x1400.png" width="1398" height="1400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eda15494-7bac-4775-a08f-8061cd7f7860_1398x1400.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1400,&quot;width&quot;:1398,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3148902,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/170757364?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feda15494-7bac-4775-a08f-8061cd7f7860_1398x1400.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!mc7a!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feda15494-7bac-4775-a08f-8061cd7f7860_1398x1400.png 424w, https://substackcdn.com/image/fetch/$s_!mc7a!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feda15494-7bac-4775-a08f-8061cd7f7860_1398x1400.png 848w, https://substackcdn.com/image/fetch/$s_!mc7a!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feda15494-7bac-4775-a08f-8061cd7f7860_1398x1400.png 1272w, https://substackcdn.com/image/fetch/$s_!mc7a!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feda15494-7bac-4775-a08f-8061cd7f7860_1398x1400.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hello, I&#8217;m <a href="https://www.linkedin.com/in/shreyansh-sahare/">Shreyansh</a> &#128075;&#127996;, part of the engineering team at Fyle. Today, I want to share our journey of transforming how we handle Data Migrations&#8212;a process that's critical, yet often challenging.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>What Are Data Migrations?</h2><p>Before diving into our journey, let's clarify what we mean by data migration. At its core, a <strong>data migration</strong> is the process of moving, transforming, or updating data within your database systems.</p><p>At Fyle, our data migrations are primarily focused on database operations:</p><ul><li><p><strong>Backfilling data</strong>: Adding missing information to existing records.</p></li><li><p><strong>Schema updates</strong>: Moving data between tables when structures change.</p></li><li><p><strong>Data cleanup</strong>: Standardising formats, removing duplicates, fixing inconsistencies.</p></li><li><p><strong>Business logic updates</strong>: Restructuring data to reflect new requirements.</p></li></ul><h2>&#128681; The Initial Approach &amp; Its Pitfalls</h2><p>Initially, our data migrations were manual. There was no standardised structure, i.e., everyone had their own way of writing and executing scripts.</p><p><strong>Example:</strong></p><ul><li><p>We had to update the data stored in <code>notification_settings</code> column in our <code>user_preferences</code></p></li><li><p>This needed a data backfill if the older data <code>email_frequency</code> stored in <code>notification_settings</code> is empty and which were created before 1st January 2024.</p></li></ul><pre><code>UPDATE user_preferences 
SET notification_settings = jsonb_set(
    notification_settings, 
    '{email_frequency}', 
    '"weekly"'::jsonb
)
WHERE created_at &lt; '2024-01-01' 
  AND notification_settings-&gt;&gt;'email_frequency' IS NULL;<code>
</code></code></pre><p>Though straightforward, this approach caused serious problems:</p><ul><li><p><strong>Long Execution Times:</strong> Large operations took hours and were dependent on incoming traffic.</p></li><li><p><strong>Impact on Production Traffic:</strong> Heavy updates block the rows that are being updated, leading to slower queries, application timeouts, and user disruptions. (We use PostgreSQL as our database)</p></li><li><p><strong>No Monitoring:</strong> With ad-hoc running of scripts, there was no way to track the progress of rows that were migrated.</p></li></ul><h2>&#128736;&#65039; The Breakthrough: Batch Processing</h2><p>We knew we needed to break large operations into smaller, manageable chunks. The concept was simple: instead of updating thousands of rows at once, we split migrations into batches of 50 to 200 records.</p><p>We developed a standardised SQL template that became our go-to pattern:</p><pre><code><code>-- The batch-wise approach that saved our sanity
WITH batch_data AS (
    SELECT id, 
           row_number() OVER (ORDER BY id) as row_num
    FROM user_preferences 
    WHERE created_at &lt; '2024-01-01' 
      AND notification_settings-&gt;&gt;'email_frequency' IS NULL
),
batch_ids AS (
    SELECT array_agg(id) as ids
    FROM batch_data 
    WHERE row_num BETWEEN 1 AND 1000  -- Process first batch
)
UPDATE user_preferences 
SET notification_settings = jsonb_set(
    notification_settings, 
    '{email_frequency}', 
    '"weekly"'::jsonb
),
updated_at = NOW()
WHERE id = ANY((SELECT ids FROM batch_ids));

-- Then manually increment the BETWEEN range for next batch
-- BETWEEN 1001 AND 2000, then 2001 AND 3000, etc.
</code></code></pre><h3>&#9889;The Immediate Improvements</h3><p>This approach gave us breathing room:</p><ul><li><p><strong>Standardization</strong>: Other developers could understand and use the same pattern.</p></li><li><p><strong>Reduced Timeouts</strong>: With smaller batched updates, users faced little to no disruption in the application.</p></li><li><p><strong>Resumability</strong>: If something failed, we knew exactly which batch to resume from.</p></li><li><p><strong>Production Friendly</strong>: Application performance remained stable during migrations.</p></li></ul><p>But it came with its own challenges:</p><ul><li><p><strong>Manual Execution</strong>: We still had to manually run each batch and track progress.</p></li><li><p><strong>Human Error</strong>: Easy to miss a batch or run the same batch twice.</p></li><li><p><strong>Failed batches</strong>: Failed batches required manual investigation and re-execution.</p></li></ul><h2>&#129302; Automating Batch Processing</h2><p>The batch approach worked, but the manual overhead of running the batches was still not effective. We were spending more time running these migrations than building features.</p><p>We introduced a <strong>Data Migration Worker System</strong>&#8212;a Python worker that continuously fetches batches from a dedicated table and executes them automatically.</p><h3>The Core Architecture</h3><p>We introduced three key components:</p><p><strong>1. The </strong><code>task_batches</code><strong> table</strong></p><p>This table was the command center &#8211; every batch is tracked from creation to completion.</p><pre><code><code>CREATE TABLE task_batches (
    id SERIAL PRIMARY KEY,
    migration_version TEXT NOT NULL,
    entity_ids TEXT[] NOT NULL,
    handler_procedure TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT NOW(),
    started_at TIMESTAMP,
    completed_at TIMESTAMP,
    failed_at TIMESTAMP
);
</code></code></pre><p><strong>2. The </strong><code>worker_config</code><strong> table</strong></p><p>This gave us runtime control over the migration process without code deployments.</p><pre><code><code>CREATE TABLE worker_config (
    is_enabled BOOLEAN,
    query_timeout_ms INTEGER,
    processing_interval INTEGER
);
</code></code></pre><p><strong>3. The Python Worker</strong></p><p>A continuously running process that polls for new batches and executes them, and adds a backoff for processing:</p><pre><code><code>class DataMigrationWorker:
    def run(self):
        while worker_running:
&#9;    if config.is_enabled:
&#9;       set_statement_timeout()
&#9;       process_next_batch() # Runs a procedure
&#9;    sleep(config.processing_interval)
</code></code></pre><ol start="4"><li><p><strong>Process Batch Procedure</strong></p></li></ol><pre><code><code>CREATE PROCEDURE proc_execute_batch(batch_id INTEGER)
LANGUAGE plpgsql AS $$
BEGIN
    UPDATE task_batches
    SET 
      started_at = NOW()
    WHERE 
      id = batch_id;

    BEGIN
        EXECUTE handler_procedure(entity_ids);
        UPDATE task_batches SET completed_at = NOW() WHERE id = batch_id;
    EXCEPTION
        WHEN OTHERS THEN
            UPDATE task_batches SET failed_at = NOW() WHERE id = batch_id;
    END;
END;
$$;
</code></code></pre><h3>The New Migration Workflow</h3><p>Now, creating a migration has become as simple as:</p><ol><li><p><strong>Write a stored procedure</strong> that handles a batch of IDs; this is basically what you want to update:</p></li></ol><pre><code><code>CREATE OR REPLACE PROCEDURE proc_update_user_notifications(entity_ids text[])
LANGUAGE plpgsql AS $$
BEGIN
    UPDATE user_preferences 
    SET notification_settings = jsonb_set(
        notification_settings, 
        '{email_frequency}', 
        '"weekly"'::jsonb
    ),
    updated_at = NOW()
    WHERE id = ANY(entity_ids)
      AND notification_settings-&gt;&gt;'email_frequency' IS NULL;
END;
$$;
</code></code></pre><ol start="2"><li><p><strong>Generate batches</strong> with a single query (what we had earlier improved with batch processing):</p></li></ol><pre><code><code>WITH records_to_migrate AS (
    SELECT id,
           (row_number() OVER ()) / 200 AS batch_id
    FROM user_preferences 
    WHERE created_at &lt; '2024-01-01' 
      AND notification_settings-&gt;&gt;'email_frequency' IS NULL
),
batch_grouping AS (
    SELECT batch_id, array_agg(id) AS entity_ids
    FROM records_to_migrate
    GROUP BY batch_id
)
INSERT INTO task_batches (
    migration_version, 
    entity_ids, 
    handler_procedure
)
SELECT 
    'v125_update_user_notifications',
    entity_ids,
    'proc_update_user_notifications'
FROM batch_grouping;
</code></code></pre><ol start="3"><li><p><strong>Let the worker handle the rest</strong> &#8211; it would automatically process all batches at a controlled pace.</p></li></ol><h2>&#9888;&#65039; Learning from Failures</h2><p>Initially, automation was effective&#8212;until batches began failing due to intermittent issues, such as database timeouts. Manually reprocessing failed batches wasn't scalable.</p><p>We added two new columns to <code>task_batches</code> table to handle this</p><pre><code><code>CREATE TABLE task_batches (
    ...
    retry_count INTEGER DEFAULT 0, -- Current attempts of batch (if failed)
    max_retries INTEGER DEFAULT 3  -- Max attempts allowed to a batch.
);
</code></code></pre><p>We then updated our batch execution procedure to include automatic retries of failed batches with backoff at the worker level:</p><pre><code><code>CREATE PROCEDURE proc_execute_batch(batch_id INTEGER)
LANGUAGE plpgsql AS $$
BEGIN
    -- Fetch one unprocessed batch at a time
    UPDATE task_batches 
    SET 
      started_at = NOW(),
      retry_count = retry_count + 1 
    WHERE 
      id = batch_id AND
      completed_at is NULL AND
      retry_count &lt;= max_retries; -- This will automatically pick up failed batches.

    BEGIN
        EXECUTE handler_procedure(entity_ids);
        UPDATE task_batches SET completed_at = NOW() WHERE id = batch_id;
    EXCEPTION
        WHEN OTHERS THEN
            UPDATE task_batches SET failed_at = NOW() WHERE id = batch_id;
    END;
END;
$$;
</code></code></pre><p>Auto-retry made migrations resilient, automatically retrying failed batches up to their <code>max_retries</code>.</p><h2>&#128187; Monitoring and Observability</h2><p>All batches have clear timestamps (<code>created_at</code>, <code>started_at</code>, <code>completed_at</code>, <code>failed_at</code>) providing transparent monitoring capabilities.</p><p>We added Grafana dashboards, which made it easier to track progress and set up alerting on failures.</p><h2>&#8599;&#65039; Flow Diagram</h2><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!emcc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc758f9ea-4dc4-4d24-a5e6-8afa1785ff39_1983x1534.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!emcc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc758f9ea-4dc4-4d24-a5e6-8afa1785ff39_1983x1534.png 424w, https://substackcdn.com/image/fetch/$s_!emcc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc758f9ea-4dc4-4d24-a5e6-8afa1785ff39_1983x1534.png 848w, https://substackcdn.com/image/fetch/$s_!emcc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc758f9ea-4dc4-4d24-a5e6-8afa1785ff39_1983x1534.png 1272w, https://substackcdn.com/image/fetch/$s_!emcc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc758f9ea-4dc4-4d24-a5e6-8afa1785ff39_1983x1534.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!emcc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc758f9ea-4dc4-4d24-a5e6-8afa1785ff39_1983x1534.png" width="1456" height="1126" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c758f9ea-4dc4-4d24-a5e6-8afa1785ff39_1983x1534.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1126,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:147845,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/170757364?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc758f9ea-4dc4-4d24-a5e6-8afa1785ff39_1983x1534.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!emcc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc758f9ea-4dc4-4d24-a5e6-8afa1785ff39_1983x1534.png 424w, https://substackcdn.com/image/fetch/$s_!emcc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc758f9ea-4dc4-4d24-a5e6-8afa1785ff39_1983x1534.png 848w, https://substackcdn.com/image/fetch/$s_!emcc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc758f9ea-4dc4-4d24-a5e6-8afa1785ff39_1983x1534.png 1272w, https://substackcdn.com/image/fetch/$s_!emcc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc758f9ea-4dc4-4d24-a5e6-8afa1785ff39_1983x1534.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2>&#128200; Results:</h2><p>The transition from manual to automated migrations has delivered measurable improvements:</p><ul><li><p>What used to take a developer 5-6 hours (or even more if it involved a large migration) to manage SQL queries now completes automatically. Engineers spend 90% less time on migration tasks, freeing them to work on product features.</p></li><li><p>Previously, large migrations would cause application timeouts. Now, users experience no disruptions.</p></li><li><p>Failed migrations that once required 1-2 hours of manual intervention and debugging now auto-recover within minutes.</p></li></ul><h2>&#128640; Looking Forward</h2><p>We've significantly reduced operational risk and improved migration efficiency at Fyle. This transformation allows developers to focus on building great features rather than firefighting risky migrations.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Behind the Scenes: What Makes a Smooth SaaS Onboarding? ]]></title><description><![CDATA[Learn to be the bridge between product, people, and process]]></description><link>https://stories.fylehq.com/p/behind-the-scenes-what-makes-a-smooth</link><guid isPermaLink="false">https://stories.fylehq.com/p/behind-the-scenes-what-makes-a-smooth</guid><dc:creator><![CDATA[Priya Dikshit]]></dc:creator><pubDate>Wed, 06 Aug 2025 08:06:26 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/d6e6c2d0-469a-4ec1-91e9-4a84bb1a941f_736x736.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello there! Welcome to the <em>behind-the-scenes</em> of what it takes to onboard a SaaS client. I&#8217;m sharing my secret sauce for seamless Software as a Service (SaaS) implementations, what no one tells you about onboarding, and the humans behind the handoff - what truly makes SaaS work!</p><p>If this interests your appeal, this blog is all you need to become an expert in your SaaS onboarding career!</p><p>I&#8217;m <em><a href="https://www.linkedin.com/in/priya-dikshit-812aa41b2/">Priya Dikshit</a></em>, an Onboarding Specialist at <em><a href="https://www.linkedin.com/company/fyle/posts/?feedView=all">Fyle</a></em> for over two years. If you enjoy this blog, you might also want to check out my previous post: <em>&#8220;<a href="https://stories.fylehq.com/p/day-in-a-life-of-an-implementation">A Day in the Life of an Implementation Executive at Fyle.</a>&#8221;</em></p><p>Now, let&#8217;s jump into the main hustle!</p><div><hr></div><h3>The Art of Onboarding: Setting Customers Up for Success</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HPC3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7062be86-0d65-48a6-90f6-01d43307db80_480x400.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HPC3!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7062be86-0d65-48a6-90f6-01d43307db80_480x400.gif 424w, https://substackcdn.com/image/fetch/$s_!HPC3!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7062be86-0d65-48a6-90f6-01d43307db80_480x400.gif 848w, https://substackcdn.com/image/fetch/$s_!HPC3!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7062be86-0d65-48a6-90f6-01d43307db80_480x400.gif 1272w, https://substackcdn.com/image/fetch/$s_!HPC3!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7062be86-0d65-48a6-90f6-01d43307db80_480x400.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HPC3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7062be86-0d65-48a6-90f6-01d43307db80_480x400.gif" width="480" height="400" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7062be86-0d65-48a6-90f6-01d43307db80_480x400.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:400,&quot;width&quot;:480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3866656,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/170161855?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7062be86-0d65-48a6-90f6-01d43307db80_480x400.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HPC3!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7062be86-0d65-48a6-90f6-01d43307db80_480x400.gif 424w, https://substackcdn.com/image/fetch/$s_!HPC3!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7062be86-0d65-48a6-90f6-01d43307db80_480x400.gif 848w, https://substackcdn.com/image/fetch/$s_!HPC3!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7062be86-0d65-48a6-90f6-01d43307db80_480x400.gif 1272w, https://substackcdn.com/image/fetch/$s_!HPC3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7062be86-0d65-48a6-90f6-01d43307db80_480x400.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>(GIF via <a href="https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExeml4Z2x3aHhuaXh6Z3pjcGtrOGQwYXhsMGc5ZG9wczJ2cThnNXhkZyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/N7aAkvk6lSpYoLaAEi/giphy.gif">Giphy</a>)</em></figcaption></figure></div><blockquote><p><strong>The most powerful tech conversations begin with listening, not explaining</strong></p></blockquote><p>A smooth SaaS onboarding doesn&#8217;t start with software or tech information - it starts with the <strong>customer&#8217;s use case</strong>, their success metrics, and understanding <strong>what they want</strong>. I make it a point to understand their priorities, set up realistic timelines, and bring clarity to the scope, which helps both the customer and me stay on the same page.</p><p>Trust me - you don&#8217;t need to drop tool names or show off integrations. Setting the right use case and expectations from day one goes a long way in building a healthy, long-term bond with customers.</p><div><hr></div><h3>Checklist &amp; Flexibility: The Unsung Heroes</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!N2mR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6375d765-aadc-4c21-9365-2522c44a4f72_735x469.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!N2mR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6375d765-aadc-4c21-9365-2522c44a4f72_735x469.jpeg 424w, https://substackcdn.com/image/fetch/$s_!N2mR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6375d765-aadc-4c21-9365-2522c44a4f72_735x469.jpeg 848w, https://substackcdn.com/image/fetch/$s_!N2mR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6375d765-aadc-4c21-9365-2522c44a4f72_735x469.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!N2mR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6375d765-aadc-4c21-9365-2522c44a4f72_735x469.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!N2mR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6375d765-aadc-4c21-9365-2522c44a4f72_735x469.jpeg" width="735" height="469" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6375d765-aadc-4c21-9365-2522c44a4f72_735x469.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:469,&quot;width&quot;:735,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:48790,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/170161855?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6375d765-aadc-4c21-9365-2522c44a4f72_735x469.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!N2mR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6375d765-aadc-4c21-9365-2522c44a4f72_735x469.jpeg 424w, https://substackcdn.com/image/fetch/$s_!N2mR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6375d765-aadc-4c21-9365-2522c44a4f72_735x469.jpeg 848w, https://substackcdn.com/image/fetch/$s_!N2mR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6375d765-aadc-4c21-9365-2522c44a4f72_735x469.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!N2mR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6375d765-aadc-4c21-9365-2522c44a4f72_735x469.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>Image by <a href="https://in.pinterest.com/">Pinterest</a></em></figcaption></figure></div><p><strong>Checklist - Easy, Simple, and Yet Used by Only a Few!</strong></p><p>Yes, I was one of them until one of my teammates introduced me to this underrated, yet incredibly efficient tool called the <strong>checklist</strong>. Of course, checklists help you stay organised and free from brain clutter, but that&#8217;s just the tip of the iceberg!</p><p>Internal checklists and SOPs not only help in understanding and differentiating customer needs, but they also train you to build a powerful skill: <strong>flexibility</strong>.</p><div class="pullquote"><p>A Process that Flexes (But Doesn&#8217;t Break)</p></div><p>A checklist might seem like a rigid tool, but it actually empowers you to be flexible - something that&#8217;s essential when building a strong onboarding foundation.</p><p>No two customers are the same, and no one checklist can cover every use case. I&#8217;ve worked with smaller clients who required more complex setups and larger accounts that demanded deeper coordination. That&#8217;s why having a system in place even a simple one can make a huge difference in keeping your onboarding process strong yet adaptable.</p><div><hr></div><h3>Tech is the Only Half the Story</h3><blockquote><p><strong>Tech can solve problems, but knowledge prevents chaos</strong></p></blockquote><p>To be a problem solver, I first need to understand the problem myself before I can help someone else. Unfortunately, there&#8217;s no secret ingredient to problem-solving when it comes to helping customers.</p><p>As an onboarding executive, I act as the <strong>bridge</strong> between the product and the customer - and that means I need to have a strong grasp of the product from the ground up.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kfcs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b3e62c-d56c-4c84-bb8d-ba6407d7643c_480x267.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kfcs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b3e62c-d56c-4c84-bb8d-ba6407d7643c_480x267.gif 424w, https://substackcdn.com/image/fetch/$s_!kfcs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b3e62c-d56c-4c84-bb8d-ba6407d7643c_480x267.gif 848w, https://substackcdn.com/image/fetch/$s_!kfcs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b3e62c-d56c-4c84-bb8d-ba6407d7643c_480x267.gif 1272w, https://substackcdn.com/image/fetch/$s_!kfcs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b3e62c-d56c-4c84-bb8d-ba6407d7643c_480x267.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kfcs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b3e62c-d56c-4c84-bb8d-ba6407d7643c_480x267.gif" width="506" height="281.4625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c9b3e62c-d56c-4c84-bb8d-ba6407d7643c_480x267.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:267,&quot;width&quot;:480,&quot;resizeWidth&quot;:506,&quot;bytes&quot;:997701,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/170161855?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b3e62c-d56c-4c84-bb8d-ba6407d7643c_480x267.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kfcs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b3e62c-d56c-4c84-bb8d-ba6407d7643c_480x267.gif 424w, https://substackcdn.com/image/fetch/$s_!kfcs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b3e62c-d56c-4c84-bb8d-ba6407d7643c_480x267.gif 848w, https://substackcdn.com/image/fetch/$s_!kfcs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b3e62c-d56c-4c84-bb8d-ba6407d7643c_480x267.gif 1272w, https://substackcdn.com/image/fetch/$s_!kfcs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc9b3e62c-d56c-4c84-bb8d-ba6407d7643c_480x267.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption"><em>(GIF via <a href="https://media4.giphy.com/media/v1.Y2lkPTc5MGI3NjExdnE5MHdvODBmNTc1MTJ1MDJ1aWZscXk2bnpzMWd5ZG9wYnNweGRyMiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/YCFTQW2L3QD6APGxvk/giphy.gif">Giphy</a>)</em></figcaption></figure></div><blockquote><p><strong>Onboarding = The Underrated Brain of SaaS</strong></p></blockquote><p>The onboarding team is often an underrated knowledge base in human form. From Product to Support, and Tech to Customer-facing - onboarding touches it all.</p><p>So, along with the technical know-how, I as an onboarding executive must bring in product expertise, customer empathy, and the confidence to handle client interactions effectively.</p><div><hr></div><h3>Speed + Empathy Wins</h3><p>In my journey from an Implementation Executive to an Onboarding Specialist, I&#8217;ve learned that there are two things a customer always remembers and appreciates: <strong>how fast you responded</strong> and <strong>how understood they felt</strong>.</p><p>I&#8217;ve often received customer feedback highlighting professionalism and product knowledge - and both of these ultimately come down to how well you respond to ease the customer&#8217;s anxiety, and how well you make them feel valued.</p><p>Every account onboarding comes with its own struggles and blockers. But how you manage to solve them without losing your cool - that&#8217;s what truly makes a difference and stays with the customer long after go-live.</p><div><hr></div><h3>Life at the Crossroads of Tech, Process, and People</h3><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!7TfS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e121e71-270c-4e7f-b503-49d704478cca_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!7TfS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e121e71-270c-4e7f-b503-49d704478cca_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!7TfS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e121e71-270c-4e7f-b503-49d704478cca_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!7TfS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e121e71-270c-4e7f-b503-49d704478cca_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!7TfS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e121e71-270c-4e7f-b503-49d704478cca_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!7TfS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e121e71-270c-4e7f-b503-49d704478cca_1024x1024.png" width="530" height="530" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5e121e71-270c-4e7f-b503-49d704478cca_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:530,&quot;bytes&quot;:1855645,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/170161855?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e121e71-270c-4e7f-b503-49d704478cca_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!7TfS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e121e71-270c-4e7f-b503-49d704478cca_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!7TfS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e121e71-270c-4e7f-b503-49d704478cca_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!7TfS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e121e71-270c-4e7f-b503-49d704478cca_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!7TfS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5e121e71-270c-4e7f-b503-49d704478cca_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Image generated by AI</figcaption></figure></div><blockquote><p><strong>You Wear Many Hats - Sometimes All at Once</strong></p></blockquote><ul><li><p><strong>Project Manager:</strong> We build timelines, take each account as a project, align stakeholders and ensure go-live doesn&#8217;t get derailed.</p></li><li><p><strong>Executor:</strong> Along with project managing, we individually form a one person team executing the plan to deliver the results.</p></li><li><p><strong>Trainer:</strong> We take complex product features and break them down into intuitive steps. You help users go from "<em><strong>What is this?</strong></em>" to "<em><strong>I can&#8217;t imagine working without this.</strong></em>&#8221;</p></li><li><p><strong>Troubleshooter:</strong> Field mapping errors? Integration hiccups? Export mismatches? We are the first line of defense - calmly untangling the mess and looping in the right teams.</p><div><hr></div><h3>Growth in the Most Unexpected Ways</h3><p>Being in the Onboarding team as a beginner has helped me grow both professionally and personally. What started as a role about helping customers implement software, slowly became a role about:</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KOIC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47c8e7be-c8a7-4817-b9b7-49c611486813_838x798.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KOIC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47c8e7be-c8a7-4817-b9b7-49c611486813_838x798.png 424w, https://substackcdn.com/image/fetch/$s_!KOIC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47c8e7be-c8a7-4817-b9b7-49c611486813_838x798.png 848w, https://substackcdn.com/image/fetch/$s_!KOIC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47c8e7be-c8a7-4817-b9b7-49c611486813_838x798.png 1272w, https://substackcdn.com/image/fetch/$s_!KOIC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47c8e7be-c8a7-4817-b9b7-49c611486813_838x798.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KOIC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47c8e7be-c8a7-4817-b9b7-49c611486813_838x798.png" width="428" height="407.5704057279236" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/47c8e7be-c8a7-4817-b9b7-49c611486813_838x798.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:798,&quot;width&quot;:838,&quot;resizeWidth&quot;:428,&quot;bytes&quot;:347296,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/170161855?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47c8e7be-c8a7-4817-b9b7-49c611486813_838x798.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KOIC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47c8e7be-c8a7-4817-b9b7-49c611486813_838x798.png 424w, https://substackcdn.com/image/fetch/$s_!KOIC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47c8e7be-c8a7-4817-b9b7-49c611486813_838x798.png 848w, https://substackcdn.com/image/fetch/$s_!KOIC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47c8e7be-c8a7-4817-b9b7-49c611486813_838x798.png 1272w, https://substackcdn.com/image/fetch/$s_!KOIC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F47c8e7be-c8a7-4817-b9b7-49c611486813_838x798.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Image generated by AI</figcaption></figure></div><ul><li><p>Solving Business Problems</p></li><li><p>Understanding, growing and learning from different use cases and complexities</p></li><li><p>Improving internal process</p></li><li><p>Becoming the voice of the customer in product discussions</p></li><li><p>And sometimes, even <strong>mentoring new teammates</strong> who are stepping into onboarding for the first time.</p></li></ul><p>So, if you found the above interesting, appealing, and challenging enough to grow and explore this role, you might just be the right fit!</p><p>At the end of the day, onboarding is where the <strong>promise of the product becomes real</strong> and being a part of that transformation is as rewarding as it is challenging.</p><p>I hope this gave you a little more insight into our onboarding process and a little more appreciation for what our roles truly involve.<br><br></p>]]></content:encoded></item><item><title><![CDATA[40K Steps Later: My Brain Negotiated, My Body Gave Up… But My Fitness Won!]]></title><description><![CDATA[The hardest part isn&#8217;t walking. It&#8217;s agreeing with your brain to start. In this story from the Fyle Health Challenge 2025, I share how I walked 40,000 steps in one day, overcame mental resistance, and discovered the surprising power of mindset. It was a journey of endurance and strategy.]]></description><link>https://stories.fylehq.com/p/fyle-health-challenge-40k-steps-later</link><guid isPermaLink="false">https://stories.fylehq.com/p/fyle-health-challenge-40k-steps-later</guid><dc:creator><![CDATA[Sahil K]]></dc:creator><pubDate>Tue, 24 Jun 2025 05:52:32 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!ftqw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30bc39b0-b3ef-4909-ab6e-8d511442d069_1920x1080.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>So, I&#8217;ve officially walked more in one day than I ever thought possible. No, I wasn&#8217;t lost in the mountains. No, I didn&#8217;t miss a flight and decided to hoof it home.</p><p>Hi, I am Sahil K., and the story I am about to write isn&#8217;t just about numbers on a pedometer. It&#8217;s about <em>resistance</em>, the kind that lives in your mind.</p><p>Once again, during our annual Fyle Health Challenge, I set out to break one mental wall: Could I walk 40,000 steps in a day?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ftqw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30bc39b0-b3ef-4909-ab6e-8d511442d069_1920x1080.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ftqw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30bc39b0-b3ef-4909-ab6e-8d511442d069_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!ftqw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30bc39b0-b3ef-4909-ab6e-8d511442d069_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!ftqw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30bc39b0-b3ef-4909-ab6e-8d511442d069_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!ftqw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30bc39b0-b3ef-4909-ab6e-8d511442d069_1920x1080.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ftqw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30bc39b0-b3ef-4909-ab6e-8d511442d069_1920x1080.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/30bc39b0-b3ef-4909-ab6e-8d511442d069_1920x1080.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:210837,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/166577032?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30bc39b0-b3ef-4909-ab6e-8d511442d069_1920x1080.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ftqw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30bc39b0-b3ef-4909-ab6e-8d511442d069_1920x1080.png 424w, https://substackcdn.com/image/fetch/$s_!ftqw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30bc39b0-b3ef-4909-ab6e-8d511442d069_1920x1080.png 848w, https://substackcdn.com/image/fetch/$s_!ftqw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30bc39b0-b3ef-4909-ab6e-8d511442d069_1920x1080.png 1272w, https://substackcdn.com/image/fetch/$s_!ftqw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30bc39b0-b3ef-4909-ab6e-8d511442d069_1920x1080.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>&#129744; The Silence Before the Steps</h3><p>In May 2025, Fyle dropped another health challenge on us, and with it, a weekly series of tasks quietly escalated from <strong>&#8216;harmless&#8217;</strong> to <strong>&#8220;you expect me to do </strong><em><strong>what</strong></em><strong> now?&#8221;</strong> A simple-sounding challenge with some not-so-simple bonus missions.</p><p>If you haven&#8217;t read already, I highly recommend reading <strong><a href="https://www.linkedin.com/in/krupahebbar/">Krupa Hebbar</a>&#8217;s </strong>blog: <strong><a href="https://stories.fylehq.com/p/the-full-circle-health-challenge">The Full Circle Health Challenge - a personal journey&#8230;</a></strong>; it beautifully captures the essence of the entire challenge: the prep, the week-by-week chaos, the water bottles on baking scales, and the slow, glorious transformation into a hydrated, meditated, screen-conscious human.</p><p>But me? I&#8217;m here to zoom in on one absurdly specific day, one specific bonus challenge.</p><p>By Week 3, I&#8217;d already been moving daily, sipping water like a camel, and living like someone whose mobile screen had betrayed him. But then came the challenge that made me tilt my head and squint at the Slack message from<em> </em><strong><a href="https://www.linkedin.com/in/meeha-tewari/">Meeha</a></strong>:</p><blockquote><p>&#128293; <strong>Bonus Challenge: STEP UP - SOLO EDITION</strong> &#128293; &#128197; <strong>When: 6th May 2025</strong></p><p><strong>&#128099; Goal: step count for the day</strong></p><p><strong>&#9200; Deadline: latest by 10:00 AM on 7th May 2025 in this thread.</strong></p><p><strong>&#127942; Reward: top 10 individuals highest step count +1 bonus point each</strong></p><p>Who&#8217;s stepping up for the MVP race? &#128587;&#8205;&#9792;&#65039;</p></blockquote><p>Simple. Dangerous. Yet Exciting.</p><p>I was in.</p><p>There&#8217;s something about a vague metric like <strong>&#8220;as many as you can&#8221;</strong> that speaks to a specific part of my brain, the part that believes walking 40,000 steps in one day is easily doable. A bonus point was on the line, and my team was counting on me. (Okay, maybe not <em>specifically</em> for this, but still. &#128518;)</p><h3><strong>&#127818; A Challenge Worth Every Step</strong></h3><p>The day before the walk, I sat down to do what any rational person would do before attempting something potentially unhinged: <strong>research.</strong> &#129299; (For science, of course.)</p><p>And, here&#8217;s what I learned:</p><ul><li><p>The average person takes about <strong>10 minutes to walk 1,000 steps.</strong> So to hit 40,000? I&#8217;d need <strong>400 minutes of walking.</strong> <em>&#8220;Yeah&#8230; 400 minutes. I think that&#8217;s doable, as long as I block out the rest of the day, except my working hours.&#8221;</em></p></li><li><p>So I decided to divide this walk it into phases.</p><ul><li><p>Morning walk: knock off <strong>10K steps</strong></p></li><li><p>During work: sneak in <strong>5K steps</strong> through indoor pacing</p></li><li><p>Evening grind: a heavy <strong>5 PM to 8 PM push</strong></p></li><li><p>Final lap: a late <strong>9 to 10 PM finish</strong>, <em>if</em> my legs hadn&#8217;t already filed a formal complaint</p></li></ul></li><li><p>And since I was taking this seriously (and also didn&#8217;t want to faint by sunset), I looked into <strong>calorie burn</strong> too. Turns out, you burn <strong>about 400 calories per 10K steps,</strong> meaning 40K would wipe out roughly <strong>1,600 &#8220;EXTRA&#8221; calories.</strong> Now, I wasn&#8217;t trying to turn this into an accidental cut; <strong>recovery matters A LOT. S</strong>o I made a plan: I&#8217;d eat my usual meals spread throughout the day, <em>plus</em> give myself a <strong>400-calorie treat every 10K steps.</strong> A license to indulge in all the high-calorie foods I normally eat with suspicion: <strong>Walnuts</strong>, <strong>cashews</strong>, <strong>peanut butter</strong>, <strong>milk cream</strong>, <strong>butter</strong>, <strong>raisins</strong>, <strong>dates</strong>, <strong>figs</strong>&#8230;&#128523; the <em>snack list</em> goes on&#8230; In this way, I was still going to eat enough <strong>&#8216;healthy&#8217;</strong> calories to support my effort.</p></li></ul><p>Weirdly, that snack strategy turned the walk into a game: <em>Walk 10K &#8594; Eat treasure</em> &#8594; Repeat. &#128517;</p><p>But beyond all the math, prep, and peanut-butter bribes, the real goal? Not just to hit 40K steps, but to prove something I wasn't sure about yet: &#8220;<em>Could I override the mental resistance that usually stops us far before my body &#8216;actually&#8217; does?&#8221;</em></p><p>I didn&#8217;t fully know what I&#8217;d discover yet, but I could feel it; something was waiting for me on the other side.</p><p>And so, with a charged watch, a water bottle, and slightly too much confidence, I went to bed the night before, knowing that tomorrow I was going to walk, walk, walk, and some more walk.</p><h3>&#127826; The Long Walk Home (Literally)</h3><p>It&#8217;s 6th May 2025, Morning 7:00 AM, the challenge began like most do with optimism, clean shoes, and a wildly underestimating brain.</p><ul><li><p><strong>&#9728;&#65039; 7:00 AM &#8211; Morning Walk (10K Steps)</strong></p><p>I stepped out, sun on my face, the first 10K steps felt light, <em>almost</em> easy. I was fresh, energetic, and kind of excited. My brain was like, <em>&#8220;Hey, this might actually be fun. &#128378;&#8221;</em></p><p>It&#8217;s cute when your brain says things like that. I clocked those 10K by around 8:30 AM. So far, so good.</p></li><li><p>&#128187; <strong>12:00 PM &#8211; 6:00 PM &#8211; Work Hours + Indoor Laps (5K Steps)</strong></p><p>I knew I couldn&#8217;t let work hours become step-free hours. So, every chance I got between meetings, build times, or any slight pause, I was up and walking. Indoors. Like a caffeinated ghost, walking round and round in circles through the bedroom to the hall to the kitchen. &#128123;</p><p>It wasn&#8217;t glamorous, but it worked.</p><p>By the end of the workday, I had added another <strong>5K steps</strong>, bringing the total to around <strong>15,000</strong>.</p><p>And this is where the <em>real</em> game started.</p></li><li><p>&#127751; <strong>5:00 PM &#8211; 8:00 PM &#8211; The Big Evening Push</strong></p><p>This block was the main event. The make-or-break walk. I laced up again and headed out, legs <strong>slightly</strong> tired but spirit still intact. The first half-hour was smooth, I told myself, <em>&#8220;Just keep walking, walking, and walking until it gets dark.&#8221;</em></p><p>But around <strong>20K steps</strong>, I hit that first mental dip. I was halfway done. But that meant I still had halfway to go. I had to walk almost the same distance I walked since the beginning of the day &#128576;!</p><p>Strangely, my legs were not complaining at all, but my brain started negotiating.</p></li><li><p>&#129521; <strong>30K: The Wall</strong></p><p>This was the hardest stretch.</p><p>Not physically, entirely, but more so mentally. It felt like time had slowed down. Each 100 steps took effort. My calves were a <strong>little</strong> sore, and my mind started spiraling with thoughts like <em>&#8220;You&#8217;ve walked enough, right?&#8221;, &#8220;What if it affects your recovery?&#8221;, &#8220;What if your immunity dips?&#8221;</em></p><p>This is where my brain was forcing me to stop. And honestly, this is where <em>I</em> usually stop.</p><p>But that day, I decided to keep going. Just to see what would happen. I walked till 8:00 PM. Headed towards home for dinner.</p></li><li><p>&#127769; <strong>9:00 PM &#8211; 10:00 PM &#8211; Final Lap (7K Steps)</strong></p><p>And just after having dinner&#8230;. I went out one last time. Legs heavy, calves tight, lower back starting to protest. But something had changed. Weirdly, the final stretch felt&#8230; quiet. Almost meditative. <em><strong>Maybe because I was talking on the phone with my friend &#128521;.</strong></em></p><p>So, I wasn&#8217;t checking my watch constantly. I wasn&#8217;t overthinking. My body was tired, but my mind had finally stopped resisting.</p><p>Coming back home, I walked straight into the kitchen. Ate my final 400-calorie reward like I had just won a championship. <br>At exactly <strong>41119 steps | 29.11 km</strong>, I stopped. Smiled.</p><p>And then?</p><p>I slept like someone who had taken the entire bottle of sleeping pills&#8230;! &#128564;</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tQ-Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b027ca7-d2ef-48fc-a1a7-4e7f7fc657d8_1584x1616.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tQ-Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b027ca7-d2ef-48fc-a1a7-4e7f7fc657d8_1584x1616.png 424w, https://substackcdn.com/image/fetch/$s_!tQ-Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b027ca7-d2ef-48fc-a1a7-4e7f7fc657d8_1584x1616.png 848w, https://substackcdn.com/image/fetch/$s_!tQ-Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b027ca7-d2ef-48fc-a1a7-4e7f7fc657d8_1584x1616.png 1272w, https://substackcdn.com/image/fetch/$s_!tQ-Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b027ca7-d2ef-48fc-a1a7-4e7f7fc657d8_1584x1616.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!tQ-Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b027ca7-d2ef-48fc-a1a7-4e7f7fc657d8_1584x1616.png" width="1456" height="1485" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b027ca7-d2ef-48fc-a1a7-4e7f7fc657d8_1584x1616.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1485,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:780644,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/166577032?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b027ca7-d2ef-48fc-a1a7-4e7f7fc657d8_1584x1616.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tQ-Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b027ca7-d2ef-48fc-a1a7-4e7f7fc657d8_1584x1616.png 424w, https://substackcdn.com/image/fetch/$s_!tQ-Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b027ca7-d2ef-48fc-a1a7-4e7f7fc657d8_1584x1616.png 848w, https://substackcdn.com/image/fetch/$s_!tQ-Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b027ca7-d2ef-48fc-a1a7-4e7f7fc657d8_1584x1616.png 1272w, https://substackcdn.com/image/fetch/$s_!tQ-Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b027ca7-d2ef-48fc-a1a7-4e7f7fc657d8_1584x1616.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>&#129373; One Bonus Point + Many Lessons</h3><p>The next day, I checked the thread, and I was placed 3rd among the top 10. And had secured the bonus point for myself and my team.</p><p>But to my surprise, I was <em>not</em> as sore as I expected. I thought I would feel like I&#8217;d done hundreds of squats and lunges, the kind of soreness that makes stairs feel like Everest.</p><p>But strangely, I wasn&#8217;t even as sore as I usually am after a regular leg day workout.</p><p>Though I was not experiencing any major muscle soreness, I was still tired&#8230; So, I listened to my body and took a <strong><a href="https://www.menshealth.com/uk/building-muscle/train-smarter/a46037626/what-is-a-deload-week/">deload week</a></strong>, reduced my usual workout volume for that week, letting my system recalibrate.</p><p>And here&#8217;s what I realized: The hardest part isn&#8217;t the walking. It&#8217;s the <em>idea</em> of walking that long. That far. That endlessly. The real resistance? It lives in your head. Once you break through that mental wall, the voice that says, &#8220;<em>This is too much,&#8221;</em> or <em>&#8220;you can&#8217;t keep going,&#8221; or &#8220;what ifs&#8221;,</em> your body just follows. In reality, our body is capable of far more than we give it credit for.</p><p>My brain, like most of ours, is a mischievous little storyteller. It loves spinning worst-case scenarios, dramatic dialogues, and catastrophic conclusions. But I&#8217;ve started learning something important. My job isn&#8217;t to silence it. That&#8217;s impossible. <strong>My job is to stop taking its stories as reality.</strong> Listen, but don&#8217;t obey. Acknowledge, but don&#8217;t believe everything it says.</p><p>And somewhere between step 35,000 and 40,000, I really understood that.</p><h3><strong>&#127819; A Heartfelt Thanks</strong></h3><p>Before I wrap up, I want to take a moment to send a big thank-you to <strong>Fyle</strong> for putting together another incredible health challenge.</p><p>A special shoutout to <strong><a href="https://www.linkedin.com/in/meeha-tewari/">Meeha</a></strong> and everyone behind the scenes who made this happen. Your effort, energy, and consistency turned this into more than just a challenge.</p><p>So here&#8217;s to the journey once more,</p><p><strong>Keep exercising, stay active, and keep pushing your limits.</strong></p><p>See you at the next one!</p><p><strong>Happy fitness</strong>&#8230;! &#128170;</p>]]></content:encoded></item><item><title><![CDATA[Sunsetting a Feature: A Checklist for Product Managers]]></title><description><![CDATA[A detailed approach followed for deprecating two legacy pages in our product, Fyle]]></description><link>https://stories.fylehq.com/p/sunsetting-a-feature-a-checklist</link><guid isPermaLink="false">https://stories.fylehq.com/p/sunsetting-a-feature-a-checklist</guid><dc:creator><![CDATA[Prady Dinni]]></dc:creator><pubDate>Wed, 18 Jun 2025 07:02:05 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb56c36ad-e3ee-4f82-8914-634e0c90d579_1536x1024.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Feature deprecation is becoming as important as feature launches. Here&#8217;s a real-world example of how we sunset two legacy pages at Fyle, and the checklist we built along the way to help other product managers do it right.</p><p>Hi, I&#8217;m <a href="https://www.linkedin.com/in/dinni/">Pradyumna Dinni</a>. I&#8217;m a Product Manager at Fyle, a B2B expense management software. I&#8217;ve been with Fyle for over three years, building and scaling features across different modules, contributing to revenue by building things for market expansion and saving customer churn.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Recently, we decided to deprecate two long-standing pages in our product. In this post, I&#8217;ll share how we evaluated that decision, what went into communicating it, and a practical checklist for product managers &#8212; especially those working in B2B SaaS.</p><div><hr></div><p>Before we get started with the content of the blog post, I&#8217;d like to give some context and tell you a story, because who doesn&#8217;t like stories?</p><p>Fyle has three primary user roles:</p><ul><li><p><strong>Spenders</strong>, employees who incur business expenses.</p></li><li><p><strong>Approvers</strong>, typically managers who review submitted expenses.</p></li><li><p><strong>Administrators</strong> (admins), who configure and manage the business account.</p></li></ul><p>And internally, we call each roadmap item an initiative.</p><p>With the context set, I&#8217;d like to jump into the story and tell you my first experience with deprecation.</p><h2>My first experience with deprecation</h2><p>One of my first initiatives at Fyle in early 2022 was to remove a page showing all corporate card transactions for spenders. The idea was simple: since expenses were being auto-created from transactions, the page felt redundant.</p><p>But the deprecation didn&#8217;t go as planned. I lacked product context, and we missed steps like customer communication, identifying workarounds, and preparing internal teams. As a result, the initiative dragged on for nearly a year, affecting customer trust and my confidence.</p><p>At the time, I was still learning the product and understanding our customer segments. The backlash we received from customers, even in ways we hadn&#8217;t anticipated, taught me a critical lesson. Sunsetting a feature isn&#8217;t just a backend cleanup task; it&#8217;s a cross-functional decision that impacts users and teams in more ways than one.</p><p>I learned an important lesson: sunsetting a feature needs the same attention and rigor as launching one.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!RBpC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3f8854-f2d9-4790-b4ba-70da82554404_498x498.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!RBpC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3f8854-f2d9-4790-b4ba-70da82554404_498x498.gif 424w, https://substackcdn.com/image/fetch/$s_!RBpC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3f8854-f2d9-4790-b4ba-70da82554404_498x498.gif 848w, https://substackcdn.com/image/fetch/$s_!RBpC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3f8854-f2d9-4790-b4ba-70da82554404_498x498.gif 1272w, https://substackcdn.com/image/fetch/$s_!RBpC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3f8854-f2d9-4790-b4ba-70da82554404_498x498.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!RBpC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3f8854-f2d9-4790-b4ba-70da82554404_498x498.gif" width="498" height="498" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b3f8854-f2d9-4790-b4ba-70da82554404_498x498.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:498,&quot;width&quot;:498,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2870610,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/166219304?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3f8854-f2d9-4790-b4ba-70da82554404_498x498.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!RBpC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3f8854-f2d9-4790-b4ba-70da82554404_498x498.gif 424w, https://substackcdn.com/image/fetch/$s_!RBpC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3f8854-f2d9-4790-b4ba-70da82554404_498x498.gif 848w, https://substackcdn.com/image/fetch/$s_!RBpC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3f8854-f2d9-4790-b4ba-70da82554404_498x498.gif 1272w, https://substackcdn.com/image/fetch/$s_!RBpC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b3f8854-f2d9-4790-b4ba-70da82554404_498x498.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Image by <a href="http://tenor.com/en-IN/">tenor</a></figcaption></figure></div><div><hr></div><h2>What have we learnt?</h2><p>Fast-forward to 2025. During a roadmap discussion last quarter, our Design Head, <a href="https://www.linkedin.com/in/dhvani-shah-960575162/">Dhvani</a>, curiously asked: &#8220;What about the <em>Company Summary</em> page?&#8221; It was a good question because we were not focusing on that page in the last few quarters, and not everyone internally had a proper idea of what that page was about! This page &#8212; one of two summary pages we had (the other being <em>Team Summary</em> for approvers) &#8212; was originally built to give a high-level view of expenses. But it hadn&#8217;t seen much engagement recently.</p><p>At the same time, our engineering team was migrating the frontend code from AngularJS to Angular. AngularJS to Angular migration has been a major focus for our frontend team over the last few quarters. The migration is essential for better maintainability, performance, and long-term scalability. You can read more about it from our colleagues about migrating the Chrome extension from scratch <a href="https://stories.fylehq.com/p/migrating-from-angularjs-to-angular">here</a> and writing end-to-end tests for smooth migration <a href="https://stories.fylehq.com/p/e2e-tests">here</a>.</p><p>In the same roadmap planning session, our Engineering Manager, <a href="https://www.linkedin.com/in/dimple-kaluram-hemanth-2073a5158/">Dimple</a>, inquired if these two pages were relevant. If so, they need to migrate these two pages to Angular. Keeping those summary pages would mean more effort for our engineers.</p><p>So we added an initiative: &#8220;Decide the future of Company and Team summary pages&#8221; on our Q2 roadmap.</p><p>The objective wasn&#8217;t to hastily pull the plug. We wanted to understand:</p><ul><li><p>Are customers still finding value in these pages?</p></li><li><p>Are there opportunities to improve them meaningfully?</p></li><li><p>Can the same insights be surfaced elsewhere in the product more effectively?</p></li><li><p>And crucially, is it worth the engineering effort to migrate them to Angular?</p></li></ul><div><hr></div><h2>What do these pages have?</h2><ul><li><p><strong>Company Summary</strong> (for Admins) and <strong>Team Summary</strong> (for Approvers) show a list of employees with their total amount of incomplete expenses, submitted expenses, reimbursements, and advances.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!VuZx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099b8d1-4cec-4215-95d9-a081ff9221ea_1835x976.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!VuZx!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099b8d1-4cec-4215-95d9-a081ff9221ea_1835x976.png 424w, https://substackcdn.com/image/fetch/$s_!VuZx!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099b8d1-4cec-4215-95d9-a081ff9221ea_1835x976.png 848w, https://substackcdn.com/image/fetch/$s_!VuZx!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099b8d1-4cec-4215-95d9-a081ff9221ea_1835x976.png 1272w, https://substackcdn.com/image/fetch/$s_!VuZx!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099b8d1-4cec-4215-95d9-a081ff9221ea_1835x976.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!VuZx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099b8d1-4cec-4215-95d9-a081ff9221ea_1835x976.png" width="1456" height="774" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0099b8d1-4cec-4215-95d9-a081ff9221ea_1835x976.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:774,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:130824,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/166219304?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099b8d1-4cec-4215-95d9-a081ff9221ea_1835x976.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!VuZx!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099b8d1-4cec-4215-95d9-a081ff9221ea_1835x976.png 424w, https://substackcdn.com/image/fetch/$s_!VuZx!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099b8d1-4cec-4215-95d9-a081ff9221ea_1835x976.png 848w, https://substackcdn.com/image/fetch/$s_!VuZx!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099b8d1-4cec-4215-95d9-a081ff9221ea_1835x976.png 1272w, https://substackcdn.com/image/fetch/$s_!VuZx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0099b8d1-4cec-4215-95d9-a081ff9221ea_1835x976.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Reference: Summary page for admins - Company Summary</figcaption></figure></div></li><li><p>These were originally built for Indian businesses during the pre-COVID era, where reimbursements and advances were common.</p></li></ul><p>But our ICP (Ideal Customer Profile) today is very different &#8212; primarily US-based SMBs (Small and Medium-sized Businesses) with simpler, card-driven workflows.</p><div class="pullquote"><p><em>The ability to pivot is what distinguishes successful startups from the rest.</em></p><p>Eric Ries</p></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!T2uT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb56c36ad-e3ee-4f82-8914-634e0c90d579_1536x1024.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!T2uT!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb56c36ad-e3ee-4f82-8914-634e0c90d579_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!T2uT!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb56c36ad-e3ee-4f82-8914-634e0c90d579_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!T2uT!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb56c36ad-e3ee-4f82-8914-634e0c90d579_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!T2uT!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb56c36ad-e3ee-4f82-8914-634e0c90d579_1536x1024.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!T2uT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb56c36ad-e3ee-4f82-8914-634e0c90d579_1536x1024.jpeg" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b56c36ad-e3ee-4f82-8914-634e0c90d579_1536x1024.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:316995,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/166219304?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb56c36ad-e3ee-4f82-8914-634e0c90d579_1536x1024.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!T2uT!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb56c36ad-e3ee-4f82-8914-634e0c90d579_1536x1024.jpeg 424w, https://substackcdn.com/image/fetch/$s_!T2uT!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb56c36ad-e3ee-4f82-8914-634e0c90d579_1536x1024.jpeg 848w, https://substackcdn.com/image/fetch/$s_!T2uT!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb56c36ad-e3ee-4f82-8914-634e0c90d579_1536x1024.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!T2uT!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb56c36ad-e3ee-4f82-8914-634e0c90d579_1536x1024.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Image generated by AI</figcaption></figure></div><h2><strong>Applying the lessons: Start with data</strong></h2><p>This time around, I was determined not to repeat the mistakes I made in 2022. No assumptions. No hasty decisions. I wanted to approach this with a clear head and apply a structured process &#8212; starting with data and internal insights before we even thought about deprecation.</p><h3><strong>Step 1: Usage analytics</strong></h3><p>We pulled usage data for the Company Summary and Team Summary pages over six months &#8212; from <strong>October 1st, 2024, to early April 2025</strong>. Specifically, we looked at:</p><ul><li><p>How many customers viewed these pages</p></li><li><p>How many exports were made from each page</p></li></ul><p>This gave us a quantitative sense of activity and whether these pages were still relevant in day-to-day workflows.</p><p>Usage data looked like this - Exports: Less than 50 from Company Summary and less than 20 from Team Summary. Users who visited these pages multiple times were also about the same number. Most users had only visited these pages once &#8212; likely out of curiosity rather than necessity.</p><h3><strong>Step 2: Internal conversations</strong></h3><p>In parallel, I reached out to our Sales and Customer Success teams &#8212; those closest to the end users and have a pulse on what truly matters.</p><ul><li><p><strong>Sales Team:</strong> I asked whether these summary pages come up during demos or discovery calls with prospects. Are potential customers curious about them? Do they find value or raise questions during evaluations?</p></li><li><p><strong>Customer Success Team:</strong> I wanted to know if existing customers ever reference these pages during check-ins or onboarding calls. Do they request enhancements or mention pain points? Is there a problem that is solved only by these pages in our product? Also checked if any support tickets had been raised in the last 6&#8211;12 months specifically around these pages &#8212; issues, bugs, confusion, or even requests for improvement.</p></li></ul><p>Before we even approached customers directly, this internal sweep helped us gather a 360&#176; view of usage, perception, and visibility of the two pages.</p><p>The responses from the teams were alike - no recent prospect asked about these pages. No requests, questions, or feedback in recent quarters from existing customers either!</p><p>This was a strong signal: these pages were no longer essential, which is reflected in low engagement.</p><p>Between the lack of usage, low user engagement, and shifting product-market alignment, we had enough evidence to start preparing for a sunset.</p><div><hr></div><h2><strong>Customer validation: No surprises, no regrets</strong></h2><p>Even after our internal research and data review pointed toward deprecating the Summary pages, we didn&#8217;t want to assume customer silence meant customer agreement. We wanted to be doubly sure.</p><p>So we launched two carefully crafted customer-facing campaigns:</p><h3><strong>1. In-app announcement</strong></h3><p>We added an announcement (via Appcues) directly on the Summary pages themselves, informing users that these pages were scheduled for deprecation. This ensured that any active user of the page would be aware and could raise concerns.</p><h3><strong>2. Targeted email campaign</strong></h3><p>We also emailed a curated list of users who had visited the pages multiple times over the last six months or exported data from these pages. These were our most relevant users, and we wanted to give them a heads-up &#8212; not just about the deprecation, but about what they could use instead.</p><h2><strong>Offering alternatives: The guide to employee spend summary</strong></h2><p>To support users, we created a detailed document outlining:</p><ul><li><p>Feature alternatives within Fyle that provide similar or better value.</p></li><li><p>How to achieve the same outcomes using more modern, supported tools, like Copilot, our AI assistant, helps users query their data and navigate the product with ease, and the Spend Overview page, which visualizes trends across categories, departments, cards, and employees &#8212; offering a more actionable lens than static tables.</p></li></ul><p>We linked this guide in both the Appcues banner and the email. The goal: give users time, clarity, and confidence to adapt.</p><h2><strong>Grace period and listening window</strong></h2><p>We didn&#8217;t rush. We gave users a <strong>2&#8211;3 week buffer</strong> &#8212; clearly communicating that the pages would be deprecated on a fixed date, approximately 20 days after the announcement. This gave them enough time to:</p><ul><li><p>Explore the suggested alternatives</p></li><li><p>Understand the rationale behind the decision</p></li><li><p>Reach out with any objections or concerns</p></li></ul><h2><strong>The result</strong></h2><p>Not a single customer objected. No new tickets. No unexpected feedback from Sales, Customer Success, or support during the entire window.</p><p>So, with all stars aligned, we finally hit the button &#8212; the Summary pages were officially deprecated.</p><p>This initiative was rolled out smoothly, thanks to our Engineering Manager, <a href="https://www.linkedin.com/in/dimple-kaluram-hemanth-2073a5158/">Dimple</a>, and our Member of Technical Staff, <a href="https://www.linkedin.com/in/vvaibhavsingh/">Vaibhav</a>. They helped me promptly with data, sharing their thoughts, and gave us time to take calls and deprecate the two pages.</p><div><hr></div><p>Here&#8217;s the checklist:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!p6ft!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F375f5c68-ad67-4f6b-abe3-98886acb6c2a_1080x1350.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!p6ft!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F375f5c68-ad67-4f6b-abe3-98886acb6c2a_1080x1350.png 424w, https://substackcdn.com/image/fetch/$s_!p6ft!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F375f5c68-ad67-4f6b-abe3-98886acb6c2a_1080x1350.png 848w, https://substackcdn.com/image/fetch/$s_!p6ft!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F375f5c68-ad67-4f6b-abe3-98886acb6c2a_1080x1350.png 1272w, https://substackcdn.com/image/fetch/$s_!p6ft!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F375f5c68-ad67-4f6b-abe3-98886acb6c2a_1080x1350.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!p6ft!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F375f5c68-ad67-4f6b-abe3-98886acb6c2a_1080x1350.png" width="1080" height="1350" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/375f5c68-ad67-4f6b-abe3-98886acb6c2a_1080x1350.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1350,&quot;width&quot;:1080,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:162451,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/166219304?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F375f5c68-ad67-4f6b-abe3-98886acb6c2a_1080x1350.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!p6ft!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F375f5c68-ad67-4f6b-abe3-98886acb6c2a_1080x1350.png 424w, https://substackcdn.com/image/fetch/$s_!p6ft!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F375f5c68-ad67-4f6b-abe3-98886acb6c2a_1080x1350.png 848w, https://substackcdn.com/image/fetch/$s_!p6ft!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F375f5c68-ad67-4f6b-abe3-98886acb6c2a_1080x1350.png 1272w, https://substackcdn.com/image/fetch/$s_!p6ft!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F375f5c68-ad67-4f6b-abe3-98886acb6c2a_1080x1350.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><p>When done right, deprecating a feature simplifies your product, respects your users, and frees up team bandwidth to build what really matters.</p><p>When done wrong, it can shake customer trust and burn valuable effort of everyone involved.</p><p>If you&#8217;re a PM facing a similar call, I hope this story and checklist help you make it with confidence.</p><div><hr></div><p><a href="https://www.linkedin.com/in/dimple-kaluram-hemanth-2073a5158/">Dimple</a> and I worked on that 2022 initiative that didn&#8217;t go well. During our initiative reflection call recently, she mentioned that the deprecation initiative for summary pages was &#8220;<em>as</em> <em>smooth as butter!</em>&#8221;</p><p>I may have completed the redemption arc! &#128519;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Deployments story of manual chaos to automated salvation 💥]]></title><description><![CDATA[Hello, I&#8217;m Shreyansh &#128075;&#127996;, part of the engineering team at Fyle.]]></description><link>https://stories.fylehq.com/p/deployments-story-of-manual-chaos</link><guid isPermaLink="false">https://stories.fylehq.com/p/deployments-story-of-manual-chaos</guid><dc:creator><![CDATA[Shreyansh Sahare]]></dc:creator><pubDate>Wed, 04 Jun 2025 14:54:04 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!uNxo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4d3c7b-5da2-4d1f-81d9-3bc791c595d4_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uNxo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4d3c7b-5da2-4d1f-81d9-3bc791c595d4_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uNxo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4d3c7b-5da2-4d1f-81d9-3bc791c595d4_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!uNxo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4d3c7b-5da2-4d1f-81d9-3bc791c595d4_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!uNxo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4d3c7b-5da2-4d1f-81d9-3bc791c595d4_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!uNxo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4d3c7b-5da2-4d1f-81d9-3bc791c595d4_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uNxo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4d3c7b-5da2-4d1f-81d9-3bc791c595d4_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f4d3c7b-5da2-4d1f-81d9-3bc791c595d4_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2169730,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/164156637?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4d3c7b-5da2-4d1f-81d9-3bc791c595d4_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uNxo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4d3c7b-5da2-4d1f-81d9-3bc791c595d4_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!uNxo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4d3c7b-5da2-4d1f-81d9-3bc791c595d4_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!uNxo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4d3c7b-5da2-4d1f-81d9-3bc791c595d4_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!uNxo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f4d3c7b-5da2-4d1f-81d9-3bc791c595d4_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hello, I&#8217;m <a href="https://www.linkedin.com/in/shreyansh-sahare/">Shreyansh</a> &#128075;&#127996;,  part of the engineering team at Fyle. </p><p>Managing deployments across multiple regions has always been a critical task for us. Initially, we relied on manual processes, which, while functional, were time-consuming and prone to errors. As the product and services grew, we recognized the need for a more efficient solution and transitioned to automated deployments.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>I'll share our journey from manual deployments to embracing ArgoCD for continuous delivery. We'll explore the challenges we faced, the solutions we implemented, and how tools like Kustomize were pivotal in streamlining our deployment processes.</p><h2>Chapter 1: The Setup That Seemed Fine &#127959;&#65039;</h2><p>Let me paint the picture of where we were. We had a decent setup, or so we thought. Our services ran on Kubernetes clusters in two regions - India &#127470;&#127475; and US &#127482;&#127480;. Each service lived in its own Docker container &#128051;, neatly organized into different namespaces. Our GitHub workflows automatically built new Docker images whenever developers pushed code. </p><p>On paper, it looked modern and efficient. &#10024;</p><p>But the deployment part? That's where our modern infrastructure meets our stone-age processes. &#128511;</p><h2>Chapter 2: The Old Way - A Daily Nightmare &#128565;</h2><p>Picture this: It's Monday morning, and we must deploy five services across both regions. Here's what that looked like. &#128548;</p><p>First, I had to SSH into our India production machine. The terminal would greet me with:</p><pre><code><code>$ ssh user@india-prod-01
Welcome to Ubuntu 20.04.3 LTS
Last login: Mon Oct 23 08:15:32 2023
</code></code></pre><p>Then I'd navigate to our deployment repository and run our "helpful" bash script: &#129302;</p><pre><code><code>$ cd /opt/prod-deployment-repo
$ ./deploy default api:api_v2.1.3,worker:worker_v1.8.2,scheduler:scheduler_v3.0.1 payments payment-service:payment_v4.2.0 notifications email-service:email_v2.5.1
</code></code></pre><p>Look at that command. It's a monster. &#128121; And this was just for one region. I had to repeat the entire process for the US region, carefully making sure I didn't mix up the versions.</p><p>The script would then use <code>sed</code> commands to find and replace image versions in our YAML files:</p><pre><code><code>sed -i 's|api:.*|api:api_v2.1.3|g' deployments/default/api-deployment.yaml
sed -i 's|worker:.*|worker:worker_v1.8.2|g' deployments/default/worker-deployment.yaml
</code></code></pre><p>Then it would apply the changes:</p><pre><code><code>kubectl apply -f deployments/default/api-deployment.yaml
kubectl apply -f deployments/default/worker-deployment.yaml
</code></code></pre><h2>Chapter 3: When Everything Went Wrong &#128165;</h2><p>We had deployed a critical fix for our api service. The command looked like this:</p><pre><code><code>./deploy api api-service:api_v4.1.0
</code></code></pre><p>But due to a typo &#129318;&#8205;&#9792;&#65039; , instead of <code>api_v4.0.1</code>, we deployed <code>api_v4.1.0 </code> - an older version with a known bug.</p><p>The deployment "succeeded" but the service was running an unintended version of code.</p><p>To make matters worse, we couldn't quickly see what went wrong. There was no easy way to compare what was deployed versus what should have been deployed. We had to check each service's current image version manually:</p><pre><code><code>kubectl get deployment api-service -o jsonpath='{.spec.template.spec.containers[0].image}'
</code></code></pre><p>The rollback process was equally manual and stressful. We had to remember the previous working versions and run the deployment script again with the correct images. &#128260;</p><h2>Chapter 4: The Problems That Kept Growing &#128200;</h2><p>This wasn't an isolated incident. Our manual deployment process was a ticking time bomb with multiple problems: &#128163;</p><p><strong>The SSH Bottleneck</strong> &#128274;: Only certain team members had production access. When they were unavailable, deployments waited.</p><p><strong>Command Line Nightmares</strong> &#128421;&#65039;: Our deployment commands grew longer as we added services. A typical deployment command would span three lines:</p><pre><code><code>./deploy default api:api_v2.1.3,worker:worker_v1.8.2,scheduler:scheduler_v3.0.1,logger:logger_v1.4.2 \
         payments payment-service:payment_v4.2.0,fraud-detector:fraud_v2.1.0 \
         notifications email-service:email_v2.5.1,sms-service:sms_v1.9.0,push-service:push_v3.1.4
</code></code></pre><p>One wrong character and the entire deployment would fail, or deploy the wrong versions. &#10060;</p><p><strong>The Secret Update Dance</strong> &#128131;: When we updated database passwords or API keys, the process was brutal. First, we'd update the Kubernetes secret:</p><pre><code><code>kubectl create secret generic db-secret --from-literal=password=newpassword123 --dry-run=client -o yaml | kubectl apply -f -
</code></code></pre><p>Then we had to manually delete all pods that used this secret:</p><pre><code><code>kubectl delete pods -l app=api-service
kubectl delete pods -l app=notification-service
</code></code></pre><p>If the secret was used by ten services, we'd have to remember and restart all ten. Miss one, and that service keeps using the old credentials until it restarts naturally. &#129335;&#8205;&#9794;&#65039;</p><p><strong>Version Chaos</strong> &#127786;&#65039;: Different team members would sometimes deploy different versions to different regions. We'd end up with API v2.1.3 in India and v2.1.1 in the US. </p><p><strong>The Knowledge Gap</strong> &#129504;: New team members took weeks to learn our deployment process. They had to shadow experienced engineers multiple times before being trusted with production deployments.</p><h2>Chapter 5: The Breaking Point &#128148;</h2><p>The final straw came during a major product launch. We needed to deploy updates to twelve services across both regions. The deployment took hours because:</p><ul><li><p>Two services failed due to typos in the deployment command &#10060;</p></li><li><p>We discovered a config map needed updating, which required manually restarting six services &#128260;</p></li><li><p>Version mismatches between regions caused API compatibility issues &#128256;</p></li><li><p>The rollback process took another hour when we found a critical bug &#128027;</p></li></ul><h2>Chapter 6: The Search for Something Better - Enter ArgoCD &#129464;&#8205;&#9794;&#65039;</h2><p>ArgoCD is like having a dedicated deployment assistant that never sleeps, never makes typos, and never forgets to update something.</p><p>Here's how it works: You put all your deployment configurations in a Git repository. ArgoCD watches this repository continuously. When you commit changes, ArgoCD automatically applies those changes to your Kubernetes clusters.</p><p>Think of it like this - instead of manually applying changes, you declare what you want your system to look like in Git, and ArgoCD makes it happen.</p><p>The magic happens through something called the "GitOps loop":</p><ol><li><p>Developer commits code changes</p></li><li><p>CI pipeline builds and pushes a new Docker image</p></li><li><p>Someone updates the deployment repository with the new image version</p></li><li><p>ArgoCD detects the change within 3 minutes or instantaneously if you have configured webhooks.</p></li><li><p>ArgoCD applies the changes to all configured clusters automatically</p></li></ol><p>No SSH. No manual commands. No typos.</p><h2>Chapter 7: Adding Structure with Kustomize &#127959;&#65039;</h2><p>Along with ArgoCD, we adopted Kustomize to organize our deployment files better. Kustomize uses a "base and overlay" pattern that eliminates duplication while handling environment differences elegantly. &#127912;</p><p>Here's how we structured it: &#128193;</p><h3>The Base Configuration &#127959;&#65039;</h3><p>We created base configurations that contain the common parts of our deployments:</p><pre><code><code># base/api-service/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-service
  labels:
    app: api-service
spec:
  replicas: 3
  selector:
    matchLabels:
      app: api-service
  template:
    metadata:
      labels:
        app: api-service
    spec:
      containers:
      - name: api
        image: api-service:latest
        ports:
        - containerPort: 8080
        env:
        - name: DATABASE_URL
          valueFrom:
            secretKeyRef:
              name: db-credentials
              key: url
        resources:
          requests:
            memory: "256Mi"
            cpu: "250m"
          limits:
            memory: "512Mi"
            cpu: "500m"
</code></code></pre><p>The base kustomization file references all our common resources:</p><pre><code><code># base/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
- api-service/deployment.yaml
- api-service/service.yaml
- notification-service/deployment.yaml
- notification-service/service.yaml
- worker-service/deployment.yaml

commonLabels:
  environment: production
</code></code></pre><h3>The Regional Overlays &#127757;</h3><p>Then for each region, we create overlays that specify only the differences:</p><pre><code><code># overlays/india/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

bases:
- ../../base

# Image versions for India region
images:
- name: api-service
  newTag: v2.1.3
- name: payment-service
  newTag: v4.2.1
- name: worker-service
  newTag: v1.8.2

# India-specific patches
patchesStrategicMerge:
- api-service-patch.yaml

# India-specific config
configMapGenerator:
- name: region-config
  literals:
  - REGION=india
  - TIMEZONE=Asia/Kolkata
  - CURRENCY=INR

secretGenerator:
- name: db-credentials
  literals:
  - url=postgresql://india-db.internal:5432/app
</code></code></pre><p>The patch file handles India-specific requirements:</p><pre><code><code># overlays/india/api-service-patch.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-service
spec:
  replicas: 5  # More replicas for higher traffic in India
  template:
    spec:
      containers:
      - name: api
        resources:
          limits:
            memory: "1Gi"  # More memory for India region
            cpu: "1"
        env:
        - name: LOG_LEVEL
          value: "INFO"    # Different log level for India
</code></code></pre><p>The US overlay looks similar but with US-specific values:</p><pre><code><code># overlays/us/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

bases:
- ../../base

images:
- name: api-service
  newTag: v2.1.3
- name: payment-service
  newTag: v4.2.1
- name: worker-service
  newTag: v1.8.2

configMapGenerator:
- name: region-config
  literals:
  - REGION=us
  - TIMEZONE=America/New_York
  - CURRENCY=USD

secretGenerator:
- name: db-credentials
  literals:
  - url=postgresql://us-db.internal:5432/app
</code></code></pre><h2>Chapter 8: The New Way - Deployment Zen &#129496;&#8205;&#9794;&#65039;</h2><p>Now here's what our deployment process looks like. &#127775;</p><p>When we want to deploy new versions, we simply update the image tags in our kustomization files. For example, to deploy API v2.1.4 to both regions:</p><pre><code><code># overlays/india/kustomization.yaml
images:
- name: api-service
  newTag: v2.1.4  # Updated from v2.1.3
</code></code></pre><pre><code><code># overlays/us/kustomization.yaml  
images:
- name: api-service
  newTag: v2.1.4  # Updated from v2.1.3
</code></code></pre><p>Then we commit and push:</p><pre><code><code>git add .
git commit -m "Deploy API v2.1.4 to all regions"
git push origin main
</code></code></pre><p>That's it. ArgoCD detects the changes instantly and deploys to both regions automatically. &#9889;</p><h3>The Magic of Automatic Secret Updates &#128302;</h3><p>Remember our painful secret update process? Now it's automatic. When we need to update database credentials, we use Kustomize's secret generator:</p><pre><code><code># overlays/india/kustomization.yaml
secretGenerator:
- name: db-credentials
  literals:
  - url=postgresql://india-db.internal:5432/app
  - password=newSecurePassword123
</code></code></pre><p>When we commit this change, Kustomize generates a new secret with a unique name like <code>db-credentials-a1b2c3d4</code>. All services that reference this secret automatically get redeployed with the new version. No manual pod deletion required. &#128588;</p><h2>Chapter 9: The Complete Transformation &#128640;</h2><p>The change was dramatic. Let me show you with a real example.</p><p><strong>Before ArgoCD</strong>: Deploying a critical security patch to all services in both regions. &#128560;</p><p><em>Time: 1 hour</em> | <em>Steps: 5 manual commands </em>| <em>People involved: 3 engineers </em>| <em>Errors: 2 version mismatches </em>|<em> 1 forgotten service</em></p><p><strong>After ArgoCD</strong>: The same deployment. &#10024;</p><p><em>Time: 5 minutes</em> | <em>Steps: 3 Git commits </em>|<em> People involved: 1 engineer</em> | <em>Errors: 0</em></p><p></p><h3>The Benefits Keep Coming &#128200;</h3><p><strong>No More SSH Nightmares</strong>: We eliminated production machine access entirely. Deployments happen through Git commits that anyone can make and review. &#128274;</p><p><strong>Version Consistency</strong>: Both regions always run the same versions because they reference the same base configurations. Version drift became impossible. &#127919;</p><p><strong>Instant Rollbacks</strong>: Rolling back became as simple as reverting a Git commit. ArgoCD automatically applies the previous state within minutes. &#9194;</p><p><strong>Automatic Secret Management</strong>: Services automatically redeploy when secrets or configs change. No more manual pod restarts or forgotten updates. &#128272;</p><p><strong>New Team Member Onboarding</strong>: New engineers can deploy safely on their first day. They just need to know Git workflows, which they already understand. &#128104;&#8205;&#128187;</p><p><strong>Visibility</strong>: ArgoCD's dashboard shows the deployment status of all services across all regions in real-time. We can spot issues immediately. &#128065;&#65039;</p><p><strong>Reduced Stress</strong>: Deployments went from high-stress, error-prone events to routine operations that anyone can perform confidently. &#128524;</p><h3>A Real Example of the New Process &#128171;</h3><p>Last week, we needed to deploy a new feature that involved updating four services. Here's exactly what happened:</p><ol><li><p><strong>Developer finished the feature</strong> and pushed code to the main branch &#128187;</p></li><li><p><strong>GitHub workflows automatically build</strong> new Docker images:</p><ul><li><p><code>api-service:v2.2.0</code></p></li><li><p><code>worker-service:v1.9.0</code></p></li><li><p><code>notification-service:v2.6.0</code></p></li><li><p><code>scheduler-service:v3.1.0</code> &#128051;</p></li></ul></li><li><p><strong>I updated the image versions</strong> in both regional overlays:</p></li></ol><pre><code><code># overlays/india/kustomization.yaml and overlays/us/kustomization.yaml
images:
- name: api-service
  newTag: v2.2.0
- name: worker-service
  newTag: v1.9.0
- name: notification-service
  newTag: v2.6.0
- name: scheduler-service
  newTag: v3.1.0
</code></code></pre><ol start="4"><li><p><strong>Committed and pushed</strong> the changes:</p></li></ol><pre><code><code>git add overlays/
git commit -m "Deploy new messaging feature v2.2.0 to all regions

- Updated API service to v2.2.0 with new messaging endpoints
- Updated worker service to v1.9.0 with message processing
- Updated notification service to v2.6.0 with new templates
- Updated scheduler service to v3.1.0 with message queuing"
git push origin main
</code></code></pre><ol start="5"><li><p><strong>ArgoCD automatically deployed</strong> to both regions within 5 minutes &#9889;</p></li></ol><h2>Conclusion: From Chaos to Confidence &#127919;</h2><p>Our journey from manual deployments to ArgoCD wasn't just a technical upgrade - it was a transformation in how we work. We went from dreading deployments to treating them as routine operations. &#128524;</p><p>Most importantly, we can focus on what matters: building features that help our users instead of fighting with deployment processes. &#128170;</p><p>If you're still doing manual deployments, especially across multiple environments, you don't have to suffer through what we did. Tools like ArgoCD and Kustomize can transform your deployment experience just like they transformed ours. &#128640;</p><p>The setup takes some initial work, but the payoff is immediate and compounds over time. Your future self - and your team - will thank you for making the switch. &#128591;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[From Support Intern to Onboarding Team Lead: My Journey at Fyle]]></title><description><![CDATA[A Journey of navigating support, onboarding, and leadership in SaaS&#8212;how I found my voice and built a career at Fyle.]]></description><link>https://stories.fylehq.com/p/from-support-intern-to-onboarding</link><guid isPermaLink="false">https://stories.fylehq.com/p/from-support-intern-to-onboarding</guid><dc:creator><![CDATA[Timothy Alphonso]]></dc:creator><pubDate>Thu, 22 May 2025 08:41:09 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a5d4b9e-eeec-4f9e-a8ac-eb12e6939f19_5025x2816.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ThUi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a5d4b9e-eeec-4f9e-a8ac-eb12e6939f19_5025x2816.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ThUi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a5d4b9e-eeec-4f9e-a8ac-eb12e6939f19_5025x2816.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ThUi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a5d4b9e-eeec-4f9e-a8ac-eb12e6939f19_5025x2816.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ThUi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a5d4b9e-eeec-4f9e-a8ac-eb12e6939f19_5025x2816.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ThUi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a5d4b9e-eeec-4f9e-a8ac-eb12e6939f19_5025x2816.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ThUi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a5d4b9e-eeec-4f9e-a8ac-eb12e6939f19_5025x2816.jpeg" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3a5d4b9e-eeec-4f9e-a8ac-eb12e6939f19_5025x2816.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5707041,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/164077264?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a5d4b9e-eeec-4f9e-a8ac-eb12e6939f19_5025x2816.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ThUi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a5d4b9e-eeec-4f9e-a8ac-eb12e6939f19_5025x2816.jpeg 424w, https://substackcdn.com/image/fetch/$s_!ThUi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a5d4b9e-eeec-4f9e-a8ac-eb12e6939f19_5025x2816.jpeg 848w, https://substackcdn.com/image/fetch/$s_!ThUi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a5d4b9e-eeec-4f9e-a8ac-eb12e6939f19_5025x2816.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!ThUi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3a5d4b9e-eeec-4f9e-a8ac-eb12e6939f19_5025x2816.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><br>Hello World,<br> I am Timothy Alphonso and have been a part of Fyle for over 4 Years now. When I look back at my time at Fyle, it&#8217;s hard not to smile at how far I&#8217;ve come from joining as a tentative intern in the Customer Support function to now leading a team in the Customer Onboarding function. It&#8217;s been a journey of learning, unlearning, and growing both personally and professionally. God truly ordained this job, and He orchestrated the whole process of me breaking through is a testimony in itself.</p><p>Before I jump into the meaty part of this blog, I just want to share a glimpse of my initial days and how that has shaped me in my professional walk at Fyle.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p><strong>The Demo That Nearly Broke Me (But Didn&#8217;t)</strong></p><p>One of the first rites of passage for anyone who joins Fyle is to give a demo of the platform. It&#8217;s a way to showcase what you&#8217;ve learned so far, and more importantly, to get feedback on where you can improve. Sounds fair, right? Except for me, it was absolutely nerve-wracking.</p><p>I still remember that day vividly. I had little confidence speaking to an open forum (though virtually ) as I thought this was the day of the test of my knowledge and leaving a lasting first impression. My palms were sweaty, and I could barely move my cursor straight. To make matters worse, I was dealing with a shaky internet connection and had to rely on my mobile hotspot. Just as the session began, GMeet started acting up, so I made a split-second decision to move everyone to Zoom. But guess what? Zoom wasn&#8217;t any kinder. After a few more hiccups, I had to shift the whole team <em>back</em> to GMeet.</p><p>Ahhhh, it was chaotic. I was flustered, embarrassed, and convinced that I had completely blown my shot. I remember thinking, <em>&#8220;This is it. They&#8217;re never going to bet on someone like me.&#8221;</em></p><p>But they did.</p><p>God made me find favour with Fyle, and more specifically, with my then-manager, <a href="https://www.linkedin.com/in/pratimaraog?utm_source=share&amp;utm_campaign=share_via&amp;utm_content=profile&amp;utm_medium=android_app">Pratima</a>, who took a chance on me. After my three-month internship, it was time to find out whether I would be converted to a full-time role. And by God&#8217;s grace, I was. I can&#8217;t even describe the joy I felt.</p><p>But what truly stayed with me wasn&#8217;t just the conversion&#8212;it was something Pratima said during that discussion. She told me:</p><p><em>&#8220;Timothy, one of the key highlights of your internship was your ability to be curious and learn. You persevered through the challenges, stayed calm under pressure, took feedback in stride, and kept improving. That&#8217;s what made all the difference.&#8221;</em></p><p>Those words struck a deep chord. They became a mini compass for me&#8212;something I&#8217;d keep coming back to whenever I felt lost or unsure. That demo may have been a mess, but it ended up laying the foundation for everything that came after.</p><p></p><h3><strong>The Start: Stepping Into the World of SaaS Support</strong></h3><p>I joined Fyle as a support intern, unsure of what to expect but excited about the opportunity. In those early days or if I may say &#8220;Nights&#8221; as we cater to US clients and work in the US hours at Fyle, I was handling customer tickets, responding to queries via email and chat, and acting as the first line of communication for our users. It was fast-paced, detailed work, and I loved the immediacy of helping someone solve a problem, and the customer's appreciation for it was a cherry on top.</p><p>What made the support role dynamic was the coordination it required across teams. If a customer faced a bug or requested a new feature, I had to collaborate closely with the Product and Engineering teams to get things moving. It was a crash course in cross-functional communication and problem-solving.</p><p>Another fulfilling aspect of my role was conducting admin trainings&#8212;over 100 of them! Helping admins understand the platform, watching their confidence grow, and knowing that I played a role in that transformation was incredibly satisfying. <br>The irony of life - the same guy who messed up his first demo went on to give admin trainings to multiple folks globally. Just a testament to the fact that even if a stone makes you stumble, God can turn that same stone into a rock and make you climb high!</p><p></p><h3><strong>The Shift: Embracing Onboarding for a Bigger Picture</strong></h3><p>After two years in Support, I found myself craving deeper customer relationships. I wanted to be a part of their journey, ensuring I help them cross the finish line in their onboarding by trying to provide an experience that leaves a lasting impact. That&#8217;s what drew me to the Customer Onboarding team.</p><p>The switch wasn&#8217;t just about a new role&#8212;it was about a new mindset. Onboarding is more proactive, project-oriented, strategic, and incredibly nuanced. Every customer is unique, with different needs, goals, and expectations. I was no longer just answering questions&#8212;I was guiding customers through their first steps with Fyle, from setting up their accounts to integrating with accounting platforms, connecting corporate cards, and everything in between.</p><p>And yes, I continued delivering admin trainings here too, because some things don&#8217;t change when you love them.</p><p></p><h3><strong>The Present: Leading with Purpose</strong></h3><p>Today, I wear two hats. I&#8217;m still an individual contributor, actively onboarding customers and ensuring their experience is smooth and successful. But I also lead a team within the onboarding function, which brings its own set of responsibilities.</p><p>Managing a team has been one of the most rewarding aspects of my journey. It&#8217;s about more than answering questions or solving issues. It&#8217;s about mentoring, challenging, supporting, and sometimes simply listening. Watching my team members grow, helping them find their rhythm, and guiding them through complex onboarding journeys&#8212;that&#8217;s where I find purpose now.</p><p>I work remotely, during US hours, and while the night shift comes with its own challenges, it has also given me the space to focus deeply, build strong processes, and connect with our global customers seamlessly.</p><p></p><h3><strong>Reflecting Back, Looking Forward</strong></h3><p>My journey at Fyle hasn&#8217;t been linear, but it has been meaningful. I started out nervous, unsure, and a tad sceptical of myself. Today, I&#8217;m confident, deeply involved in strategic work, and leading a team of brilliant people, all while continuously introspecting and seeking answers even during days when things look foggy.</p><p>The culture at Fyle has played a big part in this. It&#8217;s a place that values curiosity, initiative, and growth. I&#8217;ve always felt encouraged to try, to fail, to learn, and to keep pushing forward.</p><p>If there&#8217;s one thing I&#8217;ve learned in the past few years, it&#8217;s that growth often begins at the edge of your comfort zone. I&#8217;m grateful to have taken that first step&#8212;and every one since.</p><p>Here&#8217;s to the journey so far, and all the adventures ahead.</p><p>Thank you for reading so far, would just like to end this blog with a Bible verse that keeps me going each day -<br><em>Philippians 4:13: "I can do all things through Christ who strengthens me.</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!l6Q2!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92645848-52db-4cb5-82f6-a5ebe2bc8a52_7360x4140.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!l6Q2!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92645848-52db-4cb5-82f6-a5ebe2bc8a52_7360x4140.jpeg 424w, https://substackcdn.com/image/fetch/$s_!l6Q2!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92645848-52db-4cb5-82f6-a5ebe2bc8a52_7360x4140.jpeg 848w, https://substackcdn.com/image/fetch/$s_!l6Q2!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92645848-52db-4cb5-82f6-a5ebe2bc8a52_7360x4140.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!l6Q2!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92645848-52db-4cb5-82f6-a5ebe2bc8a52_7360x4140.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!l6Q2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92645848-52db-4cb5-82f6-a5ebe2bc8a52_7360x4140.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/92645848-52db-4cb5-82f6-a5ebe2bc8a52_7360x4140.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:7979252,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/164077264?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92645848-52db-4cb5-82f6-a5ebe2bc8a52_7360x4140.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!l6Q2!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92645848-52db-4cb5-82f6-a5ebe2bc8a52_7360x4140.jpeg 424w, https://substackcdn.com/image/fetch/$s_!l6Q2!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92645848-52db-4cb5-82f6-a5ebe2bc8a52_7360x4140.jpeg 848w, https://substackcdn.com/image/fetch/$s_!l6Q2!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92645848-52db-4cb5-82f6-a5ebe2bc8a52_7360x4140.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!l6Q2!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F92645848-52db-4cb5-82f6-a5ebe2bc8a52_7360x4140.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><br></em></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Full Circle Health Challenge - a personal journey through my first Fyle health challenge]]></title><description><![CDATA[And the kick in the rear I needed to actually start doing all the things I made new year's resolutions for.]]></description><link>https://stories.fylehq.com/p/the-full-circle-health-challenge</link><guid isPermaLink="false">https://stories.fylehq.com/p/the-full-circle-health-challenge</guid><dc:creator><![CDATA[Krupa Hebbar]]></dc:creator><pubDate>Wed, 21 May 2025 05:05:26 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f00355-e2a5-45aa-a4a7-3aeaacafa596_1920x1080.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I joined Fyle as a senior backend engineer in March 2025 and I had done my fair share of research which included a very compelling read about <a href="https://stories.fylehq.com/p/a-health-journey-beyond-1000-minutes">the previous health challenge</a>. I&#8217;m a self-proclaimed enthu-cutlet, I&#8217;ve been a yogi since childhood, and I started taking <a href="https://krupahebbar.substack.com/p/off-topic-occupational-hazards-of">a more balanced view of fitness since 2020</a>, so when a few weeks into my tenure at Fyle our indefatigable offsite committee announced the &#8220;Full Circle Health Challenge&#8221; for May 2025 &#8212; a team challenge this time &#8212; I was <em>super</em> excited. I somehow tripped and fell into the position of team leader for our team of five and we were off to the races.</p><p>I&#8217;ll put down the challenge format as simply as I can for some context. We could get 1 point per person per day by doing 45+ minutes of physical activity that day, and 2 bonus points per person per week for maintaining a 7 day streak for that week&#8217;s bonus challenge. The weekly challenges ranged from quite simple (10 minutes of meditation) to nearly impossible (&lt;90 minutes screen time? <em>In this economy</em>?). To win, each team of five had to cumulatively collect 35+ points every week, leaving little room for off-weeks <em>(**foreshadowing**)</em>. The bonus challenges were the most exciting for me &#8212;</p><ul><li><p>(Week 1, 21st April) &#128167; <strong>Hydration Nation</strong> - Drink 2.5L+ water daily</p></li><li><p>(Week 2, 28th April) &#129496;&#127995;&#8205;&#9792;&#65039; <strong>Zen it to Win it </strong>- Meditate for 10+ minutes daily</p></li><li><p>(Week 3, 5th May) &#128245; <strong>Scroll-Free Society </strong>- Limit phone screen time to &lt;90 mins daily</p></li><li><p>(Week 4, 12th May) &#128564; <strong>Snooze to Cruise</strong> - Sleep 8+ hours daily</p></li></ul><p>The committee&#8217;s goal was sustainability and consistency &#8212; we couldn&#8217;t make up for slow days by doubling up workouts. We couldn&#8217;t win without consistency. Being new to the company, not really knowing my team, and not really sure if I could achieve these challenges, I was mostly expecting to be there for a good time not a long time. As the days and weeks went by, I noticed improvements in my health that I couldn&#8217;t ignore, and decided to document this journey for posterity!</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2M88!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a15cefa-3123-4205-a613-cdfef8793a80_1956x1042.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2M88!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a15cefa-3123-4205-a613-cdfef8793a80_1956x1042.png 424w, https://substackcdn.com/image/fetch/$s_!2M88!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a15cefa-3123-4205-a613-cdfef8793a80_1956x1042.png 848w, https://substackcdn.com/image/fetch/$s_!2M88!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a15cefa-3123-4205-a613-cdfef8793a80_1956x1042.png 1272w, https://substackcdn.com/image/fetch/$s_!2M88!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a15cefa-3123-4205-a613-cdfef8793a80_1956x1042.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2M88!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a15cefa-3123-4205-a613-cdfef8793a80_1956x1042.png" width="416" height="221.71428571428572" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a15cefa-3123-4205-a613-cdfef8793a80_1956x1042.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:776,&quot;width&quot;:1456,&quot;resizeWidth&quot;:416,&quot;bytes&quot;:2324934,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://krupahebbar.substack.com/i/162512719?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a15cefa-3123-4205-a613-cdfef8793a80_1956x1042.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!2M88!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a15cefa-3123-4205-a613-cdfef8793a80_1956x1042.png 424w, https://substackcdn.com/image/fetch/$s_!2M88!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a15cefa-3123-4205-a613-cdfef8793a80_1956x1042.png 848w, https://substackcdn.com/image/fetch/$s_!2M88!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a15cefa-3123-4205-a613-cdfef8793a80_1956x1042.png 1272w, https://substackcdn.com/image/fetch/$s_!2M88!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a15cefa-3123-4205-a613-cdfef8793a80_1956x1042.png 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></a><figcaption class="image-caption">&#8220;It had been established that I was there for a good time not a long time&#8221; - Taylor Swift on Graham Norton, an interview that lives rent-free in my mind</figcaption></figure></div><h3>The week before: Prep!</h3><p>In true enthu-cutlet fashion, I spent the week before the challenge downloading <em>all</em> the tracking apps &#8212; sleep tracking, water intake tracking, meditation, screen time tracking. I set up the <a href="https://www.minimalistphone.com/">Minimalist phone</a> launcher and app timers, made plans for daily long walks even on rest days. I started keeping an eye on my normal water intake <em>(shockingly low)</em> and screen time <em>(terrifyingly high)</em>. I also started trying out all these apps and skipping over paywalled ones, buggy ones, and ones with overly complicated UI. I was determined to give my best shot<em> </em>to every single week&#8217;s bonus challenge since every single one related in some way to one of my many new years&#8217; resolutions for this year.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pyNc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f00355-e2a5-45aa-a4a7-3aeaacafa596_1920x1080.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pyNc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f00355-e2a5-45aa-a4a7-3aeaacafa596_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pyNc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f00355-e2a5-45aa-a4a7-3aeaacafa596_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pyNc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f00355-e2a5-45aa-a4a7-3aeaacafa596_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pyNc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f00355-e2a5-45aa-a4a7-3aeaacafa596_1920x1080.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pyNc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f00355-e2a5-45aa-a4a7-3aeaacafa596_1920x1080.jpeg" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23f00355-e2a5-45aa-a4a7-3aeaacafa596_1920x1080.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:421310,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/164059127?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f00355-e2a5-45aa-a4a7-3aeaacafa596_1920x1080.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pyNc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f00355-e2a5-45aa-a4a7-3aeaacafa596_1920x1080.jpeg 424w, https://substackcdn.com/image/fetch/$s_!pyNc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f00355-e2a5-45aa-a4a7-3aeaacafa596_1920x1080.jpeg 848w, https://substackcdn.com/image/fetch/$s_!pyNc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f00355-e2a5-45aa-a4a7-3aeaacafa596_1920x1080.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!pyNc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23f00355-e2a5-45aa-a4a7-3aeaacafa596_1920x1080.jpeg 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The way every bonus challenge in this health challenge was represented in my 2025 vision board &#8211; something I created before even joining Fyle &#8211; is wild</figcaption></figure></div><h3>Week 1: &#128167; <strong>Hydration Nation</strong></h3><p>I knew this would be a tough one for me, considering my history of failure in trying to increase my water intake. Getting to one litre would be a <em>good</em> day for me. So I set up my baking scale, my emotional support water bottle, my 7 day free trial to <a href="https://waterminder.com/">WaterMinder</a>, and made sure to track <em>every single sip.</em> This strategy also made sure that the challenge was at the very forefront of my mind all day every day (turns out, water bottle on a weighing scale is just odd enough that I couldn&#8217;t visually tune it out and forget). Not a single sip of water went uncounted! Looks like all I needed to win was this highly specific combination of gamification, a team to hold me accountable, a constant visual cue, the promise of prizes, and the (frankly delusional) week 1 optimism of topping the leaderboard.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Lyly!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55a1aa2-af19-4ec1-8a96-8da6adf98234_3024x4032.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Lyly!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55a1aa2-af19-4ec1-8a96-8da6adf98234_3024x4032.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Lyly!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55a1aa2-af19-4ec1-8a96-8da6adf98234_3024x4032.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Lyly!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55a1aa2-af19-4ec1-8a96-8da6adf98234_3024x4032.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Lyly!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55a1aa2-af19-4ec1-8a96-8da6adf98234_3024x4032.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Lyly!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55a1aa2-af19-4ec1-8a96-8da6adf98234_3024x4032.jpeg" width="318" height="423.9271978021978" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b55a1aa2-af19-4ec1-8a96-8da6adf98234_3024x4032.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1941,&quot;width&quot;:1456,&quot;resizeWidth&quot;:318,&quot;bytes&quot;:730480,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://krupahebbar.substack.com/i/162512719?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55a1aa2-af19-4ec1-8a96-8da6adf98234_3024x4032.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Lyly!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55a1aa2-af19-4ec1-8a96-8da6adf98234_3024x4032.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Lyly!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55a1aa2-af19-4ec1-8a96-8da6adf98234_3024x4032.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Lyly!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55a1aa2-af19-4ec1-8a96-8da6adf98234_3024x4032.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Lyly!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb55a1aa2-af19-4ec1-8a96-8da6adf98234_3024x4032.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Aesthetics also helped</figcaption></figure></div><p>Week 1 ended with the <a href="https://tcsworld10k.procam.in/">TCS 10K run</a> (and my personal worst time which I will not be getting into). I had been incredibly sore and in a lot of pain during all my 6K and 7K practice runs in the months prior, but I was pleasantly surprised to feel zero soreness after the full 10K &#8212; something I can only attribute to this unprecedented increase in my water intake in the week prior.</p><h3>Week 2: &#129496;&#127995;&#8205;&#9792;&#65039; <strong>Zen it to Win it</strong></h3><p>From the day of the health challenge announcement, I chalked this up as an easy week. As a yogi I&#8217;m no stranger to meditation, and do genuinely enjoy it and have experienced its benefits for many years. Looking ahead though, I was anticipating week 3 as my white whale. </p><p>So I started using this week to prep for week 3&#8217;s challenge. While practicing staying away from my phone I discovered an incredibly upsetting habit of constantly unlocking it to check for notifications multiple times an hour.</p><p>Our <a href="https://time.com/3858309/attention-spans-goldfish/">collective fracturing of attention spans</a> has been of concern to me since I saw <a href="https://www.youtube.com/watch?v=jHw765uFoFc">this Anna Akana video</a> &#8212;</p><div id="youtube2-jHw765uFoFc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;jHw765uFoFc&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/jHw765uFoFc?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>I have noticed my own attention span dwindling over the years, with reading fewer books and spending more hours on Instagram. I started this year wanting to reclaim my attention and so week 2&#8217;s meditation challenge was the perfect set up for week 3&#8217;s screen time challenge for me. I found <a href="https://www.calm.com/">Calm&#8217;s</a> 7 Days of Focus series and practiced it for 10 minutes every day, first thing in the morning. </p><p>Unfortunately thanks to the low-screen-time practice, this was also the week I lost my treasured 108-day Wordle streak. Alas.</p><p>On the plus side, I did find myself naturally drinking far more water than I used to before week 1, so consistency was already showing results!</p><h3>Week 3: &#128245; <strong>Scroll-Free Society</strong></h3><p>My white whale at last. I had looked at my average screen time on my phone during prep week &#8212; 4 hours.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1rxU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F119071a5-e268-4aec-afb8-f7be8426fd25_440x292.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1rxU!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F119071a5-e268-4aec-afb8-f7be8426fd25_440x292.gif 424w, https://substackcdn.com/image/fetch/$s_!1rxU!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F119071a5-e268-4aec-afb8-f7be8426fd25_440x292.gif 848w, https://substackcdn.com/image/fetch/$s_!1rxU!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F119071a5-e268-4aec-afb8-f7be8426fd25_440x292.gif 1272w, https://substackcdn.com/image/fetch/$s_!1rxU!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F119071a5-e268-4aec-afb8-f7be8426fd25_440x292.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1rxU!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F119071a5-e268-4aec-afb8-f7be8426fd25_440x292.gif" width="280" height="185.8181818181818" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/119071a5-e268-4aec-afb8-f7be8426fd25_440x292.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:292,&quot;width&quot;:440,&quot;resizeWidth&quot;:280,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;scooby doo from the scooby doo cartoon is making a funny face&quot;,&quot;title&quot;:&quot;scooby doo from the scooby doo cartoon is making a funny face&quot;,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="scooby doo from the scooby doo cartoon is making a funny face" title="scooby doo from the scooby doo cartoon is making a funny face" srcset="https://substackcdn.com/image/fetch/$s_!1rxU!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F119071a5-e268-4aec-afb8-f7be8426fd25_440x292.gif 424w, https://substackcdn.com/image/fetch/$s_!1rxU!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F119071a5-e268-4aec-afb8-f7be8426fd25_440x292.gif 848w, https://substackcdn.com/image/fetch/$s_!1rxU!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F119071a5-e268-4aec-afb8-f7be8426fd25_440x292.gif 1272w, https://substackcdn.com/image/fetch/$s_!1rxU!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F119071a5-e268-4aec-afb8-f7be8426fd25_440x292.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>So I spent the weekend gathering six novels to read during the week, aiming to read a few pages every time I felt tempted to go on my phone. I noticed in previous weeks, my longest screen time was either on WhatsApp (with long conversations), Instagram (mindless scrolling, mainly), Swiggy (apparently I was regularly scrolling for 30+ minutes wondering what to order!?), or the alarm app (when it would ring continuously for 20+ minutes if I didn&#8217;t hear it). There were also instances of Slack or other work apps taking up time. So my plan of action was clear.</p><ol><li><p>Keep WhatsApp conversations to a minimum, make phone calls instead (with the screen locked - did you know a phone call also counts for screen time unless you lock your screen?)</p></li><li><p>Set up Instagram as a restricted app on <a href="https://www.minimalistphone.com/">Minimalist phone</a> launcher (to kick me out when the app timer was done. This was a game-changer!)</p></li><li><p>Set up similar app timers for Swiggy, Slack, Clock and other apps to prevent unintended screen use</p></li></ol><p>I experimented with all these strategies over the previous two weeks to find all the edge cases (that&#8217;s how I found out phone calls take up screen time), and it paid off!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Tdxs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F894a2c31-6f92-4091-a7f5-baf966d107b0_3195x2400.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Tdxs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F894a2c31-6f92-4091-a7f5-baf966d107b0_3195x2400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Tdxs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F894a2c31-6f92-4091-a7f5-baf966d107b0_3195x2400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Tdxs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F894a2c31-6f92-4091-a7f5-baf966d107b0_3195x2400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Tdxs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F894a2c31-6f92-4091-a7f5-baf966d107b0_3195x2400.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Tdxs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F894a2c31-6f92-4091-a7f5-baf966d107b0_3195x2400.jpeg" width="568" height="426.7802197802198" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/894a2c31-6f92-4091-a7f5-baf966d107b0_3195x2400.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1094,&quot;width&quot;:1456,&quot;resizeWidth&quot;:568,&quot;bytes&quot;:300978,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://krupahebbar.substack.com/i/162512719?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F894a2c31-6f92-4091-a7f5-baf966d107b0_3195x2400.jpeg&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Tdxs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F894a2c31-6f92-4091-a7f5-baf966d107b0_3195x2400.jpeg 424w, https://substackcdn.com/image/fetch/$s_!Tdxs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F894a2c31-6f92-4091-a7f5-baf966d107b0_3195x2400.jpeg 848w, https://substackcdn.com/image/fetch/$s_!Tdxs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F894a2c31-6f92-4091-a7f5-baf966d107b0_3195x2400.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!Tdxs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F894a2c31-6f92-4091-a7f5-baf966d107b0_3195x2400.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">A stark before and after for my screen time (the challenges run Monday-Sunday so ignore the first spike!)</figcaption></figure></div><p>This was a tough challenge for me with many takeaways. There was definitely a big sense of disconnect &#8212; those long async WhatsApp conversations were my only way of connecting with friends with different schedules and different timezones, who I ended up speaking to far less during this week. My reduced Instagram usage also led to far fewer conversations with the friends I keep in touch with there.</p><p>On the flip side, I saw the results of one of my new years resolutions. Not wasting so many hours on Instagram gave me that many more hours to read, and I ended up reading 7 books (2.5K pages!) this week alone &#8212; my most productive reading week of the year so far! I also saw the &#8220;battery low&#8221; notification on my Kindle for the first time in many many months :)</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Buak!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c896420-2671-4d2c-bee1-5967652b67e9_1838x862.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Buak!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c896420-2671-4d2c-bee1-5967652b67e9_1838x862.png 424w, https://substackcdn.com/image/fetch/$s_!Buak!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c896420-2671-4d2c-bee1-5967652b67e9_1838x862.png 848w, https://substackcdn.com/image/fetch/$s_!Buak!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c896420-2671-4d2c-bee1-5967652b67e9_1838x862.png 1272w, https://substackcdn.com/image/fetch/$s_!Buak!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c896420-2671-4d2c-bee1-5967652b67e9_1838x862.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Buak!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c896420-2671-4d2c-bee1-5967652b67e9_1838x862.png" width="604" height="283.3324175824176" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c896420-2671-4d2c-bee1-5967652b67e9_1838x862.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:683,&quot;width&quot;:1456,&quot;resizeWidth&quot;:604,&quot;bytes&quot;:141598,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:&quot;&quot;,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://krupahebbar.substack.com/i/162512719?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c896420-2671-4d2c-bee1-5967652b67e9_1838x862.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Buak!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c896420-2671-4d2c-bee1-5967652b67e9_1838x862.png 424w, https://substackcdn.com/image/fetch/$s_!Buak!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c896420-2671-4d2c-bee1-5967652b67e9_1838x862.png 848w, https://substackcdn.com/image/fetch/$s_!Buak!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c896420-2671-4d2c-bee1-5967652b67e9_1838x862.png 1272w, https://substackcdn.com/image/fetch/$s_!Buak!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c896420-2671-4d2c-bee1-5967652b67e9_1838x862.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Practicing low screen time in April/May led to these being my most productive reading months for the year so far!</figcaption></figure></div><p>In the long term, &lt;90 minutes screen time may be a stretch, but 4 hours was definitely overkill. I&#8217;m hoping to find a happy middle where I can stay connected to all the things I <em>want</em> to be connected to, and still be able to mindfully disconnect the rest of the time. The long-term goal is to cut the doomscrolling and consume mindfully, and I finally proved to myself over this week that I could do it!</p><p>(Alas, this was the week my team slipped below the victory threshold, but it was a tough time for a few folks and so, <em>&#8220;Que ser&#225;, ser&#225;, whatever will be will be&#8221;</em> &#8212; the benefits are still free and I wasn&#8217;t planning to stop!)</p><h3>Week 4: &#128564; <strong>Snooze to Cruise</strong> </h3><p>At last the final week of the challenge &#8212; one where we had to literally sleep our way to the finish line. This did mean sleeping by 9:30pm every single day so that I could be up by 6am to make it to yoga class. This is close enough to my usual schedule that it was quite doable, I just made sure not to make any evening plans this week so as to not upset the routine!</p><p>I spent this week reflecting and trying to reach for sustainable versions of the previous 3 weeks&#8217; worth of challenges &#8212; meaning more water, less doomscrolling, more yoga, and self-care.</p><p>As I reflected on the previous 3 weeks of challenges, I saw how this simple points-based motivation was enough for me to make the changes I had been talking about making for months. I was able to keep up 5-6 days a week of activity every single week of the challenge. I successfully made it through all four bonus challenges, and I saw significant benefits from making the effort. Benefits that I had theoretically always known about (enough to make it to my vision board), but for the first time <em>felt</em> the practical effects of.</p><h3>Reflections</h3><p>The previously described indefatigable offsite committee (Shoutout to <a href="https://www.linkedin.com/in/meeha-tewari/">Meeha</a>!) also posted some incredibly wholesome bonus challenges through the weeks &#8212; going for a walk with a loved one, having a healthy snack, putting on a face mask, and just doing something that brings joy. All things that really brought into sharp focus the recipe for a happy, wholesome, healthy life. Meeha&#8217;s weekly highlights also helped me be inspired by my colleagues&#8217; grit and determination &#8212; through their personal bests, perseverance, and pushing of limits, I stayed motivated every week to keep at it. The energy of the committee, my team, and all the other teams was a positive spiral for the ages.</p><p>All in all, my first Fyle health challenge was a positively transformative experience, and my team may not have won but I feel like a winner nonetheless!</p>]]></content:encoded></item><item><title><![CDATA[Wearing Both Hats: My Journey from Customer Success to Partner Success and Everything In Between. ]]></title><description><![CDATA[Navigating the Shift, Building Bridges, and Redefining Success Along the Way.]]></description><link>https://stories.fylehq.com/p/wearing-both-hats-my-journey-from</link><guid isPermaLink="false">https://stories.fylehq.com/p/wearing-both-hats-my-journey-from</guid><dc:creator><![CDATA[Adreeja Chatterjee]]></dc:creator><pubDate>Fri, 16 May 2025 10:15:25 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!HE2y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5302497a-0db2-4313-8735-dcda5167f645_480x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When people ask me what I do, I pause. Not because I don&#8217;t know, but because there&#8217;s no simple way to explain this glorious chaos. Who am I, you might ask? So, before we dive into my experience handling both worlds as the title suggests, here&#8217;s a tiny trailer about me:</p><p>I&#8217;m <strong>Adreeja</strong>! I&#8217;ve been at <strong>Fyle</strong> for the last 2 years, and <em>oh my gosh,</em> what an incredible, wild, fulfilling ride it&#8217;s been. Major things you should know about me: I'm obsessed with Football, spend half my time in the gym, and convince myself that leg day is character-building. This sushi freak also swears by a solid plate of biriyani and spends half her money on plane tickets to travel to different places. So yes, I contain multitudes.</p><p>At Fyle, I&#8217;m a <strong>Customer Success Manager</strong> and a <strong>Partner Success Manager.</strong> I wear two hats, balancing both roles seamlessly while ensuring every interaction is delivered with clarity, confidence, and a smile.</p><blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!HE2y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5302497a-0db2-4313-8735-dcda5167f645_480x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!HE2y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5302497a-0db2-4313-8735-dcda5167f645_480x720.png 424w, https://substackcdn.com/image/fetch/$s_!HE2y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5302497a-0db2-4313-8735-dcda5167f645_480x720.png 848w, https://substackcdn.com/image/fetch/$s_!HE2y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5302497a-0db2-4313-8735-dcda5167f645_480x720.png 1272w, https://substackcdn.com/image/fetch/$s_!HE2y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5302497a-0db2-4313-8735-dcda5167f645_480x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!HE2y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5302497a-0db2-4313-8735-dcda5167f645_480x720.png" width="480" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5302497a-0db2-4313-8735-dcda5167f645_480x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!HE2y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5302497a-0db2-4313-8735-dcda5167f645_480x720.png 424w, https://substackcdn.com/image/fetch/$s_!HE2y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5302497a-0db2-4313-8735-dcda5167f645_480x720.png 848w, https://substackcdn.com/image/fetch/$s_!HE2y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5302497a-0db2-4313-8735-dcda5167f645_480x720.png 1272w, https://substackcdn.com/image/fetch/$s_!HE2y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5302497a-0db2-4313-8735-dcda5167f645_480x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></blockquote><h3><strong>The &#8220;Before&#8221; Era: Classic CSM Grind.</strong></h3><p>Let&#8217;s rewind a bit.</p><p>I was fully immersed in the Customer Success trenches. Honestly, that phase shaped everything I know about navigating people, problems, and priorities, and it continues to shape the way I envision building impactful, human-centered experiences for the future.</p><p>Customer Success taught me empathy. It taught me how to listen, even when answers weren&#8217;t obvious. It taught me to step up, take initiative, and be the face customers could rely on, the one they looked forward to seeing on a call. And for that, I&#8217;m genuinely glad I chose to become a Customer Success Manager.</p><blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!qoHM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca03389d-e619-4cf6-9a80-c8a0342773f5_720x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!qoHM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca03389d-e619-4cf6-9a80-c8a0342773f5_720x720.png 424w, https://substackcdn.com/image/fetch/$s_!qoHM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca03389d-e619-4cf6-9a80-c8a0342773f5_720x720.png 848w, https://substackcdn.com/image/fetch/$s_!qoHM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca03389d-e619-4cf6-9a80-c8a0342773f5_720x720.png 1272w, https://substackcdn.com/image/fetch/$s_!qoHM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca03389d-e619-4cf6-9a80-c8a0342773f5_720x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!qoHM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca03389d-e619-4cf6-9a80-c8a0342773f5_720x720.png" width="720" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ca03389d-e619-4cf6-9a80-c8a0342773f5_720x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:720,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!qoHM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca03389d-e619-4cf6-9a80-c8a0342773f5_720x720.png 424w, https://substackcdn.com/image/fetch/$s_!qoHM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca03389d-e619-4cf6-9a80-c8a0342773f5_720x720.png 848w, https://substackcdn.com/image/fetch/$s_!qoHM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca03389d-e619-4cf6-9a80-c8a0342773f5_720x720.png 1272w, https://substackcdn.com/image/fetch/$s_!qoHM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fca03389d-e619-4cf6-9a80-c8a0342773f5_720x720.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></blockquote><p>But being a Customer Success Manager also meant:</p><ul><li><p>Back-to-back calls where a &#8220;minor issue&#8221; somehow spiraled into three escalation threads.</p></li><li><p>Balancing multiple clients, internal syncs, churn risk alerts, sometimes all in the first half of the day. </p></li><li><p>Designing onboarding journeys smoother than &#8216;my go-to playlist&#8217; and the occasional check-ins to ensure the customers, we are in this together. </p></li><li><p>More so, staying composed even when a high-priority email popped in on a Friday night.</p></li></ul><p>But what I have learnt in all of this is that building genuine rapport with customers not only leads to stronger relationships, it often opens the door to organic upsell opportunities and glowing testimonials, both of which directly fuel revenue growth and amplify the brand trust.</p><blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TiDZ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88846671-999f-4d72-b3eb-32693405ff15_720x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TiDZ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88846671-999f-4d72-b3eb-32693405ff15_720x720.png 424w, https://substackcdn.com/image/fetch/$s_!TiDZ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88846671-999f-4d72-b3eb-32693405ff15_720x720.png 848w, https://substackcdn.com/image/fetch/$s_!TiDZ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88846671-999f-4d72-b3eb-32693405ff15_720x720.png 1272w, https://substackcdn.com/image/fetch/$s_!TiDZ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88846671-999f-4d72-b3eb-32693405ff15_720x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TiDZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88846671-999f-4d72-b3eb-32693405ff15_720x720.png" width="720" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/88846671-999f-4d72-b3eb-32693405ff15_720x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:720,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TiDZ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88846671-999f-4d72-b3eb-32693405ff15_720x720.png 424w, https://substackcdn.com/image/fetch/$s_!TiDZ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88846671-999f-4d72-b3eb-32693405ff15_720x720.png 848w, https://substackcdn.com/image/fetch/$s_!TiDZ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88846671-999f-4d72-b3eb-32693405ff15_720x720.png 1272w, https://substackcdn.com/image/fetch/$s_!TiDZ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F88846671-999f-4d72-b3eb-32693405ff15_720x720.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></blockquote><p>So it is a lot. It is intense. But it is also real, meaningful, and weirdly exhilarating if you ask me.</p><p>This chapter taught me how to stay calm under pressure, how to think fast, and how to truly be an advocate for the people I am accountable for. <br>And truthfully? I love every bit of it.</p><h3><strong>Enter: The Wonderful World of Partner Success</strong></h3><p>While I found my rhythm in the world of customer goals, renewal conversations, and the occasional guessing game of <em>&#8220;why haven&#8217;t they replied yet?&#8221;</em>, life at Fyle took an exciting turn when I was entrusted with the opportunity to step into the Partner Success space.</p><p>And let me tell you, it felt like unlocking a whole new level of growth. Suddenly, I wasn&#8217;t just focused on ensuring customer success; I was contributing in a new direction and managing different strategic conversations with partners who bring their network, expertise, and energy to the table.</p><p>The shift was meaningful.</p><p>Customers and partners are both crucial, yet play distinctly different roles. With customers, the focus is on guiding, supporting, and ensuring they succeed with your product. With partners, it's about collaboration, equipping them, aligning on shared goals, and building the kind of trust that turns them into powerful advocates shouting about your product in rooms you&#8217;re not even in.</p><p>It is always focusing on the combined goal of &#8220;How can we win this together?&#8221;</p><p>Being a Partner Success Manager has taught me how to think bigger, collaborate deeper, and appreciate the power of scale. Being a CSM taught me the foundational skills needed to navigate strategic conversations with clarity and purpose. And I&#8217;m deeply grateful for everything I&#8217;ve learned (and continue to learn) in this role. This journey into partnerships has added a new dimension to what success looks like for me.</p><h3><strong>Wrapping It Up: One Journey, Two Hats, Endless Growth</strong></h3><p>Looking back, I feel incredibly grateful to have experienced the best of both worlds: the heart and hustle of Customer Success, and the strategy and scale of Partner Success.</p><p>Wearing both hats hasn&#8217;t always been easy (my calendar can confirm), but it&#8217;s been incredibly rewarding. One role taught me empathy, ownership, and how to be the voice of the customer. The other taught me to think more strategically, build long-term ecosystems, and amplify impact through others.</p><p>Together, these roles have helped me grow not just as a professional, but as a person more thoughtful, more collaborative, and more resilient.</p><p>So whether I&#8217;m solving an issue or enabling a partner, I know I&#8217;m playing a part in something meaningful. And honestly? Some days, I&#8217;m knee-deep in customer journeys, ensuring they&#8217;re happy, heard, and on track. Other days, I&#8217;m in enablement mode, building relations, training partners, and helping them get onboarded swiftly. So here's to the juggling act, the learning curves, and the beautiful mess that is Customer and Partner Success. I wouldn't have it any other way. I love both.</p><p>Customer and Partner Success fuel my passion for creating value. Together, they empower me to make a meaningful impact.</p><h3><strong>What I&#8217;ve Learned: I never stopped being a CSM. I Just Multiplied.</strong></h3><p>You don&#8217;t need to choose between being customer-obsessed and partner-driven. You can &#8216;absolutely&#8217; be both. Success looks different depending on who&#8217;s across the (virtual) table, and it&#8217;s all about showing up, adding value, and building trust.</p><p>So if you&#8217;re ever in this in-between space, part-Customer Success, part-Partner Success, know that it&#8217;s not confusion. It&#8217;s <strong>growth</strong>. It&#8217;s you leveling up. If there&#8217;s one thing I&#8217;ve learned, it&#8217;s that growth doesn&#8217;t always come with a clear playbook. Sometimes, it looks like trying, stumbling, adapting, and still showing up with the same passion (and a slightly better version of yourself).</p><blockquote><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!22-0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd250d00b-2994-4961-bebb-c5d585dad736_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!22-0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd250d00b-2994-4961-bebb-c5d585dad736_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!22-0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd250d00b-2994-4961-bebb-c5d585dad736_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!22-0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd250d00b-2994-4961-bebb-c5d585dad736_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!22-0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd250d00b-2994-4961-bebb-c5d585dad736_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!22-0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd250d00b-2994-4961-bebb-c5d585dad736_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d250d00b-2994-4961-bebb-c5d585dad736_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!22-0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd250d00b-2994-4961-bebb-c5d585dad736_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!22-0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd250d00b-2994-4961-bebb-c5d585dad736_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!22-0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd250d00b-2994-4961-bebb-c5d585dad736_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!22-0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd250d00b-2994-4961-bebb-c5d585dad736_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div></blockquote><p>Because the truth is, whether I&#8217;m solving a problem or building a partnership, I&#8217;m doing what I love most: helping people succeed and having a little fun while I&#8217;m at it. So here&#8217;s to learning on the job, leading with heart.</p><p>Because at the end of the day, success isn&#8217;t just about outcomes. It&#8217;s about people, trust, and the journey in between.</p><p>And I&#8217;m just getting started.</p><p>Now, excuse me while I hop into my next call, not sure yet if it&#8217;s a partner or a customer, but I&#8217;ve got it all figured out, trust me! &#128539;</p>]]></content:encoded></item><item><title><![CDATA[A couple rules of engagements, I'ma guide you]]></title><description><![CDATA[The Unconventional Hours of a Fyle CSM: Where Nights are for Nurturing]]></description><link>https://stories.fylehq.com/p/a-couple-rules-of-engagements-ima</link><guid isPermaLink="false">https://stories.fylehq.com/p/a-couple-rules-of-engagements-ima</guid><dc:creator><![CDATA[Puru Kaushik]]></dc:creator><pubDate>Fri, 16 May 2025 08:56:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!8Su4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb709509-cb80-4078-88d4-9d5941a28d33_1376x768.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8Su4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb709509-cb80-4078-88d4-9d5941a28d33_1376x768.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8Su4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb709509-cb80-4078-88d4-9d5941a28d33_1376x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8Su4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb709509-cb80-4078-88d4-9d5941a28d33_1376x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8Su4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb709509-cb80-4078-88d4-9d5941a28d33_1376x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8Su4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb709509-cb80-4078-88d4-9d5941a28d33_1376x768.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8Su4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb709509-cb80-4078-88d4-9d5941a28d33_1376x768.jpeg" width="1376" height="768" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fb709509-cb80-4078-88d4-9d5941a28d33_1376x768.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:768,&quot;width&quot;:1376,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8Su4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb709509-cb80-4078-88d4-9d5941a28d33_1376x768.jpeg 424w, https://substackcdn.com/image/fetch/$s_!8Su4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb709509-cb80-4078-88d4-9d5941a28d33_1376x768.jpeg 848w, https://substackcdn.com/image/fetch/$s_!8Su4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb709509-cb80-4078-88d4-9d5941a28d33_1376x768.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!8Su4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffb709509-cb80-4078-88d4-9d5941a28d33_1376x768.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em><strong>Intro</strong></em></p><p>Hi, my name is Puru, and I'm a Customer Success Manager at Fyle. You might be wondering what exactly a customer success manager does. Essentially, I'm assigned to specific customers or accounts with the goal of ensuring they receive the maximum possible value from our product, ideally turning them into enthusiastic advocates. While not every customer will become a raving fan, the aim is always to demonstrate the product's worth. And when we do succeed in creating those passionate fans, that's where the real magic happens.</p><p>Alright, so I could kick this off with some super inspiring (or maybe a tad pretentious!) morning routine, but let's be real: I don't really have one! My day pretty much starts when most people's afternoons are winding down. I'll roll out of bed, grab something to eat, and maybe get in a light workout to wake myself up. Then, you'll usually find me casually scrolling through Slack or my emails. It's less about hardcore work at this point and more about catching up on things, or perhaps finishing off a task. Think of it as my 'pre-game show' for the night. I'm just gently getting a feel for what needs tackling first when I actually dive into work later, sort of lining up my ducks for the main event.</p><p>Later on, I'll gear up for another workout, and this is where I really go all in! It might sound a bit funny, but I honestly love that feeling of being completely wiped out afterwards &#8211; you know, when you feel like you&#8217;ve put every ounce of energy you have into it, body and soul. When you're catching your breath and your mind just goes quiet... yeah, that's my sweet spot! After that, I'm surprisingly recharged and totally ready to tackle the night.</p><p><em><strong>The Night</strong></em></p><p>The sun is about to light up some other part of the Earth, and I have logged in. Yes, first up: the emails! Now, this is the part where I slowly go through the emails, respond to some, and, on the other hand, note down others where I need to discuss a couple of things and get back, writing hold-up responses. This is partially where I learn how this day is going to pan out.</p><p>And you know how late-day emails can sometimes feel like they're designed to throw a comical wrench into your whole evening? It&#8217;s a classic reminder that 'certainty' is often just a fun suggestion, and honestly, that&#8217;s part of the daily adventure! It always makes me chuckle because, in a way, I totally get someone like Ethan Hunt. Now, don't worry, I'm not about to leap off any speeding trains or scale a mountain before my next coffee break! But you know how he meticulously plans out his missions, only for everything to hilariously go sideways, forcing him to improvise his way to success? That&#8217;s my workday in a nutshell sometimes: plan, watch the plan implode, and then figure it out on the fly to somehow still make it work!</p><p>There are times when you think you have an email conversation wrapped up, and all of a sudden, surprise, surprise&#8230; Yeah! Anyway, now back to the drawing board to get it under control.</p><p>Here's a key note for emails: write them diligently. Never take any email for granted. Even when you just need to say "OK" to a customer, go the extra mile &#8211; add some sauce, <em>you know what I mean?</em> Never, ever undercook your emails. Instead of just writing Ok write something like &#8220;Indeed, that is quite satisfactory. I find no reason to object and am content with the proposal/situation as it stands.&#8221;</p><p>So, a lot of talk about emails. Let's talk about the app I possibly use most after dating apps (just kidding; I am not on one): Slack!</p><p>Slack is where my fellow compatriots seek my assistance, suggestions, or contributions. This is where I ring the alarm bells when needed. Nah, I do not hesitate for a second to &#8220;light the beacons to call Rohan for help.&#8221;</p><p>Slack is also where I celebrate my victories (I win sometimes) and post the thing no CSM ever wants to post: The Churn!</p><p>(Churn is when a customer decides to part ways with us and requests to cancel their subscription.)</p><p>Oh boy, that word! I do not love upsells or cross-sells as much as I hate churn! It's just a bummer. The only feeling that comes close is seeing <em>Barca</em> lose. (Barcelona, Football Club Barcelona, the love of my life. Been a fan for 20 years.)</p><p>But you know, in these little and great defeats, you learn the most. Could you expect Jordan to win the 1989 playoff game in Cleveland without all the shots he missed and all the defeats he suffered? Do you remember that celebration, or have you ever seen it?</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D3fo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606f405d-c05a-429f-bf0c-31fc8b093015_480x368.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D3fo!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606f405d-c05a-429f-bf0c-31fc8b093015_480x368.gif 424w, https://substackcdn.com/image/fetch/$s_!D3fo!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606f405d-c05a-429f-bf0c-31fc8b093015_480x368.gif 848w, https://substackcdn.com/image/fetch/$s_!D3fo!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606f405d-c05a-429f-bf0c-31fc8b093015_480x368.gif 1272w, https://substackcdn.com/image/fetch/$s_!D3fo!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606f405d-c05a-429f-bf0c-31fc8b093015_480x368.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D3fo!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606f405d-c05a-429f-bf0c-31fc8b093015_480x368.gif" width="480" height="368" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/606f405d-c05a-429f-bf0c-31fc8b093015_480x368.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:368,&quot;width&quot;:480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!D3fo!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606f405d-c05a-429f-bf0c-31fc8b093015_480x368.gif 424w, https://substackcdn.com/image/fetch/$s_!D3fo!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606f405d-c05a-429f-bf0c-31fc8b093015_480x368.gif 848w, https://substackcdn.com/image/fetch/$s_!D3fo!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606f405d-c05a-429f-bf0c-31fc8b093015_480x368.gif 1272w, https://substackcdn.com/image/fetch/$s_!D3fo!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F606f405d-c05a-429f-bf0c-31fc8b093015_480x368.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Yeah! Churn is devastating, but when studied with diligence, it will lead to victories everywhere.</p><p>All right, we will talk about churn more later, probably XD. In a thesis, most likely.</p><p>Cause Churn is big, REALLY BIG!, there is just so much to it. It can&#8217;t be explained with mere lines or a couple of sentences. Wait! Did I just tease my next blog?</p><p><em><strong>Midnight</strong></em></p><p><em>&#8220;The night is darkest just before Dawn.&#8221;</em></p><p>Alright, now for the part that really keeps us on our toes: the actual customer calls! Before diving into any of them, I always make sure to go through my notes and all the information at hand &#8211; a little prep goes a long way, right? Because, let me tell you, this is where it can get really, really dark if things go sideways! So much hinges on how that conversation flows &#8211; how ready you felt, how you handled those unexpected curveballs, whether you managed to jot down all the crucial bits, and if you truly 'got' what they were saying.</p><p>You see, these interactions are a gold mine. If you just take care of these well enough, you will make the rest of your night and the upcoming ones that much easier.</p><p>Everything is important: the doubts in customers' voices, the joys, their expectations, and their disappointments. You need to account for everything here because what you bring back from this pit hole will shape your journey with the customer.</p><p>It comes with experience for sure. Sometimes the nerves get the better of you; you know the solution, but just couldn&#8217;t give the answer at the right time.</p><p>Now, I won&#8217;t say it&#8217;s all doom and gloom after a bad call, but these instruments, when used well at times, can stop or delay that upset customer from churning (this damn word).</p><p>Also, on these calls, you understand where the customer actually stands. How much do they know about the product? How well are they using it? What are their actual feelings?</p><p>I've observed customer usage patterns that are creating significant risks, essentially setting them up for major issues if unaddressed. This is a situation that requires immediate and proactive intervention on our part. So that the customer finds the desired value in the product. Do not make your boss say, <em>&#8220;Where were you, Ethan?&#8221;</em> Ethan acts then and there, makes it right, or at least tries to.</p><p>Question everything, be a good listener&#8212;yes, that is very important. But do not just listen to what the customer is saying and be like, &#8220;Ok, bye ~!&#8221; No, no, haha! This is where you can extract so much value by being a 5-year-old kid who questions everything. The worst calls are those where you listen like a sitting duck and go back to your team or engineering, or product without your proper diagnosis of your own, because you will end up just going back to the customer and asking more questions. Time wasted. <em>&#8220;We don&#8217;t have much time, Ethan!&#8221;</em></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NDki!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c90b18e-57f3-482c-9b05-35ec9e46416f_600x247.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NDki!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c90b18e-57f3-482c-9b05-35ec9e46416f_600x247.gif 424w, https://substackcdn.com/image/fetch/$s_!NDki!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c90b18e-57f3-482c-9b05-35ec9e46416f_600x247.gif 848w, https://substackcdn.com/image/fetch/$s_!NDki!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c90b18e-57f3-482c-9b05-35ec9e46416f_600x247.gif 1272w, https://substackcdn.com/image/fetch/$s_!NDki!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c90b18e-57f3-482c-9b05-35ec9e46416f_600x247.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NDki!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c90b18e-57f3-482c-9b05-35ec9e46416f_600x247.gif" width="600" height="247" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c90b18e-57f3-482c-9b05-35ec9e46416f_600x247.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:247,&quot;width&quot;:600,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NDki!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c90b18e-57f3-482c-9b05-35ec9e46416f_600x247.gif 424w, https://substackcdn.com/image/fetch/$s_!NDki!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c90b18e-57f3-482c-9b05-35ec9e46416f_600x247.gif 848w, https://substackcdn.com/image/fetch/$s_!NDki!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c90b18e-57f3-482c-9b05-35ec9e46416f_600x247.gif 1272w, https://substackcdn.com/image/fetch/$s_!NDki!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c90b18e-57f3-482c-9b05-35ec9e46416f_600x247.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Yes, one thing you will never have is Time. What, you think handling a portfolio of 180 accounts is a cakewalk? I am proud of it, and I know every minute spent on one customer is exactly the number of minutes not spent on 10 others. You see how big this domino is?</p><p>The last part of midnight is &#8220;ClickUp&#8221;, raised to unblock and understand customer scenarios. This goes back to the point of extracting as much information as you can so that you can provide it to the relevant teams earlier than required and get things resolved quickly.</p><p><em><strong>Dawn</strong></em></p><p><em>&#8220;The End of Ignorance, the Start of Understanding.&#8221;</em></p><p>This is not the part where you relax and sink into your chair. This is where you do the most important thing about being a CSM: You document! Document everything!</p><p>You see, this is something I learned the hard way. College spoiled me&#8212;no notes, someone else completes my projects, etc., etc. I had forgotten the art of documenting, and even in my prior experience, this was not required a lot.</p><p>But you've got to document the heck out of everything you did, starting with the call notes. Keep these boys meaty, as if you are Tolkien reincarnated and about to write a 126-page chapter on hobbits and their day-to-day errands.</p><p>This is no joke. You will have multiple conversations with the customer and will take many notes. You will detect catastrophes way before and help your teammates identify them. You will learn patterns and will be able to document new cases and handle them with ease when they show up again. And yes, when you are on leave and someone else needs to take care of your stuff, it will be as easy as sharing the link.</p><p>Also, make sure you add new tasks to that task list, yeah, there is a Task list. Make sure you handle it like your life depends on it. Go through it every day and update it every time. Did I mention I handle 180 accounts? Yeah, this is how to keep all of them under control and forget no case, no escalation.</p><p>Another part of <em>Dawn</em> is where you start your proactive behaviour: check the metrics and become that analytics guy. Sometimes disasters and upsells are brewing quietly. Open that CS Platform for the customer 360, and start looking at things, and voila!</p><p>Not gonna lie, I love this part of my job. This is the closest to feeling like Batman&#8212;just sitting, detecting, analysing, and anticipating the customer&#8217;s next move, acting on it before they reach out to me. This goes a long way; customers feel valued.</p><p>Even those overage charge emails will come back with nice responses: &#8220;Thanks for highlighting this to us.&#8221; And where the usage is low, you will learn many things, for eg: &#8220;There is a new POC; the old one left.&#8221; See? Now you can act on it before the new POC goes through Fyle on a hectic day, dislikes a few things about it, and pulls the trigger.</p><p><em><strong>Final Act<br><br></strong></em>After all the hustling, it's a sensational feeling when you take a moment to reflect. I've been at this for three straight years, and I've changed my methods, tricks, and how I approach things along the way. There's such a sweet joy in those upsells and the testimonials you get. And it's an even bigger celebration when you manage to bring an account back from the brink of churning!</p><p>I really appreciate those lovely conversations with customers when they tell you how much they've enjoyed working with you, and how much they love the product and your services. Sometimes, you can even drop the wall between you and the customer and chat about cultures, cities, basketball, or films. On those good days, you log off after putting in the effort and just groove to your favourite music, feeling satisfied and ready to do it all again tomorrow.</p><p><em>&#8220;A feeling of perfect peace, of utter contentment. It's a silent ecstasy, a knowing that everything, in that moment, is exactly as it should be.&#8221;</em></p><p>So yeah, that is pretty much it. I still feel I can write a lot more, but perhaps that&#8217;s for some other time, some other blog. See, do not try to find chronological storytelling with me; that will be an insult to my cinematic sensibilities. Look at these three as three chapters that overlap and underlap each other every moment that passes by. I have segregated them on the basis of some symbolism I found in them.</p><p>I also wanna thank my very dear NA-CS team who have helped every time and have been instrumental in me getting better at my Job year after year, month after month! Thank you, folks! Really! Appreciate it! :)</p><p><em>So, until next time! Ciao!</em></p>]]></content:encoded></item><item><title><![CDATA[Golden Rules of Engagement — Wearing the Customer Success Hat Across the Org]]></title><description><![CDATA[Bridging teams with empathy, clarity, and a customer-first mindset.]]></description><link>https://stories.fylehq.com/p/golden-rules-of-engagement-wearing</link><guid isPermaLink="false">https://stories.fylehq.com/p/golden-rules-of-engagement-wearing</guid><dc:creator><![CDATA[Shreyosi Banerjee]]></dc:creator><pubDate>Thu, 15 May 2025 14:17:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!9Aak!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1933716a-0a6a-4bb8-b16f-9d99c722844e_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Today, I found myself reflecting on a simple yet important question: What does a Customer Success Manager really do? Beyond guiding customers towards their goals, making them feel heard, and turning their problems into achievable solutions, what more is there to it?</p><p>As I pondered and uncovered the intricacies of a CSM&#8217;s wide area of influence, I thought this could be something professionals stepping into this role can immensely benefit from.<br><br>Hi, I&#8217;m Shreyosi, and I&#8217;ve been a Customer Success Manager at Fyle. As a CSM, I enjoy driving successful outcomes for my portfolio, and my work across the organization leads me to complex and rewarding conversations with multiple teams. What truly drives impact is approaching both the customer and internal teams&#8217; needs with empathy, strategic thinking, and clear intent.<br><br>Over time, I&#8217;ve learned how valuable it is to collaborate effectively with teams like Product Management, Engineering/Development, Customer Marketing, Operations, Support, and Billing. Whether it is advocating for roadmap visibility or pushing for urgent fixes, CSMs often walk a fine line: timing conversations thoughtfully, balancing persistence with kindness, and always keeping the customer&#8217;s voice at the center of every decision. <br><br>So in this blog, I&#8217;m excited to share what I call the Golden Rules of Engagement and what it truly feels like to wear the Customer Success hat across teams.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!9Aak!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1933716a-0a6a-4bb8-b16f-9d99c722844e_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!9Aak!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1933716a-0a6a-4bb8-b16f-9d99c722844e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!9Aak!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1933716a-0a6a-4bb8-b16f-9d99c722844e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!9Aak!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1933716a-0a6a-4bb8-b16f-9d99c722844e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!9Aak!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1933716a-0a6a-4bb8-b16f-9d99c722844e_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!9Aak!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1933716a-0a6a-4bb8-b16f-9d99c722844e_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1933716a-0a6a-4bb8-b16f-9d99c722844e_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!9Aak!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1933716a-0a6a-4bb8-b16f-9d99c722844e_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!9Aak!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1933716a-0a6a-4bb8-b16f-9d99c722844e_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!9Aak!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1933716a-0a6a-4bb8-b16f-9d99c722844e_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!9Aak!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1933716a-0a6a-4bb8-b16f-9d99c722844e_1536x1024.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>With that context in mind, let&#8217;s break down the key areas we&#8217;ll explore:</p><h3><strong>Navigating Invisible Complexity Across Teams</strong></h3><p>We hold an invisible complexity in being a Customer Success Manager (CSM) while working with different departments. Often, the challenge lies in balancing alignment, advocacy, and execution, all without having direct control. We become the voice of the customer, and it requires influencing different departments, which means mastering the art of persuasion and effective data-backed storytelling, as each department has its own processes and priorities.</p><p>It&#8217;s important for us to understand how to align with them and make it onto their priority list. We need to excel at ensuring that the customer&#8217;s voice is clearly heard and effectively represented. Often, this means translating feedback into structured, actionable insights that resonate with different teams, each with their own goals, language, and priorities. Since customer success is inherently cross-functional, driving impact requires strong storytelling and seamless coordination across departments. It&#8217;s essential that we work in a collaborative environment where we support one another and align on shared goals, ensuring both customer and internal success.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pJYM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b67ed6-5c2e-4ea3-b9e1-7c1097305013_1320x1316.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pJYM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b67ed6-5c2e-4ea3-b9e1-7c1097305013_1320x1316.png 424w, https://substackcdn.com/image/fetch/$s_!pJYM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b67ed6-5c2e-4ea3-b9e1-7c1097305013_1320x1316.png 848w, https://substackcdn.com/image/fetch/$s_!pJYM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b67ed6-5c2e-4ea3-b9e1-7c1097305013_1320x1316.png 1272w, https://substackcdn.com/image/fetch/$s_!pJYM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b67ed6-5c2e-4ea3-b9e1-7c1097305013_1320x1316.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pJYM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b67ed6-5c2e-4ea3-b9e1-7c1097305013_1320x1316.png" width="1320" height="1316" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b1b67ed6-5c2e-4ea3-b9e1-7c1097305013_1320x1316.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1316,&quot;width&quot;:1320,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!pJYM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b67ed6-5c2e-4ea3-b9e1-7c1097305013_1320x1316.png 424w, https://substackcdn.com/image/fetch/$s_!pJYM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b67ed6-5c2e-4ea3-b9e1-7c1097305013_1320x1316.png 848w, https://substackcdn.com/image/fetch/$s_!pJYM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b67ed6-5c2e-4ea3-b9e1-7c1097305013_1320x1316.png 1272w, https://substackcdn.com/image/fetch/$s_!pJYM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1b67ed6-5c2e-4ea3-b9e1-7c1097305013_1320x1316.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3><strong>Behind the Curtain: CSMs at the Core of Cross-Team Alignment</strong></h3><p>Being a Customer Success Manager often feels like guiding air traffic from a quiet control tower&#8212;essential, but often unseen. We&#8217;re the steady bridge connecting customers with internal teams, often navigating without a detailed map, but still, it is required that we chart the course. While every department runs its important race, we&#8217;re the ones weaving between customers and internal teams, sometimes at a sprint to keep everything moving smoothly and everyone aligned.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!PzNe!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff960a020-90d6-4a91-a192-195d3a03af62_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!PzNe!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff960a020-90d6-4a91-a192-195d3a03af62_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!PzNe!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff960a020-90d6-4a91-a192-195d3a03af62_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!PzNe!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff960a020-90d6-4a91-a192-195d3a03af62_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!PzNe!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff960a020-90d6-4a91-a192-195d3a03af62_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!PzNe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff960a020-90d6-4a91-a192-195d3a03af62_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f960a020-90d6-4a91-a192-195d3a03af62_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!PzNe!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff960a020-90d6-4a91-a192-195d3a03af62_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!PzNe!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff960a020-90d6-4a91-a192-195d3a03af62_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!PzNe!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff960a020-90d6-4a91-a192-195d3a03af62_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!PzNe!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff960a020-90d6-4a91-a192-195d3a03af62_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3><strong>Staying in Sync: The Power of Being Up to Date</strong></h3><p>One of the most important parts of being a CSM is knowing what&#8217;s happening, both with our customers and within our product. We&#8217;re the bridge between the two, and to build that bridge in the right place, we need to be armed with the most accurate and up-to-date information. Customers&#8217; needs evolve quickly. Their goals and challenges shift often, and our product is constantly developing to keep up with those changes. At the same time, different CSMs manage different accounts, and each customer may have unique requirements. So, it becomes essential for us to stay in the loop about new feature releases and enhancements. Sometimes, those new features don&#8217;t perfectly match a customer&#8217;s needs, and that&#8217;s where our creativity kicks in. We often come up with thoughtful workarounds or best-fit solutions to keep things moving forward. But it doesn&#8217;t stop there. Part of our job is to bubble up these insights to the product team, helping them see what&#8217;s coming up repeatedly. That feedback can spark product improvements that benefit not just one customer, but many. In short, being up to date isn&#8217;t just about knowing what&#8217;s new&#8212;it&#8217;s about turning that knowledge into meaningful action for our customers and our company.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_e_u!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dc05725-2e38-4903-85b4-5c63e870b14e_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_e_u!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dc05725-2e38-4903-85b4-5c63e870b14e_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!_e_u!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dc05725-2e38-4903-85b4-5c63e870b14e_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!_e_u!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dc05725-2e38-4903-85b4-5c63e870b14e_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!_e_u!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dc05725-2e38-4903-85b4-5c63e870b14e_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_e_u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dc05725-2e38-4903-85b4-5c63e870b14e_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4dc05725-2e38-4903-85b4-5c63e870b14e_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!_e_u!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dc05725-2e38-4903-85b4-5c63e870b14e_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!_e_u!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dc05725-2e38-4903-85b4-5c63e870b14e_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!_e_u!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dc05725-2e38-4903-85b4-5c63e870b14e_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!_e_u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4dc05725-2e38-4903-85b4-5c63e870b14e_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3><strong>Collaborating with Stakeholders Effectively</strong></h3><p>While many teams in the organization operate on well-defined calendars and predictable workflows, the nature of a Customer Success Manager&#8217;s role often brings unexpected shifts. Flexibility becomes part of the rhythm, and we learn to navigate changing priorities with resilience and care. We&#8217;re working with customers to ensure they get value consistently, even when a glitch or a bug has thrown the plans off course. That&#8217;s why empathy is so important at all times and in every interaction.</p><p>Usually, product and engineering teams are working on long-term goals, building features and fixes that take time and planning. As CSMs, it&#8217;s our job to represent the customer voice, but in a way that&#8217;s thoughtful and constructive. When we bring up a bug, service request, or feature idea, it helps to frame it with context: What&#8217;s the impact? How many customers are affected? What&#8217;s the urgency?</p><p>Not everything can or should be treated like a crisis, and that&#8217;s okay. Keeping our tone collaborative and our messaging clear goes a long way. It builds trust when customers know their requests are prioritized effectively and internal teams are aware that requests are carefully analyzed to accord the right priority.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UoSk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c8fdde-e3f3-451f-80bf-f9be52258a80_1600x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UoSk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c8fdde-e3f3-451f-80bf-f9be52258a80_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!UoSk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c8fdde-e3f3-451f-80bf-f9be52258a80_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!UoSk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c8fdde-e3f3-451f-80bf-f9be52258a80_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!UoSk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c8fdde-e3f3-451f-80bf-f9be52258a80_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UoSk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c8fdde-e3f3-451f-80bf-f9be52258a80_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a6c8fdde-e3f3-451f-80bf-f9be52258a80_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!UoSk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c8fdde-e3f3-451f-80bf-f9be52258a80_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!UoSk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c8fdde-e3f3-451f-80bf-f9be52258a80_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!UoSk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c8fdde-e3f3-451f-80bf-f9be52258a80_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!UoSk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa6c8fdde-e3f3-451f-80bf-f9be52258a80_1600x900.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3><strong>From Glitches to Game Plans</strong></h3><p>When something goes wrong, our role isn&#8217;t only to sound the alarm&#8212;it&#8217;s to shine a light on what&#8217;s happening and help guide everyone towards a solution. As CSMs, we&#8217;re often the first to hear about issues from customers, whether on a call or in an email. In those moments, it&#8217;s important to stay calm, focused, and constructive. Rather than reacting emotionally, we gather and share the right details to help the relevant teams downstream.</p><p>Customers may express frustration strongly, and understandably so. Our job is to listen beyond the emotion and extract the true need. That way, we can communicate urgency and context to internal teams with clarity and accuracy, ensuring the issue gets the right attention and the customers continue to use the product without fluctuations.</p><div><hr></div><h3><strong>Be the Adapter: Translating Needs into Action</strong></h3><p>When it comes to integrations, CSMs often wear the hat of a translator. Since most SaaS products support a variety of integrations, we&#8217;re the bridge between what the customer needs and what&#8217;s technically possible. To do this effectively, we need a strong technical understanding of the systems so we can determine how the integration should work and anticipate any potential challenges. That knowledge helps us ask the right questions internally, share clear information externally, and bring in the right people when needed. It&#8217;s also our job to set expectations early, especially when integrations involve multiple steps or longer timelines. Communicating those complexities with empathy helps prevent surprises later. And when something needs a deeper dive or a faster resolution, knowing who to loop in&#8212;and when&#8212;can make a lot of difference.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!WPS5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c037ad-357e-4a58-8904-2df48655df49_1400x736.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!WPS5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c037ad-357e-4a58-8904-2df48655df49_1400x736.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WPS5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c037ad-357e-4a58-8904-2df48655df49_1400x736.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WPS5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c037ad-357e-4a58-8904-2df48655df49_1400x736.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WPS5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c037ad-357e-4a58-8904-2df48655df49_1400x736.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!WPS5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c037ad-357e-4a58-8904-2df48655df49_1400x736.jpeg" width="1400" height="736" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/25c037ad-357e-4a58-8904-2df48655df49_1400x736.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:736,&quot;width&quot;:1400,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!WPS5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c037ad-357e-4a58-8904-2df48655df49_1400x736.jpeg 424w, https://substackcdn.com/image/fetch/$s_!WPS5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c037ad-357e-4a58-8904-2df48655df49_1400x736.jpeg 848w, https://substackcdn.com/image/fetch/$s_!WPS5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c037ad-357e-4a58-8904-2df48655df49_1400x736.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!WPS5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F25c037ad-357e-4a58-8904-2df48655df49_1400x736.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3><strong>Know the Dollars Before You Talk Value</strong></h3><p>A customer&#8217;s experience with billing isn&#8217;t just transactional&#8212;it&#8217;s part of their ongoing journey with us. Whether they&#8217;re on a monthly or annual plan, they deserve a smooth, transparent experience. As customer success managers, we stay informed not to intrude but to be helpful. Understanding a customer&#8217;s billing history, subscription preferences, and any unique terms ensures we&#8217;re prepared to assist thoughtfully and accurately when questions arise.</p><p>This level of support is made possible through close collaboration with our billing and finance teams. Staying in sync on billing status, subscription structures, and plan details allows us to guide customers confidently and efficiently when they need clarity or direction.</p><p>We also keep an eye on product usage&#8212;not to micromanage, but to proactively add value. If we notice trends like unused seats or potential overages, we reach out with recommendations that help customers get the most from their plan. These conversations, when handled with care and backed by internal alignment, build trust and reinforce that we&#8217;re invested in their success and not just the sale.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!mm_i!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4a27153-f0b8-4e9f-b75b-515d274cca7d_730x411.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!mm_i!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4a27153-f0b8-4e9f-b75b-515d274cca7d_730x411.gif 424w, https://substackcdn.com/image/fetch/$s_!mm_i!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4a27153-f0b8-4e9f-b75b-515d274cca7d_730x411.gif 848w, https://substackcdn.com/image/fetch/$s_!mm_i!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4a27153-f0b8-4e9f-b75b-515d274cca7d_730x411.gif 1272w, https://substackcdn.com/image/fetch/$s_!mm_i!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4a27153-f0b8-4e9f-b75b-515d274cca7d_730x411.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!mm_i!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4a27153-f0b8-4e9f-b75b-515d274cca7d_730x411.gif" width="730" height="411" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b4a27153-f0b8-4e9f-b75b-515d274cca7d_730x411.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:411,&quot;width&quot;:730,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!mm_i!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4a27153-f0b8-4e9f-b75b-515d274cca7d_730x411.gif 424w, https://substackcdn.com/image/fetch/$s_!mm_i!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4a27153-f0b8-4e9f-b75b-515d274cca7d_730x411.gif 848w, https://substackcdn.com/image/fetch/$s_!mm_i!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4a27153-f0b8-4e9f-b75b-515d274cca7d_730x411.gif 1272w, https://substackcdn.com/image/fetch/$s_!mm_i!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb4a27153-f0b8-4e9f-b75b-515d274cca7d_730x411.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><div><hr></div><h3><strong>Wrapping It Up: No Map, Just Mission</strong></h3><p>Most people don&#8217;t realize how many hats a Customer Success Manager wears&#8212;until things get real. We&#8217;re the ones navigating customer expectations, urgency, and emotion, often without a warning. When we appear suddenly in a thread or a meeting, it&#8217;s not chaos; it&#8217;s because something critical is on the line, and trust is being built (or rebuilt) in that moment. <br><br>Our priorities shift dynamically, but we&#8217;re still expected to get everyone to the destination on time and in one piece. We are the voice of the customer and the ear of the company: translating needs, managing expectations, and making sure the right message reaches the right team at the right time. Because at the end of the day, internal alignment isn&#8217;t just nice-to-have; it is a must-have.</p><p><em><strong>Stakeholder success = Customer success</strong></em>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TfWq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad230d-6bf0-4f45-9faf-bac1e58bc2a1_800x600.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TfWq!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad230d-6bf0-4f45-9faf-bac1e58bc2a1_800x600.gif 424w, https://substackcdn.com/image/fetch/$s_!TfWq!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad230d-6bf0-4f45-9faf-bac1e58bc2a1_800x600.gif 848w, https://substackcdn.com/image/fetch/$s_!TfWq!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad230d-6bf0-4f45-9faf-bac1e58bc2a1_800x600.gif 1272w, https://substackcdn.com/image/fetch/$s_!TfWq!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad230d-6bf0-4f45-9faf-bac1e58bc2a1_800x600.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TfWq!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad230d-6bf0-4f45-9faf-bac1e58bc2a1_800x600.gif" width="800" height="600" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5fad230d-6bf0-4f45-9faf-bac1e58bc2a1_800x600.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:600,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!TfWq!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad230d-6bf0-4f45-9faf-bac1e58bc2a1_800x600.gif 424w, https://substackcdn.com/image/fetch/$s_!TfWq!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad230d-6bf0-4f45-9faf-bac1e58bc2a1_800x600.gif 848w, https://substackcdn.com/image/fetch/$s_!TfWq!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad230d-6bf0-4f45-9faf-bac1e58bc2a1_800x600.gif 1272w, https://substackcdn.com/image/fetch/$s_!TfWq!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fad230d-6bf0-4f45-9faf-bac1e58bc2a1_800x600.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Thank you so much for taking the time to read my blog!</p><p>&#8212;<strong>THE END&#8212;</strong></p>]]></content:encoded></item><item><title><![CDATA[How We Replaced Vue 2 with Alpine.js to Simplify Our Website and Boost Performance]]></title><description><![CDATA[A real-world case study of migrating from Vue 2 to Alpine.js to cut bundle size, improve performance, and streamline frontend development.]]></description><link>https://stories.fylehq.com/p/how-we-replaced-vue-2-with-alpinejs</link><guid isPermaLink="false">https://stories.fylehq.com/p/how-we-replaced-vue-2-with-alpinejs</guid><dc:creator><![CDATA[Shreyash Mogaveera]]></dc:creator><pubDate>Thu, 15 May 2025 06:46:58 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/cc374c24-98eb-4f61-bb72-558dbf7f88a1_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2>About me and Why We Did It?</h2><p>Have you ever hesitated to update your website&#8217;s core technology, perhaps anxious about unexpected bugs, downtime, or the daunting task of retraining your team on new tools? Worried that one wrong step could stop leads from flowing and negatively impact your business? We felt exactly the same before transitioning our large, static <a href="https://jekyllrb.com/">Jekyll</a> site (a static site generator that builds websites from plain text and templates) from <a href="https://v2.vuejs.org/">Vue 2</a> to <a href="https://alpinejs.dev/">Alpine.js</a>. This blog shares our journey, challenges, solutions, and why this move turned out to be one of our best decisions yet.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!JmdT!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ace47-1a22-4bdd-869e-2e833f35df3a_480x270.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!JmdT!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ace47-1a22-4bdd-869e-2e833f35df3a_480x270.gif 424w, https://substackcdn.com/image/fetch/$s_!JmdT!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ace47-1a22-4bdd-869e-2e833f35df3a_480x270.gif 848w, https://substackcdn.com/image/fetch/$s_!JmdT!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ace47-1a22-4bdd-869e-2e833f35df3a_480x270.gif 1272w, https://substackcdn.com/image/fetch/$s_!JmdT!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ace47-1a22-4bdd-869e-2e833f35df3a_480x270.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!JmdT!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ace47-1a22-4bdd-869e-2e833f35df3a_480x270.gif" width="480" height="270" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c3ace47-1a22-4bdd-869e-2e833f35df3a_480x270.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:270,&quot;width&quot;:480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!JmdT!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ace47-1a22-4bdd-869e-2e833f35df3a_480x270.gif 424w, https://substackcdn.com/image/fetch/$s_!JmdT!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ace47-1a22-4bdd-869e-2e833f35df3a_480x270.gif 848w, https://substackcdn.com/image/fetch/$s_!JmdT!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ace47-1a22-4bdd-869e-2e833f35df3a_480x270.gif 1272w, https://substackcdn.com/image/fetch/$s_!JmdT!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c3ace47-1a22-4bdd-869e-2e833f35df3a_480x270.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Hi, I'm <a href="https://www.linkedin.com/in/shreyash-mogaveera">Shreyash Mogaveera</a>, a Web Developer 1 at Fyle. Our website is a large static <a href="https://jekyllrb.com/">Jekyll</a> project with multiple resource pages, pricing pages, and 7&#8211;8 different lead generation forms, each with distinct purposes. Over time, our Vue 2 setup became an outdated and heavy overkill for these straightforward functionalities. Our team decided it was time for a change to improve performance and maintainability. This successful migration was a team effort. <a href="https://www.linkedin.com/in/garvit-singhal/">Garvit Singhal</a> significantly contributed by writing validators and preparing extensive end-to-end tests to ensure our forms worked perfectly. My manager, <a href="https://www.linkedin.com/in/abhishek1234321/">Abhishek Jain</a>, supported and trusted our initiative, guiding us through this transition. Shubham Bhansal was invaluable in thoroughly testing and identifying any potential breaking changes alongside our manager.</p><h2>Why We Chose Alpine.js</h2><p>Before settling on <a href="https://alpinejs.dev/">Alpine.js</a>, we explored other options, including continuing with <a href="https://v2.vuejs.org/">Vue 2</a> or upgrading to <a href="https://vuejs.org/guide/introduction.html">Vue 3</a>, using <a href="https://stimulus.hotwired.dev/">Stimulus.js</a>, or even adopting plain vanilla JavaScript.</p><ul><li><p><strong>Vue 3:</strong> We considered upgrading from Vue 2 to Vue 3 for better performance and long-term support. However, the migration was non-trivial and would require a large refactor across the site with minimal real benefit for our use case.</p></li><li><p><strong>Stimulus.js:</strong> Stimulus offered a lightweight and modern approach, but its syntax felt too abstract for our team, and it lacked the reactive simplicity we liked about Vue.</p></li><li><p><strong>Vanilla JavaScript:</strong> We briefly considered refactoring everything into plain JavaScript. However, that would have meant writing and maintaining a lot of boilerplate code, which would defeat our goal of simplifying the site.</p></li></ul><p>In contrast, <strong>Alpine.js</strong> provided exactly what we needed:</p><ul><li><p>Lightweight (~10KB)</p></li><li><p>Reactive and declarative like Vue: Alpine allows you to bind data to the DOM and automatically update the view when data changes, using intuitive syntax similar to Vue&#8217;s directives (e.g., <code>x-data</code>, <code>x-model</code>, <code>x-show</code>). This makes it easy to build dynamic UI interactions without the complexity of a full framework.</p></li><li><p>Easy to integrate with our existing <a href="https://jekyllrb.com/">Jekyll</a> + <a href="https://getbootstrap.com/docs/5.3/getting-started/introduction/">Bootstrap</a> setup</p></li><li><p>No build step required</p></li></ul><p>Alpine allowed us to enhance interactivity directly within our HTML without the need for complex frameworks or heavy tooling. It was the perfect balance of simplicity and power for our static site.</p><p>Our website initially used Vue 2 extensively, coupled with plugins like <a href="https://github.com/kazupon/vue-validator">vue-validator</a>. Although powerful, Vue 2 brought heavy JS bundles, complicated dependencies, and maintenance challenges. Alpine.js emerged as the ideal solution: lightweight, easy to learn, and perfect for enhancing our static site&#8217;s interactivity.</p><h2>Preparing for Change</h2><p>Before diving into the migration, I spent around a week researching various alternatives to replace Vue 2, finally deciding on Alpine.js. We performed a thorough audit of our site to map out which components were using Vue and what our priorities should be:</p><ul><li><p><strong>Resource pages:</strong> Targeted first, we replaced Vue-based components and toggle buttons in the pricing page and resource pages within 2&#8211;3 days.</p></li><li><p><strong>Forms:</strong> Around 7&#8211;8 forms were interconnected and bundled into a single large JS file. We realized forms had to be migrated together.</p></li></ul><p>We decided to proceed carefully, starting with simpler elements to build confidence.</p><h2>Step-by-Step Migration</h2><p>The entire migration project was broken down into careful, manageable stages over the span of approximately three weeks. We intentionally started with non-critical components to test our Alpine.js implementation and to minimize risk. After the success of the first stage, we tackled the more complex and business-critical elements.</p><p>Our initial targets were the resource page components and toggle buttons on the pricing page. This stage only took 2&#8211;3 days to complete. However, the form migration, which affected 7&#8211;8 highly interconnected forms across our website, took approximately 1.5 weeks. We spent extensive time on staging with thorough manual and automated testing before pushing to production.</p><p>All along, we maintained detailed documentation of our progress and collaborated closely using our internal team tools to ensure smooth communication and transparency. In hindsight, this phased and well-documented approach was one of the key reasons why our migration went smoothly.</p><h3>Step 1: Easy Win with Sliders</h3><p>Our slider component was the simplest, isolated, and safest starting point. We converted this component smoothly using Alpine.</p><h3>Step 2: Forms - The Critical Challenge</h3><p>Forms were our biggest concern. They generated leads essential to our business. We couldn't afford mistakes, so thorough testing and fallback mechanisms were mandatory.</p><h3>Step 3: Simplifying Navbar</h3><p>Previously, our navbar was overly complex, mixing vanilla JavaScript, jQuery, and Vue 2. We entirely rebuilt it using Alpine, drastically reducing complexity.</p><h2>Results and Improvements</h2><p>The results after switching to Alpine.js were immediate and impressive. Not only did we successfully modernize our front-end architecture, but we also achieved measurable technical and business outcomes:</p><ul><li><p><strong>JavaScript bundle size:</strong> Reduced by more than 50KB, resulting in faster load times.</p></li><li><p><strong>Performance improvements:</strong> <a href="https://pagespeed.web.dev/">Lighthouse</a> scores improved dramatically, jumping from 75 to 97.</p></li><li><p><strong>Developer experience:</strong> We reorganized our large monolithic JavaScript file for forms into three distinct files: constants, reusable functions, and form logic. This made the codebase more modular, readable, and maintainable.</p></li><li><p><strong>Selective JS loading:</strong> By embedding Alpine logic directly into the page HTML, we were able to ensure that JavaScript only loaded on pages where it was required. This drastically reduced unnecessary script loading and improved the experience for users on pages without interactive forms.</p></li><li><p><strong>Improved team collaboration:</strong> This migration also encouraged stronger communication and documentation practices within our team, which will benefit us in future projects.</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!2Fv6!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b872cdb-e2b4-4ac9-b015-91614bde3b23_1900x972.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!2Fv6!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b872cdb-e2b4-4ac9-b015-91614bde3b23_1900x972.png 424w, https://substackcdn.com/image/fetch/$s_!2Fv6!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b872cdb-e2b4-4ac9-b015-91614bde3b23_1900x972.png 848w, https://substackcdn.com/image/fetch/$s_!2Fv6!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b872cdb-e2b4-4ac9-b015-91614bde3b23_1900x972.png 1272w, https://substackcdn.com/image/fetch/$s_!2Fv6!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b872cdb-e2b4-4ac9-b015-91614bde3b23_1900x972.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!2Fv6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b872cdb-e2b4-4ac9-b015-91614bde3b23_1900x972.png" width="696" height="356.1263736263736" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1b872cdb-e2b4-4ac9-b015-91614bde3b23_1900x972.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:745,&quot;width&quot;:1456,&quot;resizeWidth&quot;:696,&quot;bytes&quot;:445902,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/163612093?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b872cdb-e2b4-4ac9-b015-91614bde3b23_1900x972.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!2Fv6!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b872cdb-e2b4-4ac9-b015-91614bde3b23_1900x972.png 424w, https://substackcdn.com/image/fetch/$s_!2Fv6!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b872cdb-e2b4-4ac9-b015-91614bde3b23_1900x972.png 848w, https://substackcdn.com/image/fetch/$s_!2Fv6!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b872cdb-e2b4-4ac9-b015-91614bde3b23_1900x972.png 1272w, https://substackcdn.com/image/fetch/$s_!2Fv6!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b872cdb-e2b4-4ac9-b015-91614bde3b23_1900x972.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>ref:- <a href="https://pagespeed.web.dev/analysis/https-www-fylehq-com-pricing/1wfb042zjn?form_factor=desktop">https://pagespeed.web.dev/analysis/https-www-fylehq-com-pricing/1wfb042zjn?form_factor=desktop</a></p><h2>Challenges and Lessons Learned</h2><ul><li><p>One of the biggest differences we noticed between Vue and Alpine was around deep reactivity. In Vue 2, when data inside nested objects changes (for example, <code>user.profile.name</code>), Vue automatically updates the DOM. Alpine, on the other hand, only tracks changes at the top level of <code>x-data</code> objects. It does not automatically watch nested objects for changes. This limitation made complex form state tracking more challenging in Alpine and required us to structure our data and validation logic more carefully. While Alpine&#8217;s shallow reactivity helps keep it lightweight and fast, it does demand a different approach when working with deeply structured data.</p></li><li><p>Our initial plan to migrate forms one by one had to be abandoned. A deeper analysis of the codebase revealed that all form logic was tightly centralized in a single file, forcing us to migrate every form at once.</p></li><li><p>Forms needed extensive testing to avoid business disruptions.</p></li><li><p>Navbar's transition required thoughtful planning and refactoring.</p></li></ul><h2>Tips for Your Alpine.js Migration</h2><p>Here's a quick checklist to ensure a smooth migration:</p><ul><li><p>&#9989; <strong>Audit thoroughly</strong>: Identify all Vue-dependent components clearly.</p></li><li><p>&#9989; <strong>Start small</strong>: Migrate simple, isolated components first to gain confidence.</p></li><li><p>&#9989; <strong>Prepare validators</strong>: Create or identify reusable custom validation methods.</p></li><li><p>&#9989; <strong>Extensive testing</strong>: Set up end-to-end tests for critical elements like forms to avoid disruptions.</p></li><li><p>&#9989; <strong>Fallback strategy</strong>: Always have rollback plans ready for high-impact migrations.</p></li><li><p>&#9989; <strong>Train your team</strong>: Ensure your development team is comfortable with Alpine's syntax and concepts beforehand.</p></li></ul><h2>Conclusion</h2><p>Transitioning to Alpine.js was a significant yet rewarding endeavor. The website now loads faster, developers find it easier to maintain, and our business didn't experience any disruptions. If your static website needs a lightweight, powerful way to manage interactions, <a href="https://alpinejs.dev/">Alpine.js</a> could be your ideal solution.</p><p>If you're considering lightening your website with Alpine.js, I highly recommend it. It's been a game-changer for us. Have questions or want to share your own migration story? I'd love to hear from you!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Swachh WebApp Abhiyan: A Call for a Cleaner, Consistent Fyle App]]></title><description><![CDATA[Tackling UI inconsistencies and raising the bar for a cleaner and unified product &#10024;]]></description><link>https://stories.fylehq.com/p/swachh-webapp-abhiyan</link><guid isPermaLink="false">https://stories.fylehq.com/p/swachh-webapp-abhiyan</guid><dc:creator><![CDATA[Sahil K]]></dc:creator><pubDate>Wed, 23 Apr 2025 07:02:10 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!yUVR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecf2be0a-932f-4d0a-b6b9-23a522c97cb2_800x448.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A great product is the result of teamwork and collaboration among individuals with diverse skill sets, perspectives, and preferences. When developing a complex application, various design choices, changes in content, and differing implementation styles can sometimes lead to inconsistencies. Over time, these inconsistencies can accumulate, some are noticeable, while others are subtle, and they ultimately affect the overall user experience.</p><p>This situation is not unique to Fyle; it occurs with every product that grows and evolves. The only way to address these inconsistencies and usability gaps is through continuous effort, tackling them one by one, day by day, until the experience feels seamless.</p><p>This is when the <strong>Swachh Web-App Abhiyan</strong> was born. The initiative focused on cleaning, refining, and fixing the app, bringing everything together under one unified experience. <strong>The goal was simple: to make the Fyle web app feel like a single, well-thought-out product rather than a collection of separately built components.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yUVR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecf2be0a-932f-4d0a-b6b9-23a522c97cb2_800x448.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yUVR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecf2be0a-932f-4d0a-b6b9-23a522c97cb2_800x448.gif 424w, https://substackcdn.com/image/fetch/$s_!yUVR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecf2be0a-932f-4d0a-b6b9-23a522c97cb2_800x448.gif 848w, https://substackcdn.com/image/fetch/$s_!yUVR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecf2be0a-932f-4d0a-b6b9-23a522c97cb2_800x448.gif 1272w, https://substackcdn.com/image/fetch/$s_!yUVR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecf2be0a-932f-4d0a-b6b9-23a522c97cb2_800x448.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yUVR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecf2be0a-932f-4d0a-b6b9-23a522c97cb2_800x448.gif" width="800" height="448" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ecf2be0a-932f-4d0a-b6b9-23a522c97cb2_800x448.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:448,&quot;width&quot;:800,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1229007,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/161946097?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecf2be0a-932f-4d0a-b6b9-23a522c97cb2_800x448.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yUVR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecf2be0a-932f-4d0a-b6b9-23a522c97cb2_800x448.gif 424w, https://substackcdn.com/image/fetch/$s_!yUVR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecf2be0a-932f-4d0a-b6b9-23a522c97cb2_800x448.gif 848w, https://substackcdn.com/image/fetch/$s_!yUVR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecf2be0a-932f-4d0a-b6b9-23a522c97cb2_800x448.gif 1272w, https://substackcdn.com/image/fetch/$s_!yUVR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fecf2be0a-932f-4d0a-b6b9-23a522c97cb2_800x448.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>The Genesis! &#128035;</h2><p>In December 2024, I had just wrapped up an initiative on the mobile app, ensuring that stats displayed exact amounts instead of rounded values. I was ready for my next challenge, and that&#8217;s when an opportunity came up to work on a high-impact cleanup of the Fyle Web App &#8212; addressing inconsistencies in UI elements like buttons, shadows, spacing, font sizes, border radii, sentence casing, and fixing functionality bugs in edge cases.</p><p>At first, the fast-paced nature of the initiative felt overwhelming. I had never worked on anything similar before. However, it also presented the opportunity to work on almost every part of the Fyle Web App, which is a rare chance. I have always enjoyed organizing things (creating order out of chaos &#128517;) and ensuring seamless experiences. This initiative felt like the perfect opportunity to achieve that on a larger scale. It was about giving the web app the polish and consistency it deserved. And so began my journey with what we fondly call the <strong>Swachh Web-App Abhiyan</strong>.</p><h2>The Plan and Roadmap! &#128506;&#65039;</h2><p>Once the initiative kicked off, the first step was to take stock of everything that needed fixing. But instead of a structured approach with documentation, we opted for something simpler: <strong>a thread-based system</strong>.</p><p>Each part of the web app or usability issue had its dedicated Slack thread. A thread would list all the inconsistencies, broken UI elements, or functionalities that needed attention.</p><p>Some threads were obvious: buttons that looked different across pages, mismatched font sizes, and uneven spacing. Others were more intricate, requiring deeper discussions across engineering, product, and design teams, like refining the receipt viewer experience or reworking the sidebar colors. Then there were the frustrating ones, tiny functional breaks that surfaced only in edge cases, often going unnoticed until a user stumbled upon them. None of these were showstoppers on their own, but together, they added up to a fractured experience. Clicking around the app, you could sense the lack of cohesion like a house with rooms designed by different architects, each following its blueprint. It wasn&#8217;t bad, but it wasn&#8217;t seamless either.</p><p>Each of these threads became a to-do list of sorts, with multiple items being tackled simultaneously by the team. With three engineers (<a href="https://www.linkedin.com/in/aditya-baddur-22ab88a4/">Aditya</a>, <a href="https://www.linkedin.com/in/amit-pile-4372a61bb/">Amit</a>, and me) actively working on different parts, we needed a way to keep track of ownership without overcomplicating things. That&#8217;s when we introduced a fun little system of <strong>emoji markers</strong>. Each of us picked a unique emoji to tag our threads: &#128044; for me, &#127374; for <a href="https://www.linkedin.com/in/aditya-baddur-22ab88a4/">Aditya</a>, and &#128039; for <a href="https://www.linkedin.com/in/amit-pile-4372a61bb/">Amit</a>.</p><p>This tiny addition made it much easier to glance through threads and instantly know who was working on what. It also added a bit of personality to the otherwise fast-paced and intense process.</p><p>Day by day, thread by thread, the cleanup was in full swing.</p><h2>The Cleanup Begins! &#127937;</h2><p>As the weeks passed, we tackled a variety of issues, ranging from subtle inconsistencies to more visible usability problems. Some fixes were small but impactful, while others required a complete revamp of certain components. Here&#8217;s a breakdown of the key improvements we made and their impact:</p><h4>&#128312; Bringing Sentence Case &amp; Language Consistency</h4><p>Across all platforms, Web App, Mobile App, Chrome Extension, Outlook Add-in, and Integrations, we standardized text formatting, sentence casing, and tone to create a more polished and professional look.</p><p>With over <strong>1,000+ files</strong> containing UI text, manually reviewing and fixing them was out of the question. Instead, we wrote a <strong>custom script</strong> to scan all HTML templates, extract placeholders and text within tags, and automatically apply the correct casing. But automation alone wasn&#8217;t enough, we had to manually review and test every change to ensure accuracy.</p><p>What seemed like a simple fix turned into a <strong>2-3 week effort</strong>, but in the end, it made a huge difference.</p><blockquote><p><strong>Impact:</strong> A cleaner and visually consistent experience that improved readability across the app.</p></blockquote><h4>&#128312; Making Tables (List-views) More Intuitive</h4><p>Tables are at the heart of financial management, so we focused on making them more flexible and user-friendly:</p><p>&#10004; <strong>Drag-and-drop support</strong> for reordering table columns.</p><p>&#10004; <strong>Column resizing</strong> to let users adjust views as needed.</p><p>&#10004; <strong>Info icons</strong> with contextual explanations where relevant.</p><div class="native-video-embed" data-component-name="VideoPlaceholder" data-attrs="{&quot;mediaUploadId&quot;:&quot;5ca92ad5-90ed-4a8d-83b0-3637546b13ed&quot;,&quot;duration&quot;:null}"></div><blockquote><p><strong>Impact:</strong> Enhanced control over data visualization, making it easier to customize tables for different workflows</p></blockquote><h4>&#128312; Subtle UI &amp; UX Enhancements That Made a Big Difference</h4><p>Sometimes, it&#8217;s the little things that make an app feel refined. We focused on polishing micro-interactions and visual elements:</p><p>&#10004; <strong>Smooth icon animations</strong> for a more delightful experience.</p><p>&#10004; <strong>New sidebar colors</strong> to improve visual hierarchy.</p><p>&#10004; <strong>Standardized hover states</strong> for buttons, close icons, and search fields.</p><p>&#10004; <strong>Redesigned export dialog</strong> for better usability.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!1mgY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faef23014-553e-4aed-acce-8ba1b0a6749e_2940x1592.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1mgY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faef23014-553e-4aed-acce-8ba1b0a6749e_2940x1592.png 424w, https://substackcdn.com/image/fetch/$s_!1mgY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faef23014-553e-4aed-acce-8ba1b0a6749e_2940x1592.png 848w, https://substackcdn.com/image/fetch/$s_!1mgY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faef23014-553e-4aed-acce-8ba1b0a6749e_2940x1592.png 1272w, https://substackcdn.com/image/fetch/$s_!1mgY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faef23014-553e-4aed-acce-8ba1b0a6749e_2940x1592.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1mgY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faef23014-553e-4aed-acce-8ba1b0a6749e_2940x1592.png" width="1456" height="788" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aef23014-553e-4aed-acce-8ba1b0a6749e_2940x1592.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:788,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:603958,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/161946097?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faef23014-553e-4aed-acce-8ba1b0a6749e_2940x1592.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1mgY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faef23014-553e-4aed-acce-8ba1b0a6749e_2940x1592.png 424w, https://substackcdn.com/image/fetch/$s_!1mgY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faef23014-553e-4aed-acce-8ba1b0a6749e_2940x1592.png 848w, https://substackcdn.com/image/fetch/$s_!1mgY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faef23014-553e-4aed-acce-8ba1b0a6749e_2940x1592.png 1272w, https://substackcdn.com/image/fetch/$s_!1mgY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faef23014-553e-4aed-acce-8ba1b0a6749e_2940x1592.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p><strong>Impact:</strong> A more polished UI that just <em>feels</em> better and consistent.</p></blockquote><h4>&#128312; Dashboard Enhancements</h4><p>We made dashboards more insightful and intuitive:</p><p>&#10004; Added <strong>team expense stats for approvers</strong> in web and mobile apps.</p><p>&#10004; Introduced a <strong>payment mode filter</strong> in <em>My Expenses</em> for better tracking.</p><p>&#10004; <strong>User greetings</strong> on the dashboard to add a personal touch.</p><p>&#10004; Improved <strong>corporate card management</strong>, making it easier to add and view cards from zero-state screens.</p><blockquote><p><strong>Impact:</strong> Smarter dashboards and better data visibility, making financial tracking even easier.</p></blockquote><h4>&#128312; UI Cleanup &amp; Visual Consistency</h4><p>A layer of polish involved modernizing outdated visuals and fixing inconsistencies across the app:</p><p>&#10004; <strong>Redesigned login &amp; logout pages</strong> with a fresh, modern &amp; minimalist look.</p><p>&#10004; <strong>Replaced outdated illustrations</strong> with cleaner, more relevant visuals.</p><p>&#10004; <strong>Fixed the Receipts/PDF Viewer</strong>, ensuring images and PDFs display in the correct aspect ratio.</p><blockquote><p><strong>Impact:</strong> Visually modernized app that feels more intentional.</p></blockquote><p>While these were some of the major changes, the full scope of this initiative was much larger. In total, <strong>we tackled, fixed, and closed 125 threads</strong>, each addressing a specific inconsistency, bug, or usability issue.</p><p>Each fix, no matter how small, contributed to making Fyle a <strong>cleaner, more seamless, and more delightful</strong> experience.</p><h2>Learnings &amp; Achievements! &#127942;</h2><p>This initiative was intense, fast-paced, and filled with valuable takeaways. Beyond just shipping features and fixes, I learned <strong>how to work smarter, collaborate better, and make decisions with impact</strong>. Here are some of my biggest learnings:</p><h4>&#128312; Staying Aligned Across Teams Matters</h4><p>With multiple teams working in parallel, I realized the importance of <strong>keeping track of everything happening across different initiatives</strong>. Following different channels like <code>product_bulletin</code>, <code>product</code>, and <code>product_design</code> kept me updated on ongoing discussions. Since we were rolling out multiple changes, I also monitored ongoing Angular migrations and joined several Q1 initiative channels to ensure our work didn&#8217;t conflict with other improvements.</p><h4>&#128312; Zooming Out for Better Consistency</h4><p>I learned to step back and take a <strong>broader perspective</strong> when making changes. Instead of implementing fixes in isolation, I started checking:</p><p>&#10004; How similar components were built in other parts of the app.</p><p>&#10004; If variable names and content followed a consistent pattern.</p><p>&#10004; Whether UI elements are aligned with our <strong>design system and language</strong>.</p><p>This approach helped maintain <strong>uniformity across the app</strong> and improved both the <strong>codebase and UI</strong> in the long run.</p><h4>&#128312; Debugging &amp; Problem Solving Got Easier</h4><p>Compared to last quarter, I became <strong>more efficient at breaking down problems</strong> and finding solutions. Debugging, which sometimes felt tedious, became much <strong>simpler and structured</strong>.</p><h4>&#128312; Realization: Reviewing PRs is Harder Than Raising Them</h4><p>One unexpected realization was that <strong>reviewing pull requests (PRs) can be tougher than raising them</strong>. When you're writing code, you have complete context, you know why you made certain choices, what trade-offs you considered, and how everything fits together. But you don't have that luxury when reviewing someone else&#8217;s PR.</p><p>I found myself spending more time understanding the <strong>"why" behind the changes</strong> rather than just checking the code itself. Some PRs touched multiple parts of the app, making it even harder to verify their impact without deep-diving into different flows. This experience made me <strong>more mindful of changes</strong> before requesting a review. I started:</p><p>&#10004; Reviewing my <strong>PRs</strong> before assigning them.</p><p>&#10004; Adding <strong>detailed comments</strong> explaining why I made specific changes.</p><p>&#10004; Ensuring PRs were well-structured to <strong>reduce unnecessary back-and-forth discussions</strong>.</p><p>&#10004; <strong>Provide screenshots or screen recordings</strong> for UI-related updates.</p><p>These practices not only accelerated the review process but also enhanced the readability and maintainability of the codebase.</p><h4>&#128312;Backing Arguments with Real Data</h4><p>Instead of relying purely on intuition, I learned to <strong>validate my decisions with actual customer data</strong>. Whether it was running <strong>DB queries or analyzing tracking metrics</strong>, these data-driven approaches made decisions:</p><p>&#10004; More <strong>objective</strong> and <strong>impactful</strong>.</p><p>&#10004; Easier to <strong>justify</strong> when discussing with product or design teams.</p><h4>&#128312; Automation = Time Saver</h4><p>I saw firsthand how <strong>automation reduces manual effort</strong> and improves efficiency.</p><p>&#10004; Writing <strong>scripts</strong> to scan and fix inconsistencies.</p><p>&#10004; Adding <strong>linting rules</strong> to enforce standards automatically.</p><p>&#10004; Configuring <strong>end-to-end (E2E) tests</strong> for better reliability.</p><p>&#10004; Setting up <strong>GitHub workflows</strong> to streamline development.</p><p>Each of these saved time, reduced errors, and made the overall development process <strong>smoother</strong>.</p><h2><strong>Wrapping It Up! &#128583;</strong></h2><p>The <strong>Swachh Web-App Abhiyan</strong> wasn&#8217;t just about fixing inconsistencies, but it was about <strong>rethinking how we build, refine, and maintain a product</strong>.</p><p>This initiative pushed me to <strong>zoom out</strong>, <strong>debug more efficiently</strong>, and <strong>collaborate across teams</strong>. More importantly, it reinforced a key lesson: <strong>Great products aren&#8217;t built overnight; they&#8217;re the result of continuous iteration, attention to detail, and a shared commitment to quality.</strong></p><p>And the best part? The app <strong>feels cleaner, more intuitive, and more delightful to use,</strong> which was the goal all along.</p><p>A huge thanks to <a href="https://www.linkedin.com/in/abhishek1234321/">Abhishek</a> and <a href="https://www.linkedin.com/in/dimple-kaluram-hemanth-2073a5158/">Dimple</a> for this opportunity, <a href="https://www.linkedin.com/in/aditya-baddur-22ab88a4/">Aditya</a> for reviewing countless PRs, <a href="https://www.linkedin.com/in/amit-pile-4372a61bb/">Amit</a> for all the help with the development, <a href="https://www.linkedin.com/in/hariharan10/">Hari</a>, <a href="https://www.linkedin.com/in/sri-ashwathi-r-840375212/">Sri Ashwathi</a>, and <a href="https://www.linkedin.com/in/dhvani-shah-960575162/">Dhvani</a> for their lightning-fast &amp; well-thought-out designs, and <a href="https://www.linkedin.com/in/meeha-tewari/">Meeha</a> for all the product and content support. This was truly a team effort! &#127881;</p><p>Looking ahead, the goal remains the same: <strong>keep improving, keep refining, and never stop making things better</strong>.</p><p>Happy Coding! &#129489;&#8205;&#128187;</p>]]></content:encoded></item><item><title><![CDATA[A Day in the Life of a Support Executive at Fyle]]></title><description><![CDATA[A behind-the-scenes look at the real, chaotic, and fulfilling life of a remote SaaS support executive&#8212;where empathy meets urgency, and every night brings a new challenge.]]></description><link>https://stories.fylehq.com/p/a-day-in-the-life-of-a-support-executive</link><guid isPermaLink="false">https://stories.fylehq.com/p/a-day-in-the-life-of-a-support-executive</guid><dc:creator><![CDATA[Ritvik Kala]]></dc:creator><pubDate>Tue, 15 Apr 2025 11:00:18 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14d2f18f-2b2d-4785-9042-82620c9c17e6_1024x1536.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Hey there! I&#8217;m Ritvik Kala, a Support Executive at Fyle. My primary job is to help our customers navigate through any issues they encounter with our product.</strong></p><p>As the sun dips below the horizon and the city begins to settle into sleep, my world is just waking up. At 6:30 p.m., my inbox lights up&#8212;tickets start pouring in, chats begin pinging, and threads need urgent replies. Each notification is a little puzzle waiting to be solved: some simple, some stressful, and sometimes, the kind that completely takes over my night.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>I grab my coffee, take a deep breath, and settle in&#8212;ready for whatever comes next</p><h2><strong>Finding My Rhythm</strong></h2><p>At first glance, my job might seem pretty straightforward&#8212;answering tickets, handling live chats, leading training sessions&#8212;but a lot more is happening under the surface. Since I work remotely from India, my nights run from 6:30 p.m. to 2:30 a.m., and sometimes even later when things get intense. It&#8217;s a fast-paced mix of multitasking, staying calm under pressure, and genuinely caring about helping people. Every ticket is someone reaching out for help, so empathy isn&#8217;t just a soft skill here&#8212;it&#8217;s everything.</p><p>The first hour always hits the hardest. It&#8217;s like hopping onto a moving train&#8212;you&#8217;ve got to find your rhythm quickly! I prioritize fast, scan through what needs my attention, juggle admin trainings, chat queues, and internal syncs. No two nights look the same, so being mentally prepped is key. </p><h2><strong>The Art of Managing Tickets and Real-Time Support</strong></h2><p>Tickets feel like an ever-evolving puzzle. One minute I&#8217;m deep into crafting a detailed reply, the next I&#8217;m jumping into a live chat where an admin&#8217;s stuck with reimbursements and needs help <em>right now</em>. I have to immediately switch gears, dive into the issue, resolve it with care, and then watch their thank-you message pop up. It might be a small win, but in the middle of a hectic shift, it feels big. Urgent issues come first, but there&#8217;s always the chance that a new critical ticket might pop up right when I&#8217;m in the middle of something</p><p>Time management is everything. Between digging into tricky problems, replying with clarity, and always staying kind and patient&#8212;it takes real focus. It&#8217;s fast-paced, a bit chaotic, but incredibly rewarding when a customer&#8217;s issue gets resolved and they&#8217;re back on track.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nqc0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86f9910-c329-4e9c-a3ae-8a399e8d41d5_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nqc0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86f9910-c329-4e9c-a3ae-8a399e8d41d5_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!nqc0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86f9910-c329-4e9c-a3ae-8a399e8d41d5_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!nqc0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86f9910-c329-4e9c-a3ae-8a399e8d41d5_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!nqc0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86f9910-c329-4e9c-a3ae-8a399e8d41d5_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nqc0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86f9910-c329-4e9c-a3ae-8a399e8d41d5_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a86f9910-c329-4e9c-a3ae-8a399e8d41d5_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2627074,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/161369420?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86f9910-c329-4e9c-a3ae-8a399e8d41d5_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nqc0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86f9910-c329-4e9c-a3ae-8a399e8d41d5_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!nqc0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86f9910-c329-4e9c-a3ae-8a399e8d41d5_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!nqc0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86f9910-c329-4e9c-a3ae-8a399e8d41d5_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!nqc0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa86f9910-c329-4e9c-a3ae-8a399e8d41d5_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>When Things Get Real: Escalations</strong></h2><p>Then come the escalations. Picture being in the middle of a live chat and getting alerted to a p0 escalation (That&#8217;s short for &#8220;Priority 0,&#8221; meaning something critical has broken, and it&#8217;s affecting multiple customers.) &#8212; it is a situation so critical it demands all hands on deck. In SaaS, especially with US clients, these issues tend to hit in the dead of night here in India. These moments test your ability to remain calm under pressure. I have to pivot quickly, coordinate with different teams, and work to resolve the issue while ensuring the customer feels supported every step of the way.</p><p>Everything else is pushed aside as I move swiftly, connecting with engineers, gathering details, updating the customer&#8212;all while making sure they don&#8217;t feel left in the dark. These moments are high-pressure, where precision matters more than ever. Staying calm is not just a skill; it&#8217;s a necessity.</p><p>Some nights, these crises stretch my shift beyond the usual log-off time. But when the dust settles and the issue is resolved, the relief in the customer&#8217;s response makes every lost hour worth it.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Mmeg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad6beeb-5781-4fcd-b95d-aeb14ddecd1f_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Mmeg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad6beeb-5781-4fcd-b95d-aeb14ddecd1f_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Mmeg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad6beeb-5781-4fcd-b95d-aeb14ddecd1f_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Mmeg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad6beeb-5781-4fcd-b95d-aeb14ddecd1f_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Mmeg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad6beeb-5781-4fcd-b95d-aeb14ddecd1f_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Mmeg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad6beeb-5781-4fcd-b95d-aeb14ddecd1f_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fad6beeb-5781-4fcd-b95d-aeb14ddecd1f_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2573165,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/161369420?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad6beeb-5781-4fcd-b95d-aeb14ddecd1f_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Mmeg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad6beeb-5781-4fcd-b95d-aeb14ddecd1f_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!Mmeg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad6beeb-5781-4fcd-b95d-aeb14ddecd1f_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!Mmeg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad6beeb-5781-4fcd-b95d-aeb14ddecd1f_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!Mmeg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffad6beeb-5781-4fcd-b95d-aeb14ddecd1f_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Training That Actually Empowers</strong></h2><p>It&#8217;s not just about reacting to problems either. A big part of my work is leading admin training sessions. These aren&#8217;t just boring walkthroughs&#8212;we&#8217;re helping people actually understand and own the product. The goal is to leave them feeling confident and independent, ready to navigate everything on their own.</p><p>Each session takes planning&#8212;prepping custom content, guiding them through hands-on demos, and anticipating their questions. And then there&#8217;s that moment during a session where something <em>clicks</em> for them&#8212;that&#8217;s the magic. There&#8217;s something really special about watching someone start off unsure and overwhelmed, then slowly find their footing and become a total pro. That shift&#8212;that spark of confidence&#8212;it&#8217;s one of the most rewarding parts of my job. It reminds me why I love doing what I do.</p><h2><strong>Mentoring Interns - Buddy culture at Fyle!</strong></h2><p>We always talk about the beautiful culture at Fyle, a very wholesome aspect of this process is that every new joinee at Fyle has a buddy! Every new joiner gets paired with someone experienced to help them settle in, kind of like the Army&#8217;s buddy system. Buddying is an extremely time-consuming and tough task. It requires patience and resilience to no extent. You have to get on countless huddles and help the interns with numerous questions.</p><p>Now, I help new interns and junior team members find their footing. Guiding them through tricky tickets, stepping in when they get stuck during live chats, and reassuring them that they&#8217;ll get the hang of it. Because support isn&#8217;t just about answering questions&#8212;it&#8217;s about building a team that thrives together.</p><p>Mentorship helps build a real sense of team spirit. Watching interns go from <strong>unsure and nervous</strong> to <strong>confident and capable</strong> feels amazing&#8212;and it naturally brings all of us closer. It&#8217;s less about just doing a job and more about growing together and having each other&#8217;s backs.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MEyw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed7eb94-19e6-4a24-bf6b-5dc188b3b21c_1024x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MEyw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed7eb94-19e6-4a24-bf6b-5dc188b3b21c_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!MEyw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed7eb94-19e6-4a24-bf6b-5dc188b3b21c_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!MEyw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed7eb94-19e6-4a24-bf6b-5dc188b3b21c_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!MEyw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed7eb94-19e6-4a24-bf6b-5dc188b3b21c_1024x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MEyw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed7eb94-19e6-4a24-bf6b-5dc188b3b21c_1024x1024.png" width="1024" height="1024" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/aed7eb94-19e6-4a24-bf6b-5dc188b3b21c_1024x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1024,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2453669,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/161369420?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed7eb94-19e6-4a24-bf6b-5dc188b3b21c_1024x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MEyw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed7eb94-19e6-4a24-bf6b-5dc188b3b21c_1024x1024.png 424w, https://substackcdn.com/image/fetch/$s_!MEyw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed7eb94-19e6-4a24-bf6b-5dc188b3b21c_1024x1024.png 848w, https://substackcdn.com/image/fetch/$s_!MEyw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed7eb94-19e6-4a24-bf6b-5dc188b3b21c_1024x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!MEyw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Faed7eb94-19e6-4a24-bf6b-5dc188b3b21c_1024x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2><strong>Behind the Scenes: The Invisible Work</strong></h2><p>This job often feels like steering a ship quietly through a storm. The outside world might not see everything, but what we do behind the scenes is critical. While customers might simply see a swift response, behind the scenes, there's intense preparation, careful thought, and empathetic understanding. Each interaction, whether through a chat or admin training, is shaped by countless unseen moments&#8212;times I've paused to recheck information, collaborated with teammates to find the perfect solution, or attended a learning session to enhance my expertise.</p><p>There are product updates to keep track of, weekly learning sessions to attend, and cross-team collaborations to ensure we&#8217;re aligned. Every night, I absorb, adapt, and translate technical complexities into clear, actionable solutions for our customers. These aren&#8217;t things customers ever see, but they&#8217;re the reason the support <em>feels</em> seamless.</p><h2><strong>Clocking Out with Pride</strong></h2><p>By the time I&#8217;m wrapping up, the sky&#8217;s starting to lighten. The rush is over, my inbox is clear (for now), and things feel a little more peaceful. I log off knowing that someone, somewhere, is having a smoother day because of the work I did tonight.</p><p>It&#8217;s not glamorous. It&#8217;s not always easy. But it&#8217;s real. And it matters. It&#8217;s a strange kind of satisfaction&#8212;the kind that comes not from being in the spotlight, but from knowing that, behind the scenes, I&#8217;ve played my part in keeping things running smoothly.</p><p><strong>We might not build the product, but we make sure people trust it. And sometimes, that&#8217;s the real magic. Not all heroes wear capes&#8212;some wear headsets and quietly save someone&#8217;s day without ever being seen.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Wb5-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14d2f18f-2b2d-4785-9042-82620c9c17e6_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wb5-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14d2f18f-2b2d-4785-9042-82620c9c17e6_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Wb5-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14d2f18f-2b2d-4785-9042-82620c9c17e6_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Wb5-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14d2f18f-2b2d-4785-9042-82620c9c17e6_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Wb5-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14d2f18f-2b2d-4785-9042-82620c9c17e6_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wb5-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14d2f18f-2b2d-4785-9042-82620c9c17e6_1024x1536.png" width="1024" height="1536" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/14d2f18f-2b2d-4785-9042-82620c9c17e6_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:3212682,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/161369420?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14d2f18f-2b2d-4785-9042-82620c9c17e6_1024x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wb5-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14d2f18f-2b2d-4785-9042-82620c9c17e6_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Wb5-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14d2f18f-2b2d-4785-9042-82620c9c17e6_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Wb5-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14d2f18f-2b2d-4785-9042-82620c9c17e6_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Wb5-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F14d2f18f-2b2d-4785-9042-82620c9c17e6_1024x1536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Joys and Crimes of Email Development]]></title><description><![CDATA[Revamping 50+ emails at Fyle introduced me to the delightful, quirky world of email development where <table>'s reign and JavaScript is banned.]]></description><link>https://stories.fylehq.com/p/the-joys-and-crimes-of-email-development</link><guid isPermaLink="false">https://stories.fylehq.com/p/the-joys-and-crimes-of-email-development</guid><dc:creator><![CDATA[Harshal Devmurari]]></dc:creator><pubDate>Tue, 08 Apr 2025 06:38:41 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/ab8f60e6-1423-460e-ac58-ae751d3e18f2_1395x1022.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hello there! I&#8217;m <strong><a href="https://www.linkedin.com/in/harshal-devmurari/">Harshal</a></strong>, an MTS-1 at Fyle. A few months ago, I found myself deep in the wonderfully chaotic world of <strong>Email Development,</strong> a journey that turned out to be exciting and <em>way</em> more complicated than I ever imagined.</p><p>In this post, I&#8217;ll share how we revamped 50+ emails, from research to rollout, plus a few moments that had me both laughing and screaming into the void. Let&#8217;s dive in.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>What Makes Email Development So Different from Web?</h2><p>At first glance, email development looks straightforward, just some HTML and CSS. But once you dig in, you realize it&#8217;s a whole different world with its own set of rules. Here&#8217;s what makes it so unique.</p><h3>&#127919; Web Browsers vs Email Clients</h3><ul><li><p>While <strong>web browsers</strong> (like Chrome, Safari, and Firefox) are designed to render modern websites using shared standards and engines, <strong>email clients</strong> (like Gmail, Outlook, and Apple Mail) are built specifically to display email messages, often with their own rendering engines and rules.</p></li><li><p>Because email clients prioritize <strong>security, performance, and offline support</strong>, they don&#8217;t fully support modern web features.</p></li></ul><h3>&#127919; Emails Don&#8217;t Run, They Render</h3><ul><li><p>JavaScript is entirely blocked by email clients as emails are meant to be read and they&#8217;re designed to display content safely.</p></li><li><p>Even Google&#8217;s <a href="https://amp.dev/about/email">AMP for Email</a> which enables interactivity like carousels and forms, avoids JavaScript. Instead, it uses custom components that keep things lightweight and secure.</p></li></ul><h3>&#127919; Image Handling &amp; Spam Sensitivity</h3><ul><li><p>Many email clients including Outlook, Gmail (web), and Yahoo Mail block images by default for security reasons. That&#8217;s why it&#8217;s important to have fallbacks.</p></li><li><p>Unlike web pages, emails must pass through <strong>spam filters</strong> before reaching an inbox. Even a messy code structure or certain keywords can raise red flags.</p></li></ul><p><a href="https://sendgrid.com/en-us/blog/10-tips-to-keep-email-out-of-the-spam-folder">This blog by SendGrid</a> lists common triggers and tips to stay out of the spam folder.</p><h3>&#127919; Debugging Emails Is Like Archaeology &#128518;</h3><ul><li><p>Unlike browsers, email clients offer no inspect tools or dev consoles. Debugging is manual - testing across platforms and learning through iterations.</p></li><li><p>Any mismatch in data, or small code flaw can break rendering, clip content, or prevent delivery entirely.</p></li></ul><p>In short, Email development comes with its own set of constraints, quirks, and unexpected behaviors. But once you master the rules, you can craft reliable, beautiful emails that shine across (almost) any inbox.</p><h2>Development Journey in Three Phases</h2><p>By now, you&#8217;ve seen how strange and specific the world of email development can be. Here&#8217;s how my own journey unfolded, not just a task, but a full-on expedition that involved planning, coding, testing, (lots of testing), and cross-team coordination.</p><h3>&#129517; Phase I: Laying the Groundwork - Research &amp; Setup</h3><p>Before jumping into code, I took a step back to understand the unfamiliar world of email development. With so many hidden quirks and client-specific behaviors, the real work started with research before the code editor.</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yPHi!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ffc583d-fd57-4b6d-b2ff-48470f05934a_220x220.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yPHi!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ffc583d-fd57-4b6d-b2ff-48470f05934a_220x220.gif 424w, https://substackcdn.com/image/fetch/$s_!yPHi!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ffc583d-fd57-4b6d-b2ff-48470f05934a_220x220.gif 848w, https://substackcdn.com/image/fetch/$s_!yPHi!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ffc583d-fd57-4b6d-b2ff-48470f05934a_220x220.gif 1272w, https://substackcdn.com/image/fetch/$s_!yPHi!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ffc583d-fd57-4b6d-b2ff-48470f05934a_220x220.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yPHi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ffc583d-fd57-4b6d-b2ff-48470f05934a_220x220.gif" width="372" height="372" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8ffc583d-fd57-4b6d-b2ff-48470f05934a_220x220.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:220,&quot;width&quot;:220,&quot;resizeWidth&quot;:372,&quot;bytes&quot;:317913,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/gif&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/160481021?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ffc583d-fd57-4b6d-b2ff-48470f05934a_220x220.gif&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yPHi!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ffc583d-fd57-4b6d-b2ff-48470f05934a_220x220.gif 424w, https://substackcdn.com/image/fetch/$s_!yPHi!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ffc583d-fd57-4b6d-b2ff-48470f05934a_220x220.gif 848w, https://substackcdn.com/image/fetch/$s_!yPHi!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ffc583d-fd57-4b6d-b2ff-48470f05934a_220x220.gif 1272w, https://substackcdn.com/image/fetch/$s_!yPHi!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8ffc583d-fd57-4b6d-b2ff-48470f05934a_220x220.gif 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h4>&#128313; Email Client Compatibility Investigation</h4><p>I started by creating a document that mapped out all the CSS properties we planned to use, from layout and typography to spacing and checked their compatibility across major email clients.</p><p>The doc included:</p><ul><li><p>A compatibility matrix of planned CSS properties - referenced from<em> <a href="https://caniemail.com/">caniemail.com</a></em></p></li><li><p>Notes on known quirks or workarounds from resources like <a href="https://www.emailonacid.com/blog/">EmailOnAcid</a> and <a href="https://sendgrid.com/en-us/blog">SendGrid</a>.</p></li><li><p>A client / device usage breakdown based on internal metrics to prioritize what mattered most</p></li></ul><p>This reference became my north star throughout the development and honestly, it saved me more times than I can count.</p><h4>&#128313; Dev Environment &amp; Email Rendering Pipeline</h4><p>The next step was to understand how the email system worked <em>end to end</em>. So I dug up the backend codebase and traced the full notification flow: from the triggering event to the final payload sent by our email service.</p><p>The email flow isn&#8217;t just one service, it spans across multiple layers of our system, each responsible for a part of the process. Here's a simplified view of how it worked:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!i839!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8fef69-c7f2-44a8-a438-bc8d36f0e2be_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!i839!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8fef69-c7f2-44a8-a438-bc8d36f0e2be_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!i839!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8fef69-c7f2-44a8-a438-bc8d36f0e2be_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!i839!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8fef69-c7f2-44a8-a438-bc8d36f0e2be_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!i839!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8fef69-c7f2-44a8-a438-bc8d36f0e2be_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!i839!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8fef69-c7f2-44a8-a438-bc8d36f0e2be_1024x1536.png" width="426" height="639" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6f8fef69-c7f2-44a8-a438-bc8d36f0e2be_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:426,&quot;bytes&quot;:444404,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/160481021?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8fef69-c7f2-44a8-a438-bc8d36f0e2be_1024x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!i839!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8fef69-c7f2-44a8-a438-bc8d36f0e2be_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!i839!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8fef69-c7f2-44a8-a438-bc8d36f0e2be_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!i839!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8fef69-c7f2-44a8-a438-bc8d36f0e2be_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!i839!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6f8fef69-c7f2-44a8-a438-bc8d36f0e2be_1024x1536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><ul><li><p><strong>User Interaction</strong> triggers an event in the system like submitting a form or completing an action or this can be a scheduled job.</p></li><li><p>This kicks off the business logic for email generation workflow, which is picked by the <strong>notification service</strong>.</p></li><li><p>The email layout and content are then generated by dedicated services. These services communicate via APIs to compile the final email structure.</p></li><li><p>Finally, the email is passed to our mail delivery provider <strong><a href="https://sendgrid.com/en-us">SendGrid</a></strong>, which handles delivery to the user&#8217;s inbox.</p></li></ul><p>I spun up private branches across the repos involved, deployed them to a test environment, and manually triggered emails through the UI. This setup gave me room to experiment and tweak things with real data in place.</p><div><hr></div><h3>&#9881;&#65039; Phase II: Development &#8211; Designing, Coding, and Fighting Bugs</h3><p>In the world of emails, modern layouts take a backseat. Instead, good old <code>&lt;table&gt; </code>based HTML is your most reliable companion. But even with those time-tested techniques, there&#8217;s no guarantee things will just work.</p><p>The development phase was full of surprises. Here are a few of my favorite (and confusing) discoveries.</p><h4>&#128313; The Gmail Box Shadow Mystery</h4><p>Somewhere between &#8220;this style doesn&#8217;t work&#8221; and &#8220;why does it work <em>there</em> but not <em>here</em>,&#8221; I stumbled upon this:</p><blockquote><p><strong>Gmail App supports </strong><code>box-shadow</code><strong> but only for non-Google accounts.</strong></p></blockquote><p>It would&#8217;ve made sense the other way around, right? Support it on Gmail accounts to promote your own product. When I first found this, this is exactly how I felt about Google for making my life difficult:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!20WQ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc22ced0c-ea6d-4282-ba28-a1e628341134_1536x1024.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!20WQ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc22ced0c-ea6d-4282-ba28-a1e628341134_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!20WQ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc22ced0c-ea6d-4282-ba28-a1e628341134_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!20WQ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc22ced0c-ea6d-4282-ba28-a1e628341134_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!20WQ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc22ced0c-ea6d-4282-ba28-a1e628341134_1536x1024.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!20WQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc22ced0c-ea6d-4282-ba28-a1e628341134_1536x1024.png" width="1456" height="971" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c22ced0c-ea6d-4282-ba28-a1e628341134_1536x1024.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:971,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2692296,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/160481021?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc22ced0c-ea6d-4282-ba28-a1e628341134_1536x1024.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!20WQ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc22ced0c-ea6d-4282-ba28-a1e628341134_1536x1024.png 424w, https://substackcdn.com/image/fetch/$s_!20WQ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc22ced0c-ea6d-4282-ba28-a1e628341134_1536x1024.png 848w, https://substackcdn.com/image/fetch/$s_!20WQ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc22ced0c-ea6d-4282-ba28-a1e628341134_1536x1024.png 1272w, https://substackcdn.com/image/fetch/$s_!20WQ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc22ced0c-ea6d-4282-ba28-a1e628341134_1536x1024.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>There&#8217;s no straight answer to why it works this way, but this <a href="https://www.hteumeuleu.com/2016/trying-to-make-sense-of-gmail-css-support/">deep dive by R&#233;mi Parmentier</a> does a great job breaking it down to possible causes.</p><h4>&#128313; The Invisible Character That Broke Gmail</h4><p>At one point, Gmail started clipping my email for no reason. Hours of diffing later... the culprit? A single invisible Unicode character, pasted straight from Figma was enough to push Gmail&#8217;s 102KB rendering limit.</p><p>Now I double-check every copy block and never trust pretty text.</p><h4>&#128313; Outlook Fixes (Witchcraft Edition)</h4><p>Outlook Classic uses Microsoft Word as its rendering engine. Yes. Word for email rendering. The only way to overcome layout mishaps is to use <strong>MSO</strong> (Microsoft Office) specific conditionals and write supported code inside:</p><pre><code><code>&lt;!--[if mso]&gt;
  &lt;table&gt;
     &lt;!-- Outlook-specific content --&gt;
  &lt;/table&gt;
&lt;![endif]--&gt;</code></code></pre><p>These conditionals help prevent layout shifts and keep things aligned in Word-based clients without affecting others.</p><p>To add to the fun, Outlook doesn&#8217;t support rounded corners natively, you&#8217;ll have to lean on an ancient markup language called <strong><a href="https://www.w3.org/TR/NOTE-VML">VML</a> </strong>(Vector Markup Language) to implement those stylish buttons.</p><h4>&#128313; That Sneaky Line of Preheader Text</h4><p>We added custom pre-headers, the snippet that shows up next to your subject line in the inbox preview, but nowhere inside the email. It helps set context and improve clarity.</p><p>It&#8217;s also great for deliverability: a well-crafted preheader can reduce the chances of getting flagged by spam filters. Small touch, outsized impact.</p><div><hr></div><h3>&#128640; Phase III: Release &amp; Final Validation</h3><p>This is the part where the emails leave the comfort of dev and meet the real world. And unlike web pages, emails don&#8217;t come with hotfixes, once they land in a user&#8217;s inbox, you&#8217;re done. So we took testing and validation seriously.</p><h4>&#128313; Testing Across the Inbox Universe</h4><p>Once things looked good technically, our <strong>product and design teams</strong> jumped into staging and took QA to the next level. From <strong>1px misalignments</strong> to <strong>button spacing issues</strong> on narrow screens, they caught what tools couldn&#8217;t. We tested our emails across <strong>~8 different clients</strong> and multiple types of devices. The list included:</p><ul><li><p>Gmail (web, Android, iOS)</p></li><li><p>Outlook (Office 365, classic desktop)</p></li><li><p>Apple Mail (macOS, iOS)</p></li><li><p>Yahoo, Proton Mail, and a few others</p></li></ul><p>Every client had its own rules. What looked perfect in Apple Mail might break in Outlook, or wrap oddly in Yahoo.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jzo9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322181ab-a0e6-4d01-a3b8-fce8348141ed_1024x1536.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jzo9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322181ab-a0e6-4d01-a3b8-fce8348141ed_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Jzo9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322181ab-a0e6-4d01-a3b8-fce8348141ed_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Jzo9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322181ab-a0e6-4d01-a3b8-fce8348141ed_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Jzo9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322181ab-a0e6-4d01-a3b8-fce8348141ed_1024x1536.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jzo9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322181ab-a0e6-4d01-a3b8-fce8348141ed_1024x1536.png" width="399" height="598.5" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/322181ab-a0e6-4d01-a3b8-fce8348141ed_1024x1536.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1536,&quot;width&quot;:1024,&quot;resizeWidth&quot;:399,&quot;bytes&quot;:2200562,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/160481021?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322181ab-a0e6-4d01-a3b8-fce8348141ed_1024x1536.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jzo9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322181ab-a0e6-4d01-a3b8-fce8348141ed_1024x1536.png 424w, https://substackcdn.com/image/fetch/$s_!Jzo9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322181ab-a0e6-4d01-a3b8-fce8348141ed_1024x1536.png 848w, https://substackcdn.com/image/fetch/$s_!Jzo9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322181ab-a0e6-4d01-a3b8-fce8348141ed_1024x1536.png 1272w, https://substackcdn.com/image/fetch/$s_!Jzo9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F322181ab-a0e6-4d01-a3b8-fce8348141ed_1024x1536.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h4>RIP Windows Mail &#129702;</h4><p>We&#8217;d done a fair bit of development and testing with <strong>Windows Mail </strong>in mind. But just as we were wrapping up, Microsoft announced they would retire the app starting Jan 2025, in favor of a new Outlook version which uses a modern rendering engine.</p><p>It was one of those classic dev moments: you spend days battling platform-specific bugs, only to find it&#8217;s being phased out.</p><p>Still, the effort wasn&#8217;t wasted, many of the same fixes helped with older Word-based clients too.</p><h2>Conclusion</h2><p>Revamping <strong>50+ emails</strong> was more than just a design refresh, it was a deep exploration into the wonderfully weird realm of <strong>Email Development</strong>. From balancing old-school <code>&lt;table&gt;</code> layouts, to debugging invisible Unicode gremlins, writing Python code for content, and validating every last edge case - it was a journey.</p><p>A huge shoutout to my colleagues, <a href="https://www.linkedin.com/in/hariharan10">Hari</a> from the design team and <a href="https://www.linkedin.com/in/jishnav">Jishnav</a> from the product team for the beautiful visuals, thoughtful copy, and going all-in on QA. Their contributions made these emails not just reliable, but <em>on-brand</em> and <em>delightful</em>.</p><p>To summarise:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!oXaN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa981df2d-fee1-4cc8-a7d5-1571fc7faffd_1538x1415.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!oXaN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa981df2d-fee1-4cc8-a7d5-1571fc7faffd_1538x1415.png 424w, https://substackcdn.com/image/fetch/$s_!oXaN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa981df2d-fee1-4cc8-a7d5-1571fc7faffd_1538x1415.png 848w, https://substackcdn.com/image/fetch/$s_!oXaN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa981df2d-fee1-4cc8-a7d5-1571fc7faffd_1538x1415.png 1272w, https://substackcdn.com/image/fetch/$s_!oXaN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa981df2d-fee1-4cc8-a7d5-1571fc7faffd_1538x1415.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!oXaN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa981df2d-fee1-4cc8-a7d5-1571fc7faffd_1538x1415.png" width="725" height="667.239010989011" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a981df2d-fee1-4cc8-a7d5-1571fc7faffd_1538x1415.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1340,&quot;width&quot;:1456,&quot;resizeWidth&quot;:725,&quot;bytes&quot;:1086547,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/160481021?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa981df2d-fee1-4cc8-a7d5-1571fc7faffd_1538x1415.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!oXaN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa981df2d-fee1-4cc8-a7d5-1571fc7faffd_1538x1415.png 424w, https://substackcdn.com/image/fetch/$s_!oXaN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa981df2d-fee1-4cc8-a7d5-1571fc7faffd_1538x1415.png 848w, https://substackcdn.com/image/fetch/$s_!oXaN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa981df2d-fee1-4cc8-a7d5-1571fc7faffd_1538x1415.png 1272w, https://substackcdn.com/image/fetch/$s_!oXaN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa981df2d-fee1-4cc8-a7d5-1571fc7faffd_1538x1415.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you&#8217;ve ever wrangled Outlook conditionals, hit Gmail&#8217;s 102KB limit, or found joy in a perfectly aligned <code>&lt;td&gt;</code>, I&#8217;d love to hear your story too.</p><p>Thanks for reading and may your emails render clean, your tables nest true, and your box-shadows always show up &#128232;&#10024;</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Using E2E Tests to Confidently Migrate AngularJS to Angular]]></title><description><![CDATA[Learn how we leveraged E2E tests to confidently migrate our legacy AngularJS codebase to Angular&#8212;ensuring a smoother, safer transition]]></description><link>https://stories.fylehq.com/p/e2e-tests</link><guid isPermaLink="false">https://stories.fylehq.com/p/e2e-tests</guid><dc:creator><![CDATA[Aniruddha Shriwant]]></dc:creator><pubDate>Fri, 04 Apr 2025 04:21:54 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/3af74f0e-ccad-4cce-8310-c9d11f6a6af8_1536x1024.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3><strong>Introduction</strong></h3><p>Hey! I&#8217;m <a href="https://in.linkedin.com/in/aniruddha-shriwant">Aniruddha Shriwant</a>, a Software Engineer at Fyle, where I&#8217;ve been working for the past two years. In this blog post, I&#8217;m going to share our approach to ensuring smooth migration from AngularJS to Angular, particularly by writing End-to-End (E2E) tests for our legacy codebase.</p><p>My colleague <a href="https://in.linkedin.com/in/aditya-baddur-22ab88a4">Aditya</a> previously shared how we kicked off this migration journey in <a href="https://stories.fylehq.com/p/migrating-from-angularjs-to-angular">this blog</a>. Do check it out for additional context!</p><p></p><h3><strong>The Challenge: Testing Legacy Code</strong></h3><p>As mentioned in Aditya&#8217;s blog, our migration journey from AngularJS to Angular has been ongoing for the past two years. Now, we&#8217;re finally approaching the finish line -  reaching the most critical and complex areas of our web application.</p><p>However, we encountered a significant challenge at this stage. Our legacy AngularJS codebase didn&#8217;t have any unit tests in place, which meant every feature or change had to be manually tested. This made it extremely difficult to confidently migrate critical sections without introducing regressions or missing subtle functionalities.</p><p>To tackle this effectively, we needed a reliable way to ensure that nothing broke during the migration.</p><p></p><h3><strong>Why Choose End-to-End (E2E) Testing?</strong></h3><p>Typically, in the testing pyramid, unit tests form the base and are prioritized because they&#8217;re fast, inexpensive, and provide immediate feedback. End-to-End tests, on the other hand, sit at the top - usually fewer in number due to their higher cost in terms of execution time, CI resources, and maintenance complexity. However, when dealing with legacy code that lacks existing unit tests, this pyramid gets inverted. Here, prioritizing E2E tests makes sense, since they quickly verify critical user interactions, offering immediate assurance that essential functionalities aren&#8217;t broken during major changes like migrations.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!c9I1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e49f299-71b9-4582-8543-c7bdb17176c2_1024x815.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!c9I1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e49f299-71b9-4582-8543-c7bdb17176c2_1024x815.png 424w, https://substackcdn.com/image/fetch/$s_!c9I1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e49f299-71b9-4582-8543-c7bdb17176c2_1024x815.png 848w, https://substackcdn.com/image/fetch/$s_!c9I1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e49f299-71b9-4582-8543-c7bdb17176c2_1024x815.png 1272w, https://substackcdn.com/image/fetch/$s_!c9I1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e49f299-71b9-4582-8543-c7bdb17176c2_1024x815.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!c9I1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e49f299-71b9-4582-8543-c7bdb17176c2_1024x815.png" width="590" height="469.580078125" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e49f299-71b9-4582-8543-c7bdb17176c2_1024x815.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:815,&quot;width&quot;:1024,&quot;resizeWidth&quot;:590,&quot;bytes&quot;:255153,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://stories.fylehq.com/i/160178277?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e49f299-71b9-4582-8543-c7bdb17176c2_1024x815.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!c9I1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e49f299-71b9-4582-8543-c7bdb17176c2_1024x815.png 424w, https://substackcdn.com/image/fetch/$s_!c9I1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e49f299-71b9-4582-8543-c7bdb17176c2_1024x815.png 848w, https://substackcdn.com/image/fetch/$s_!c9I1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e49f299-71b9-4582-8543-c7bdb17176c2_1024x815.png 1272w, https://substackcdn.com/image/fetch/$s_!c9I1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e49f299-71b9-4582-8543-c7bdb17176c2_1024x815.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>With this perspective, we decided E2E tests were our best bet to confidently manage our Angular migration.</p><p></p><h3><strong>Our Approach to Writing E2E Tests</strong></h3><ol><li><p><strong>Documenting Feature Requirements (FRs)</strong></p><p>We started by exhaustively identifying and documenting every feature and edge case supported by our legacy codebase. Since we previously had no documentation, this step became crucial. These documented FRs served as a reliable source of truth, something we could always refer back to.<br>My colleague, <strong><a href="https://in.linkedin.com/in/aiyush-dhar">Aiyush</a></strong>, played a pivotal role here - his extensive experience at Fyle helped us clearly document critical functionalities and, in many cases, understand why certain features existed in the first place. By the end, we had nearly <strong>150 feature requirements</strong> documented!</p></li><li><p><strong>Grouping FRs into User Testing Scenarios</strong></p><p>Given the large number of FRs, individually writing an E2E test for each wasn&#8217;t practical. Instead, we grouped related FRs into cohesive user flows and scenarios. This helped us efficiently cover multiple FRs within fewer tests. Moreover, grouping improved our Continuous Integration (CI) pipeline efficiency, as E2E tests are relatively slower to execute and consume more CI resources.</p></li><li><p><strong>Writing the E2E Tests</strong></p><p>Finally, we translated these user scenarios into E2E tests that closely simulated real-world user interactions.</p><p>With this structured approach, we ensured comprehensive and practical coverage of our most critical user journeys.</p></li></ol><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Y3VE!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc426687f-8058-40d1-b26b-bc5ceb91281a_498x280.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Y3VE!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc426687f-8058-40d1-b26b-bc5ceb91281a_498x280.gif 424w, https://substackcdn.com/image/fetch/$s_!Y3VE!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc426687f-8058-40d1-b26b-bc5ceb91281a_498x280.gif 848w, https://substackcdn.com/image/fetch/$s_!Y3VE!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc426687f-8058-40d1-b26b-bc5ceb91281a_498x280.gif 1272w, https://substackcdn.com/image/fetch/$s_!Y3VE!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc426687f-8058-40d1-b26b-bc5ceb91281a_498x280.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Y3VE!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc426687f-8058-40d1-b26b-bc5ceb91281a_498x280.gif" width="498" height="280" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c426687f-8058-40d1-b26b-bc5ceb91281a_498x280.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:280,&quot;width&quot;:498,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!Y3VE!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc426687f-8058-40d1-b26b-bc5ceb91281a_498x280.gif 424w, https://substackcdn.com/image/fetch/$s_!Y3VE!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc426687f-8058-40d1-b26b-bc5ceb91281a_498x280.gif 848w, https://substackcdn.com/image/fetch/$s_!Y3VE!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc426687f-8058-40d1-b26b-bc5ceb91281a_498x280.gif 1272w, https://substackcdn.com/image/fetch/$s_!Y3VE!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc426687f-8058-40d1-b26b-bc5ceb91281a_498x280.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3><strong>Few best practices we followed while writing E2E tests</strong></h3><p>Here&#8217;s how we implemented some best practices to write reliable, maintainable, and effective E2E tests, We used <a href="https://playwright.dev/">Playwright</a> - a testing tool that helps automate browsers and simulate real user interactions, making it ideal for writing reliable End-to-End (E2E) tests.</p><ul><li><p><strong>Prioritizing User-Centric locators</strong></p><ul><li><p>When writing E2E tests with Playwright, there are generally two ways to select DOM elements:</p><ul><li><p>Component or CSS selectors:</p><p><code>// Clicking the save button using a component-specific CSS class:</code></p><p><code>page.locator('.save-cta').click();</code></p></li><li><p><strong>User-facing selectors (recommended approach):</strong></p><p><code>// Clicking the save button as a user would identify it:</code></p><p><code>page.getByRole('button', { name: 'Save', exact: true }).click();</code></p></li></ul></li></ul><ul><li><p>We strongly preferred the second approach&#8212;<strong>user-centric locators</strong>&#8212;because they&#8217;re less brittle. Component or CSS-based selectors tend to break easily whenever component names or CSS classes change, which was common during our migration from AngularJS to Angular. By contrast, user-facing selectors rely on elements the user actually sees and interacts with, making our tests more resilient and maintainable.</p></li><li><p>This approach aligns directly with <a href="https://playwright.dev/docs/best-practices#use-locators">Playwright&#8217;s recommended best practices</a>.</p></li></ul></li><li><p><strong>Grouping and Structuring Tests into User Flows</strong></p><p>Given our extensive list of Feature Requirements (FRs), individually testing each scenario would have been highly inefficient. To address this, we grouped related FRs into coherent user flows, typically covering 7-8 FRs within a single test scenario.</p><p><strong>Example scenario:</strong> testing various form inputs tests in one flow:</p><ul><li><p>Verify that specific input fields appear by default.</p></li><li><p>Check for mandatory field errors when attempting to save without providing the required details.</p></li><li><p>Ensure dropdown fields load and display default selectable values.</p></li><li><p>Confirm date input fields validate correctly, especially for future dates.</p></li><li><p>Validate that configurable labels and placeholders correctly reflect user-defined settings.</p></li></ul></li><li><p><strong>Minimizing API Mocking to Prioritize Real Integrations</strong></p><p>Playwright provides an easy mechanism to <a href="https://playwright.dev/docs/mock#mock-api-requests">mock API requests</a>. However, we consciously minimized the use of mocks in our E2E tests. Instead, we prioritized genuine integration with our backend services</p><p>This approach allowed us to:</p><ul><li><p><strong>Test the complete flow</strong>: from creating real backend resources (such as projects with category restrictions) to verifying user interactions like saving an expense form.</p></li><li><p><strong>Detect issues early</strong>: Not just frontend regressions, but also subtle backend bugs or unexpected behaviour changes in APIs.</p></li></ul><p>Of course, there were cases where mocking became necessary&#8212;for instance, when backend APIs operated asynchronously or had slow responses. In these scenarios, selective mocking allowed us to maintain test stability and speed, effectively balancing ideal test conditions with practical constraints. By thoughtfully minimizing mocks, we increased our confidence that the E2E tests genuinely reflected the end-user experience, capturing issues across both frontend and backend layers.</p></li></ul><p></p><h3><strong>Early Impacts and Anticipated Benefits</strong></h3><p>Through our structured approach to E2E testing, we&#8217;ve already started seeing some encouraging results:</p><ul><li><p><strong>Detecting existing bugs early</strong>: We&#8217;ve uncovered a long list of hidden issues while writing our E2E tests&#8212;bugs that would have otherwise gone unnoticed until production. &#128539;</p></li></ul><p>We&#8217;re also excited about the future benefits that we anticipate from continuing this strategy:</p><ul><li><p><strong>Rapidly identifying missed behaviours</strong> or unexpected changes introduced during migration.</p></li><li><p><strong>Greater confidence in releasing major updates</strong> to the most critical parts of our web app.</p></li><li><p><strong>Achieving a smooth, successful transition</strong> from AngularJS to Angular, finally allowing us to say goodbye to our legacy codebase! &#128075;&#127995;</p></li></ul><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LpfB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a86b39e-f24d-4d9d-b868-8c8d2f7b80bc_298x498.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LpfB!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a86b39e-f24d-4d9d-b868-8c8d2f7b80bc_298x498.gif 424w, https://substackcdn.com/image/fetch/$s_!LpfB!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a86b39e-f24d-4d9d-b868-8c8d2f7b80bc_298x498.gif 848w, https://substackcdn.com/image/fetch/$s_!LpfB!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a86b39e-f24d-4d9d-b868-8c8d2f7b80bc_298x498.gif 1272w, https://substackcdn.com/image/fetch/$s_!LpfB!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a86b39e-f24d-4d9d-b868-8c8d2f7b80bc_298x498.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LpfB!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a86b39e-f24d-4d9d-b868-8c8d2f7b80bc_298x498.gif" width="320" height="534.7651006711409" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5a86b39e-f24d-4d9d-b868-8c8d2f7b80bc_298x498.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:498,&quot;width&quot;:298,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!LpfB!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a86b39e-f24d-4d9d-b868-8c8d2f7b80bc_298x498.gif 424w, https://substackcdn.com/image/fetch/$s_!LpfB!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a86b39e-f24d-4d9d-b868-8c8d2f7b80bc_298x498.gif 848w, https://substackcdn.com/image/fetch/$s_!LpfB!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a86b39e-f24d-4d9d-b868-8c8d2f7b80bc_298x498.gif 1272w, https://substackcdn.com/image/fetch/$s_!LpfB!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a86b39e-f24d-4d9d-b868-8c8d2f7b80bc_298x498.gif 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>I&#8217;d love to hear about your experiences&#8212;have you faced similar challenges or successes with E2E testing in legacy code migrations? Let me know!</p><p>Special thanks to my teammate <strong><a href="https://in.linkedin.com/in/suyash-patil">Suyash</a></strong> for closely collaborating on writing these E2E tests and helping us confidently prepare for a smooth migration! &#128640;</p>]]></content:encoded></item><item><title><![CDATA[Trekking at Fyle: 3 AM Alarms, Endless Steps, and Absolutely No Regrets]]></title><description><![CDATA[At Fyle, waking up at 3 AM to climb a mountain isn&#8217;t unusual, it&#8217;s something we keep coming back to.]]></description><link>https://stories.fylehq.com/p/trekking-at-fyle-3-am-alarms-endless</link><guid isPermaLink="false">https://stories.fylehq.com/p/trekking-at-fyle-3-am-alarms-endless</guid><dc:creator><![CDATA[Sayonee]]></dc:creator><pubDate>Thu, 13 Mar 2025 16:34:51 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!D2Nf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c6b39b-61fb-4ad6-9467-d16d32f0f549_2000x1600.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>At Fyle, waking up at 3 AM to climb a mountain isn&#8217;t unusual, it&#8217;s something we keep coming back to. Over the past few years, weekend treks have become our regime. No formal planning, no big announcements, just a Slack message from someone who&#8217;s enthu asking if anyone&#8217;s up for a climb. There&#8217;s always a group ready to go.</p><p>Hi folks, I&#8217;m <a href="https://www.linkedin.com/in/sayonee-s/">Sayonee</a> from Fyle&#8217;s product marketing team, and I&#8217;ve had the fortune of being a part of some of these awesome treks. In this blog, I&#8217;ll take you through how we go about planning these treks, why we do them, and why they&#8217;ve become so important to us!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Since 2022, we&#8217;ve covered all these <strong>treks a few times around Bangalore &#9968;&#65039;</strong>:</p><ul><li><p><strong>Skandagiri</strong> &#8211; Famous for its stunning sunrise views and a steep final stretch.</p></li><li><p><strong>Kaiwarabetta</strong> &#8211; We&#8217;ve done this so many times that, at this point, it&#8217;s Fyle&#8217;s own hill.</p></li><li><p><strong>Makalidurga</strong> &#8211; A mix of boulder hopping and history, with fort ruins at the top.</p></li><li><p><strong>Savandurga</strong> &#8211; One of Asia&#8217;s largest monoliths and an absolute leg burner. (This is where Sholay was shot, btw).</p></li><li><p><strong>Chinagabetta</strong> &#8211; A shorter yet steep trail that ends with a little rock climbing.</p></li><li><p><strong>Kodachadri</strong> &#8211; A tough forest trek with stunning peak views.</p></li></ul><p>Here are some pictures of the stunning views (and us) over the years: </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!D2Nf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c6b39b-61fb-4ad6-9467-d16d32f0f549_2000x1600.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!D2Nf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c6b39b-61fb-4ad6-9467-d16d32f0f549_2000x1600.png 424w, https://substackcdn.com/image/fetch/$s_!D2Nf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c6b39b-61fb-4ad6-9467-d16d32f0f549_2000x1600.png 848w, https://substackcdn.com/image/fetch/$s_!D2Nf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c6b39b-61fb-4ad6-9467-d16d32f0f549_2000x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!D2Nf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c6b39b-61fb-4ad6-9467-d16d32f0f549_2000x1600.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!D2Nf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c6b39b-61fb-4ad6-9467-d16d32f0f549_2000x1600.png" width="1456" height="1165" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/81c6b39b-61fb-4ad6-9467-d16d32f0f549_2000x1600.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1165,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:5176736,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://sayonee670123.substack.com/i/158980074?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c6b39b-61fb-4ad6-9467-d16d32f0f549_2000x1600.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!D2Nf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c6b39b-61fb-4ad6-9467-d16d32f0f549_2000x1600.png 424w, https://substackcdn.com/image/fetch/$s_!D2Nf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c6b39b-61fb-4ad6-9467-d16d32f0f549_2000x1600.png 848w, https://substackcdn.com/image/fetch/$s_!D2Nf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c6b39b-61fb-4ad6-9467-d16d32f0f549_2000x1600.png 1272w, https://substackcdn.com/image/fetch/$s_!D2Nf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F81c6b39b-61fb-4ad6-9467-d16d32f0f549_2000x1600.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>As a Bangalorean, I thought I knew the city and its surroundings well, but I had no idea so many incredible treks were just a short drive away. Discovering these trails has been an unexpected but amazing experience, and I&#8217;m glad I did.</p><p>In the past few months, many of these trekking spots around Bangalore were closed, which meant we had to take a break from our usual climbs. But now that they&#8217;ve reopened, we&#8217;ll be sure to go back for more.</p><h2><strong>How It Happens</strong></h2><p>This is how it usually goes down:</p><ol><li><p>Someone drops a message on Slack.</p></li><li><p>A few brave souls (usually 4-6 of us) decide that, yes, climbing a mountain before dawn sounds like a fantastic idea.</p></li><li><p>We sort out cars, tickets, and a meeting point - all while questioning our life choices.</p></li><li><p><strong>And then we actually climb. &#129495;</strong></p></li></ol><h2><strong>The Fyle Trek Experience</strong></h2><p>Every trek starts the same way: an absurdly early meeting time at 3 or 4 AM. Groggy but determined, we get into cars, turn up the music, and spend the two-hour drive discussing everything from work gossip to deep existential questions (or just vibing in comfortable silence).</p><p>By 6 AM, we reach the base and start the climb. Some treks are easier than others, but we always stick together. <a href="https://www.linkedin.com/in/yitzhak-a-b4427a1a3/?original_referer=https%3A%2F%2Fwww%2Egoogle%2Ecom%2F&amp;originalSubdomain=in">Yitzhak</a> (from our people team) leads the way, occasionally doubling back to check on folks who get stuck (the people questioning all their life decisions mid-trek). The group energy is always high&#8212;whether we&#8217;re helping each other over steep rocks or laughing at someone who insisted, &#8220;this should be easy&#8221; five minutes before gasping for breath.</p><p>And then, <strong>the best part</strong>: reaching the top. That, along with getting some pretty pictures, makes everything worth it. The quiet, the endless sky, the view, the sunrise - there&#8217;s nothing quite like it. &#127749;</p><p>One of our colleagues, <a href="https://www.linkedin.com/in/kamalini-y/?originalSubdomain=in">Kamalini</a>, had very generously packed and brought us yummy food on a few treks, and needless to say, we devoured it at the peak. </p><h2><strong>The Descent (AKA, "When's Breakfast?")</strong></h2><p>Climbing down is faster but much less patient. The sun is up, we&#8217;re sweaty, and everyone just wants to eat. Tradition dictates that we stop for breakfast on the way back, whether it&#8217;s at Adyar Ananda Bhavan or Ajantha, we always find a place to refuel.</p><p>By the time we finally get home, the exhaustion hits, but so do the happy hormones. Kicking off the day with a trek has a way of making everything else feel easier.</p><h2><strong>Why This Has Become a Fyle Tradition</strong></h2><p>Somehow, these treks have become a part of Fyle&#8217;s culture. There&#8217;s always a group of people ready to say yes to testing their endurance, and pushing themselves a little more each time.</p><p>There&#8217;s something about waking up before dawn, challenging yourself physically, and spending the morning outdoors that sets the tone for the rest of the day. It&#8217;s the kind of thing that seems like a terrible idea the night before but always ends up being worth it. And it&#8217;s safe to say, we&#8217;ll keep doing more of it.</p><p>It&#8217;s not just about the treks, though. Over time, staying active together has become second nature, whether it&#8217;s these early morning climbs or our regular Saturday runs at Cubbon Park, where a group of us gathers to clock in a few kilometers before heading for breakfast.</p><p>At Fyle, there&#8217;s space for every kind of adventurer - paragliders (yes, we have those), mountaineers (these too <strong>&#129327;</strong>), swimmers, runners, and more. With so many people pursuing different outdoor passions, there&#8217;s always something exciting happening, and everyone is encouraged to find what they love.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://stories.fylehq.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Fyle Stories! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>