<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="atom.xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://consultflow.vercel.app/blog</id>
    <title>ConsultFlow Blog</title>
    <updated>2024-12-26T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://consultflow.vercel.app/blog"/>
    <subtitle>ConsultFlow Blog</subtitle>
    <icon>https://consultflow.vercel.app/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[Building ConsultFlow - The Journey]]></title>
        <id>https://consultflow.vercel.app/blog/building-consultflow</id>
        <link href="https://consultflow.vercel.app/blog/building-consultflow"/>
        <updated>2024-12-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[ConsultFlow started as a solution to a common problem: the tedious, repetitive work that follows every meeting in consulting environments.]]></summary>
        <content type="html"><![CDATA[<p>ConsultFlow started as a solution to a common problem: the tedious, repetitive work that follows every meeting in consulting environments.</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-problem">The Problem<a href="https://consultflow.vercel.app/blog/building-consultflow#the-problem" class="hash-link" aria-label="Direct link to The Problem" title="Direct link to The Problem" translate="no">​</a></h2>
<p>As consultants, we spend countless hours on post-meeting tasks:</p>
<ul>
<li class="">Writing meeting minutes</li>
<li class="">Sending follow-up emails</li>
<li class="">Scheduling next meetings</li>
<li class="">Updating team channels</li>
</ul>
<p>These tasks are essential but repetitive. What if we could automate them?</p>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-vision">The Vision<a href="https://consultflow.vercel.app/blog/building-consultflow#the-vision" class="hash-link" aria-label="Direct link to The Vision" title="Direct link to The Vision" translate="no">​</a></h2>
<p>I envisioned a platform that could:</p>
<ol>
<li class=""><strong>Transform meeting transcripts</strong> into structured documents using AI</li>
<li class=""><strong>Automate Microsoft 365 actions</strong> like email, calendar, and Teams</li>
<li class=""><strong>Provide a visual workflow builder</strong> for non-technical users</li>
<li class=""><strong>Execute workflows with one click</strong></li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="technical-journey">Technical Journey<a href="https://consultflow.vercel.app/blog/building-consultflow#technical-journey" class="hash-link" aria-label="Direct link to Technical Journey" title="Direct link to Technical Journey" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="choosing-the-stack">Choosing the Stack<a href="https://consultflow.vercel.app/blog/building-consultflow#choosing-the-stack" class="hash-link" aria-label="Direct link to Choosing the Stack" title="Direct link to Choosing the Stack" translate="no">​</a></h3>
<p><strong>Frontend:</strong> I chose Next.js 14 with the App Router for its modern patterns and excellent developer experience. Tailwind CSS handles styling with a custom dark theme inspired by modern tools like n8n and Linear.</p>
<p><strong>Backend:</strong> Express.js with TypeScript provides a flexible, type-safe API layer. MongoDB stores workflows and execution logs as documents—a natural fit for the flexible schema needs.</p>
<p><strong>AI:</strong> OpenAI's GPT models power the MOM generation. The structured prompting ensures consistent, professional output.</p>
<p><strong>Authentication:</strong> Azure AD OAuth 2.0 enables seamless Microsoft integration. Users sign in once and access all Microsoft 365 services.</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="the-workflow-builder">The Workflow Builder<a href="https://consultflow.vercel.app/blog/building-consultflow#the-workflow-builder" class="hash-link" aria-label="Direct link to The Workflow Builder" title="Direct link to The Workflow Builder" translate="no">​</a></h3>
<p>The visual workflow builder uses React Flow, a powerful library for node-based editors. Users can:</p>
<ul>
<li class="">Drag actions from a sidebar</li>
<li class="">Connect nodes to create flows</li>
<li class="">Configure each node with specific settings</li>
<li class="">Save and execute with one click</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="ai-powered-mom-generation">AI-Powered MOM Generation<a href="https://consultflow.vercel.app/blog/building-consultflow#ai-powered-mom-generation" class="hash-link" aria-label="Direct link to AI-Powered MOM Generation" title="Direct link to AI-Powered MOM Generation" translate="no">​</a></h3>
<p>The MOM generator uses a carefully crafted prompt that instructs GPT to:</p>
<ul>
<li class="">Extract key discussion points by speaker</li>
<li class="">Identify action items with assignees and dates</li>
<li class="">Summarize in a concise abstract</li>
<li class="">Format everything in professional Markdown</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="microsoft-graph-integration">Microsoft Graph Integration<a href="https://consultflow.vercel.app/blog/building-consultflow#microsoft-graph-integration" class="hash-link" aria-label="Direct link to Microsoft Graph Integration" title="Direct link to Microsoft Graph Integration" translate="no">​</a></h3>
<p>The trickiest part was integrating with Microsoft Graph API:</p>
<ul>
<li class="">Token management (access + refresh tokens)</li>
<li class="">Permission scopes (Mail.Send, Calendars.ReadWrite, etc.)</li>
<li class="">Error handling for various failure modes</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="lessons-learned">Lessons Learned<a href="https://consultflow.vercel.app/blog/building-consultflow#lessons-learned" class="hash-link" aria-label="Direct link to Lessons Learned" title="Direct link to Lessons Learned" translate="no">​</a></h2>
<ol>
<li class="">
<p><strong>Start with the user flow</strong> - I designed the UI first, then built the backend to support it.</p>
</li>
<li class="">
<p><strong>AI needs structure</strong> - Detailed prompts with specific formatting instructions produce consistent output.</p>
</li>
<li class="">
<p><strong>OAuth is complex</strong> - Token refresh, scope management, and error handling require careful attention.</p>
</li>
<li class="">
<p><strong>Dark themes matter</strong> - Users spend hours in these tools; a well-designed dark theme reduces eye strain.</p>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="whats-next">What's Next<a href="https://consultflow.vercel.app/blog/building-consultflow#whats-next" class="hash-link" aria-label="Direct link to What's Next" title="Direct link to What's Next" translate="no">​</a></h2>
<p>ConsultFlow is just the beginning. Planned features include:</p>
<ul>
<li class="">Scheduled workflow triggers</li>
<li class="">PowerPoint generation</li>
<li class="">More AI-powered actions</li>
<li class="">Team collaboration features</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="try-it-yourself">Try It Yourself<a href="https://consultflow.vercel.app/blog/building-consultflow#try-it-yourself" class="hash-link" aria-label="Direct link to Try It Yourself" title="Direct link to Try It Yourself" translate="no">​</a></h2>
<p>ConsultFlow is open source! Check out the <a class="" href="https://consultflow.vercel.app/docs">documentation</a> to get started.</p>
<p>Built with ❤️ by <a href="https://github.com/srs-sudeep" target="_blank" rel="noopener noreferrer" class="">@srs-sudeep</a></p>]]></content>
        <author>
            <name>Sudeep SRS</name>
            <uri>https://github.com/srs-sudeep</uri>
        </author>
        <category label="ConsultFlow" term="ConsultFlow"/>
        <category label="Development" term="Development"/>
        <category label="AI" term="AI"/>
        <category label="Automation" term="Automation"/>
    </entry>
</feed>