You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
AI-Powered Multi-Channel Lead Outreach & Workflow Automation Platform
Build visual workflows, generate personalized AI messages, automate outreach across Email, Discord, Telegram, Slack & SMS — all in one platform.
FlowReach AI is a full-stack, production-ready lead outreach workflow automation platform inspired by tools like n8n, Make.com, and Instantly.ai. It combines a powerful visual workflow builder with AI-driven personalization to automate multi-channel outreach campaigns at scale.
What You Can Do
Capability
Description
Import Leads
Upload CSV/Excel files with smart column mapping and validation
Build Visual Workflows
Drag-and-drop 22 node types on an n8n-style canvas
Generate AI Messages
Create personalized outreach using Groq LLaMA 3.3 70B
Natural language AI assistant for content & workflow creation
Manage Channels
Connect and configure WhatsApp, Telegram, Discord, Slack accounts
Manage Credentials
Securely store API keys for 8+ providers
Manage Profile
Update personal info, upload avatar photo, view account details
✨ Key Features
� Authentication & Route Protection
Supabase Auth Integration: Full email/password authentication powered by Supabase
Sign In Page: Clean split-screen design with credentials form on the right and branding panel on the left
Sign Up Flow:
User signs up with email and password via supabase.auth.signUp()
If email confirmation is required (no auto-session), user is shown a success message: "Your account has been created. Please check your email and verify your address before logging in."
Email is pre-filled on the sign-in form after successful signup
No auto-redirect until the email is verified and a real session exists
Sign In Flow:
User signs in with supabase.auth.signInWithPassword()
On success, redirects to /dashboard
On error, displays the error message inline below the form
Google OAuth: "Continue with Google" button using supabase.auth.signInWithOAuth({ provider: 'google' })
Requires Google OAuth credentials configured in Supabase Dashboard → Authentication → Providers → Google
Requires redirect URI https://<your-project>.supabase.co/auth/v1/callback added in Google Cloud Console
Route Protection:
AppLayout checks for an active Supabase session via supabase.auth.getSession()
If no session exists, user is redirected to / (sign-in page)
Listens to onAuthStateChange for real-time session updates (login/logout)
Shows a loading spinner while session is being verified
Auto-Redirect: If a user visits / while already authenticated, they are automatically redirected to /dashboard
Session Persistence: Supabase handles session tokens and refresh automatically
�📊 Dashboard & Analytics
4 real-time stat cards: Total Leads, Total Workflows, Active Workflows, Total Executions
Bar Chart: Leads distribution by status (new, contacted, replied, converted, bounced)
Line Chart: Messages sent over the last 7 days with daily breakdown
Channel credentials as needed (Discord, Telegram, Slack, etc.)
The frontend uses VITE_API_URL="" in production, so API requests go to the same origin
🔐 Environment Variables
Variable
Required
Default
Description
SUPABASE_URL
✅ Yes
—
Your Supabase project URL
SUPABASE_SERVICE_ROLE_KEY
✅ Yes
—
Supabase service role key (from Project Settings → API)
GROQ_API_KEY
❌ No
—
Groq API key for AI generation. Without it, AI features return realistic mock data
PORT
❌ No
3001
Backend Express server port
FRONTEND_URL
❌ No
http://localhost:5173
CORS allowed origin for the frontend
SMTP_HOST
❌ No
—
SMTP server hostname (e.g., smtp.gmail.com)
SMTP_PORT
❌ No
587
SMTP port (587 for TLS, 465 for SSL)
SMTP_USER
❌ No
—
SMTP login username/email
SMTP_PASS
❌ No
—
SMTP login password (use app-specific passwords)
SMTP_FROM
❌ No
—
Default "From" email address
DAILY_SEND_LIMIT
❌ No
50
Maximum emails allowed per day
DISCORD_WEBHOOK_URL
❌ No
—
Discord channel webhook URL
TELEGRAM_BOT_TOKEN
❌ No
—
Telegram Bot API token (from @BotFather)
TELEGRAM_CHAT_ID
❌ No
—
Default Telegram chat ID for sends
SLACK_WEBHOOK_URL
❌ No
—
Slack incoming webhook URL
WHATSAPP_ACCESS_TOKEN
❌ No
—
Meta Cloud API access token for WhatsApp
WHATSAPP_PHONE_NUMBER_ID
❌ No
—
WhatsApp phone number ID
WHATSAPP_VERIFY_TOKEN
❌ No
flowreach-verify
Webhook verification token for WhatsApp
TWILIO_ACCOUNT_SID
❌ No
—
Twilio account SID for SMS
TWILIO_AUTH_TOKEN
❌ No
—
Twilio auth token
TWILIO_WHATSAPP_NUMBER
❌ No
—
Twilio WhatsApp sender number
VITE_API_URL
❌ No
http://localhost:3001
Frontend API base URL (empty string in production for same-origin)
Note: If SMTP is not configured, the email node uses Ethereal Email — a free test email service that captures emails without sending them. Similarly, Discord, Telegram, and Slack nodes log informative messages when their respective credentials are missing.
Calls Groq SDK with prompt + lead data, stores result in messages table, passes generated text to next node
Email
Checks blacklist → checks daily limit → sends via SMTP (or Ethereal) → logs result in messages table
Delay
setTimeout with configured duration (max 10 seconds in demo mode)
Condition
Evaluates lead field against operator + value, follows Yes or No edge
Update Lead
Updates lead status in leads table
AI Agent
Calls specified AI provider (Groq/OpenAI/etc.) with system + user prompts
Filter
Evaluates filter criteria, follows Match or No Match edge
Split
Routes to A or B path based on mode (random, percentage, field value)
HTTP Request
Makes external HTTP call, captures response for next node
Code
Executes JavaScript code in controlled context
Summarizer
Summarizes input text using AI
Classifier
Classifies input into provided categories
SMS
Sends SMS via Twilio (if credentials configured)
Slack
Posts message to Slack channel via webhook (if configured)
Discord
Posts message to Discord channel via webhook URL
Telegram
Sends message via Telegram Bot API (sendMessage)
WhatsApp
Sends message via Meta Cloud API / Twilio WhatsApp
Merge
Combines data from multiple input branches
End
Marks execution as completed, emits completion event
Error Resilience
Each node execution is wrapped in try/catch
A failing node logs the error but doesn't crash the workflow
Execution status is set to failed only if an unrecoverable error occurs
All errors are emitted via Socket.io for real-time visibility
Log levels: info, warn, error — each stored with timestamp and node ID
📄 Pages & Components
All Pages (21 Routes)
Route
Page Component
Description
/
LandingPage.jsx
Authentication page — Split-screen design with Sign In / Sign Up forms, Google OAuth, Supabase Auth integration. Auto-redirects to /dashboard if already logged in.
/dashboard
Dashboard.jsx
Analytics dashboard with 4 stat cards, bar chart (leads by status), line chart (messages/7 days), Kanban board (4 columns), recent leads table. Auto-refreshes every 10s.
/leads
Leads.jsx
Two tabs: All Leads (searchable table with pagination, status filters, edit/delete) and Import (3-step CSV/Excel wizard). Download Sample CSV button.
/workflows
Workflows.jsx
Grid of workflow cards with Load Templates, Create New, Duplicate, Delete. Shows node count, edge count, active status, last updated.
/workflows/:id
WorkflowBuilder.jsx
Full React Flow canvas with categorized node palette (7 categories, 22 nodes, search), NodeConfigPanel right sidebar, MiniMap, controls, save/execute buttons, lead selection modal.
/executions
Executions.jsx
Two tabs: Live Feed (real-time Socket.io log stream) and History (execution list with expandable logs). Stat cards: Total, Completed, Failed, Running.
/messages
Messages.jsx
Message history across all channels. Filter by type, status, channel. Search by lead or content. Expandable message cards with full details.
/channels
Channels.jsx
Channel account management for WhatsApp, Telegram, Discord, Slack. Add/edit/disconnect accounts. Status indicators and config forms per channel type.
/ai
AIChat.jsx
Three sub-views: Chat (conversational AI with 6 quick prompts), Message Generator (form with lead picker, channel selector, personalization, bulk send), Workflow Creator (natural language → workflow graph).
/settings
Settings.jsx
Three tabs: Safety Score (SVG arc gauge, 7 checks), Blacklist (add/remove/search), API Keys (credential CRUD for 8 providers). Reset Demo Data button.
/profile
Profile.jsx
Profile management with avatar photo upload (Supabase Storage), personal info form (name, email, phone, company, title, bio, timezone), account info card (plan, member since).
/templates
Templates.jsx
Message templates management.
/lead-scoring
LeadScoring.jsx
AI-powered lead scoring and prioritization.
/ab-testing
ABTesting.jsx
A/B testing for outreach campaigns.
/email-tracking
EmailTracking.jsx
Email open and click tracking analytics.
/follow-ups
FollowUpSequences.jsx
Automated follow-up sequence management.
/webhooks
Webhooks.jsx
Webhook configuration and management.
/lead-enrichment
LeadEnrichment.jsx
AI-powered lead data enrichment.
/analytics-export
AnalyticsExport.jsx
Export analytics data and reports.
/crm
CRMIntegrations.jsx
CRM integration settings and sync.
/calendar
CalendarIntegration.jsx
Calendar integration for meeting scheduling.
/team
TeamCollaboration.jsx
Team collaboration and role management.
Core Components
Component
File
Purpose
AppLayout
components/AppLayout.jsx
Root layout wrapping all protected pages. Contains Sidebar + <Outlet> + keyboard shortcut system + floating keyboard hint button. Includes Supabase session guard — redirects unauthenticated users to /.
Sidebar
components/Sidebar.jsx
Left navigation with 4 sections (Overview, AI, Tools, Metrics). 9 nav links. Brand logo, profile area at bottom.
Header
components/Header.jsx
Top bar with Socket.io connection status indicator, notification area.
Paginated table (50/page). Search across name, email, company. Color-coded status badges. Edit/delete per row.
NodeConfigPanel
components/NodeConfigPanel.jsx
Right sidebar form panel in WorkflowBuilder. Renders different config forms based on selected node type. Supports all 22 node types with credential linking.
AIPreviewModal
components/AIPreviewModal.jsx
Modal showing AI-generated message previews for up to 5 leads. Shows subject, body, tone, source (Groq/Mock). Copy-to-clipboard + regenerate buttons.
UI Component Library
16 reusable UI components based on Radix UI primitives in components/ui/:
The safety score is a 100-point gauge that evaluates your outreach setup:
Check
Points
Description
SMTP Configured
20 pts
SMTP credentials exist (env or database)
AI Provider Key
20 pts
At least one AI credential configured
Blacklist Active
15 pts
At least one blacklist entry exists
Daily Limit Reasonable
15 pts
Daily send limit is under 200
Workflows Created
10 pts
At least 1 workflow exists
Leads Imported
10 pts
At least 1 lead exists
Within Daily Limit
10 pts
Today's sends haven't exceeded the limit
The safety score is displayed as an animated SVG arc gauge on the Settings page with a color gradient from red (0) to green (100).
📋 Built-in Workflow Templates
Load these with the "Load Templates" button on the Workflows page:
1. Cold Outreach Sequence
Start → AI Generate (cold email) → Email Send → Delay (3 days) → Condition (replied?)
→ Yes: Update Lead (replied)
→ No: AI Generate (follow-up) → Email Send → End
2. Lead Nurture Drip
Start → AI Generate (welcome email) → Email Send → Delay (2 days) → Update Lead (contacted) → End
3. Re-engagement Campaign
Start → Condition (status = bounced?)
→ Yes: AI Generate (win-back) → Email Send → End
→ No: Update Lead (unsubscribed) → End
4. AI-Powered Lead Scoring
Start → AI Agent (score lead 1-100) → Condition (score > 70?)
→ Yes: Update Lead (contacted) → Email Send → End
→ No: Delay (7 days) → End
5. Multi-Channel Outreach
Start → Split (50/50 A/B)
→ Path A: AI Generate → Email Send → Delay (1 day) → End
→ Path B: Discord/Telegram/Slack Send → Delay (2 days) → End
🧑💻 Development Scripts
# Install all dependencies (root + frontend + backend)
npm run install:all
# Start both frontend & backend concurrently
npm run dev
# Start frontend only (Vite on port 5173)
npm run dev:frontend
# Start backend only (Express on port 3001)
npm run dev:backend
# Seed demo data (50 leads, 12 executions, etc.)cd backend && npm run seed
# Build frontend for productioncd frontend && npm run build
# Lint frontend codecd frontend && npm run lint
🔧 Troubleshooting
Issue
Solution
EADDRINUSE: address already in use :::3001
Kill the process using port 3001: taskkill /F /IM node.exe (Windows) or lsof -ti:3001 | xargs kill (Mac/Linux)
Port 5173 is in use
Vite auto-picks the next port (5174). Or kill existing processes first.
AI features returning mock data
Set GROQ_API_KEY in backend/.env or add a Groq credential in Settings → API Keys
Emails not sending
Configure SMTP in .env or add SMTP credential in Settings. Without SMTP, emails go to Ethereal (test).
Database connection errors
Verify SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY in backend/.env
Socket.io not connecting
Ensure backend is running. Check browser console for WebSocket errors. Try the reconnect button.
Workflow execution fails
Check the execution logs in Executions → History. Ensure the workflow has a Start node.
Discord messages not sending
Verify DISCORD_WEBHOOK_URL is set correctly in .env or as a credential
Telegram messages not sending
Verify TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID are set. Ensure the bot has permission to send to the chat.
Slack messages not sending
Verify SLACK_WEBHOOK_URL is set. Ensure the webhook is active in your Slack workspace.
Build fails
Run cd frontend && npx vite build to see specific errors. Ensure Node.js ≥ 20.x.
📊 Project Metrics
Metric
Value
Total Source Files
90+
Frontend Pages
21
Frontend Components
56 (22 nodes + 21 pages + 7 core + 16 UI)
Backend Route Files
10
API Endpoints
51+
Workflow Node Types
22
Database Tables
11
Communication Channels
5 (Email, Discord, Telegram, Slack, SMS)
AI Providers Supported
4 (Groq, OpenAI, Anthropic, Google)
Service Layer Functions
30+
Credential Types
8
Seed Workflow Templates
5
Socket.io Event Types
2 (log, status)
Safety Score Checks
7
Keyboard Shortcuts
8
Vite Build Modules
2,719
👥 Team
Team S8UL — Built for COHERENCE-26 Hackathon
📜 License
This project was built for the COHERENCE-26 hackathon. All rights reserved.
Built with ❤️ by Team S8UL
React · Express · Supabase · Groq AI · Socket.io · Tailwind CSS
Email · Discord · Telegram · Slack · SMS
About
FlowReachAI is an AI-driven workflow automation platform that simplifies complex processes, boosts efficiency, and connects tools seamlessly using smart integrations and adaptive intelligence