Takes about 5 minutes. Do this once — then your platform is live forever.
Step 1 — Create your free Supabase database
Supabase is your real database — it stores all your customers, logins, tickets, and subscriptions. It's completely free to start.
1️⃣ Go to supabase.com → Create account → New Project
2️⃣ Pick any name (e.g. "floi-ai") and a strong password → Create
3️⃣ Wait ~2 minutes for setup to finish
4️⃣ Go to Project Settings → API
5️⃣ Copy your Project URL and anon public key
Supabase Project URL
Supabase Anon Key (public)
Your Owner Email (gets Platform Admin access)
Stripe Publishable Key (optional — add later)
Step 2 — Create your tables
Copy this SQL and run it in your Supabase dashboard: SQL Editor → New Query → Paste → Run
-- ═══════════════════════════════════════════════
-- FLOI AI — SUPABASE DATABASE SCHEMA
-- Paste this in: Supabase Dashboard → SQL Editor → Run
-- ═══════════════════════════════════════════════
-- Enable UUID extension
create extension if not exists "uuid-ossp";
-- ── USER PROFILES ──
create table if not exists profiles (
id uuid references auth.users(id) on delete cascade primary key,
email text not null,
full_name text,
plan text not null default 'Starter',
workspace_id uuid not null default gen_random_uuid(),
stripe_customer_id text,
brand_name text,
industry text default 'saas',
created_at timestamptz not null default now(),
updated_at timestamptz not null default now()
);
alter table profiles enable row level security;
create policy "Users can view own profile" on profiles for select using (auth.uid() = id);
create policy "Users can update own profile" on profiles for update using (auth.uid() = id);
create policy "Users can insert own profile" on profiles for insert with check (auth.uid() = id);
-- ── LOGIN EVENTS ──
create table if not exists login_events (
id uuid default gen_random_uuid() primary key,
user_id uuid references auth.users(id) on delete cascade,
email text,
user_agent text,
ip text,
workspace_id uuid,
created_at timestamptz not null default now()
);
alter table login_events enable row level security;
create policy "Users can insert own login" on login_events for insert with check (auth.uid() = user_id);
create policy "Users can view own logins" on login_events for select using (auth.uid() = user_id);
-- ── SUPPORT TICKETS ──
create table if not exists tickets (
id uuid default gen_random_uuid() primary key,
workspace_id uuid not null,
user_id uuid references auth.users(id) on delete cascade,
user_name text,
user_email text,
subject text not null,
message text,
status text not null default 'open',
priority text default 'medium',
ai_reply text,
created_at timestamptz not null default now(),
updated_at timestamptz not null default now()
);
alter table tickets enable row level security;
create policy "Workspace members can view tickets" on tickets for select using (workspace_id = (select workspace_id from profiles where id = auth.uid()));
create policy "Workspace members can insert tickets" on tickets for insert with check (workspace_id = (select workspace_id from profiles where id = auth.uid()));
create policy "Workspace members can update tickets" on tickets for update using (workspace_id = (select workspace_id from profiles where id = auth.uid()));
-- ── DATA SUBSCRIPTIONS ──
create table if not exists data_subscriptions (
id uuid default gen_random_uuid() primary key,
workspace_id uuid not null,
user_id uuid references auth.users(id) on delete cascade,
dataset_id text not null,
stripe_subscription_id text,
status text default 'active',
created_at timestamptz not null default now(),
unique(workspace_id, dataset_id)
);
alter table data_subscriptions enable row level security;
create policy "Users can view own subscriptions" on data_subscriptions for select using (workspace_id = (select workspace_id from profiles where id = auth.uid()));
-- ═══ EMPLOYEE LIFECYCLE TABLES (v8) ═══
create table if not exists employees (
id uuid primary key default gen_random_uuid(),
workspace_id uuid not null,
name text not null,
job_title text,
role text,
department text,
employment_type text default 'Full-Time',
hourly_rate numeric default 0,
email text,
photo_url text,
hire_date date default current_date,
status text default 'active',
position_history jsonb default '[]',
created_at timestamptz default now()
);
create policy "Workspace members can manage employees" on employees
using (workspace_id = (select workspace_id from profiles where id = auth.uid()));
create table if not exists position_history (
id uuid primary key default gen_random_uuid(),
employee_id uuid references employees(id) on delete cascade,
workspace_id uuid not null,
change_type text not null,
previous_title text,
new_title text,
previous_dept text,
new_dept text,
previous_rate numeric,
new_rate numeric,
employment_type text,
notes text,
changed_at timestamptz default now()
);
create policy "Workspace members can view position history" on position_history
using (workspace_id = (select workspace_id from profiles where id = auth.uid()));
create table if not exists clock_records (
id uuid primary key default gen_random_uuid(),
employee_id text not null,
workspace_id uuid not null,
clock_type text not null,
ts bigint not null,
date date not null,
time_str text,
created_at timestamptz default now()
);
create policy "Workspace members can manage clock records" on clock_records
using (workspace_id = (select workspace_id from profiles where id = auth.uid()));
create table if not exists payroll_runs (
id uuid primary key default gen_random_uuid(),
workspace_id uuid not null,
period_start date,
period_end date,
run_date timestamptz default now(),
total_amount numeric default 0,
employee_count int default 0,
details jsonb default '[]'
);
create policy "Workspace members can manage payroll runs" on payroll_runs
using (workspace_id = (select workspace_id from profiles where id = auth.uid()));
create table if not exists meetings (
id uuid primary key default gen_random_uuid(),
workspace_id uuid not null,
title text not null,
date timestamptz,
zoom_link text,
attendees text,
notes text,
transcript text,
important boolean default false,
created_at timestamptz default now()
);
create policy "Workspace members can manage meetings" on meetings
using (workspace_id = (select workspace_id from profiles where id = auth.uid()));
create policy "Users can insert own subscriptions" on data_subscriptions for insert with check (user_id = auth.uid());
-- ── WORKSPACE MEMBERS ──
create table if not exists workspace_members (
id uuid default gen_random_uuid() primary key,
workspace_id uuid not null,
invited_by uuid references auth.users(id),
name text not null,
email text not null,
role text not null default 'Viewer',
status text default 'active',
created_at timestamptz not null default now(),
unique(workspace_id, email)
);
alter table workspace_members enable row level security;
create policy "Workspace members can view members" on workspace_members for select using (workspace_id = (select workspace_id from profiles where id = auth.uid()));
create policy "Workspace admins can insert members" on workspace_members for insert with check (workspace_id = (select workspace_id from profiles where id = auth.uid()));
-- ── PLATFORM ADMIN VIEW (owner sees all — bypasses RLS via service role) ──
-- When you query with the SERVICE ROLE key, RLS is bypassed and you see all rows.
-- NEVER expose your service role key in the frontend.
-- For the Platform Admin panel, all queries use the anon key + owner check via email.
-- The app grants "owner" status if the logged-in email matches the owner email you set in Setup.
-- ── AUTO-UPDATE updated_at ──
create or replace function update_updated_at()
returns trigger as $$
begin new.updated_at = now(); return new; end;
$$ language plpgsql;
create trigger trg_profiles_updated before update on profiles for each row execute function update_updated_at();
create trigger trg_tickets_updated before update on tickets for each row execute function update_updated_at();
Create a Payment Link in your Stripe dashboard for each plan. Paste the links in Settings → Stripe Setup. When customers click Subscribe, they go to your real Stripe checkout.
✦ Enterprise operations — without the enterprise complexity
The Operating System Your Business Runs On
HR. Payroll. Meetings. Support. AI intelligence — unified in one platform. Every department accountable, every decision informed, every record permanent.
10k+
Companies
100%
Audit-ready
5×
Faster operations
5
Industries
Features
Built for How Real Businesses Operate
Not just software — the operational backbone companies embed so deep, removing it becomes unthinkable.
👥
Workforce & HR
Clock in/out timestamps, employee profiles with position history, overtime auto-flagging, and a full audit trail on every person on your team — down to the minute.
🤖
AI Business Intelligence
Ask your business anything. Floi AI analyzes your workforce data, meetings, expenses, and operations to surface answers executives can actually act on.
🎥
Meeting Intelligence
Every meeting scheduled, captured, and AI-summarized. Mark what matters, archive the rest. Nothing lost — every decision documented.
💰
Payroll & Expense Control
Role-based pay rates, automated weekly payroll, 1.5× overtime calculated instantly, and expense tracking by category. Run payroll in one click — no spreadsheets.
🎫
Customer Support
Tickets triaged, routed, and AI-drafted in your brand voice. Your team approves and sends in one click — faster resolutions, lower support cost.
📊
Report Builder
Boardroom-ready reports in seconds. Financial, operational, sales, marketing — ask a question, get a polished report your team can present immediately.
✍️
Content Studio
Emails, proposals, and social posts drafted in your voice. Industry-aware, brand-accurate, and ready to send — never start from a blank page again.
🏢
Multi-Company Architecture
Run multiple companies from a single seat. Every workspace is isolated, every team is managed, and you see everything from the top — with complete control.
💾
Permanent, Auditable Records
Every employee record, payroll run, meeting transcript, and expense entry stored permanently. Exportable, auditable, and always exactly where you left it.
How it works
Operational from day one
No engineers. No implementation fees. No six-month rollout.
1
Build your company profile
Add employees, set departments, assign roles and pay rates. Every team member structured and accountable from the start.
2
Your team works — Floi AI watches
Team members clock in, attend meetings, and handle customers. Every action logged, every hour tracked, automatically — 24/7.
3
You run the business with confidence
Payroll in one click. Every meeting on record. Every expense tracked. Real-time visibility across the entire operation — no gaps.
Pricing
One platform. Every tool you need.
Replace 5+ separate tools. No contracts. Cancel anytime.
Save 20% annually
💡 The average business spends $1,400/mo on HR software, payroll tools, CRM, meeting platforms, and data subscriptions separately. Floi AI replaces all of it starting at $49/mo.
Starter
$49
per month
Up to 5 team members
🎬 10 video ads/month (10s max)
AI Assistant — unlimited messages
HR & Employee Management
Payroll & Expense Tracker
Meetings + AI Summarizer
Customer Support Tickets
Report Builder
Custom branding + logo
Most Popular
Growth
$149
per month
Up to 15 team members
🎬 25 video ads/month (30s max)
Everything in Starter
Data Marketplace — 1 dataset included
Content Studio
Advanced Payroll (OT, KPIs)
Team roles & permissions
Industry workflow presets
Priority support
14 days free · No credit card required
Scale
$399
per month
Up to 50 team members
🎬 50 video ads/month (60s max)
Everything in Growth
Full Data Marketplace — all datasets
Custom domain
API access
Advanced analytics
Dedicated account manager
Custom integrations
14 days free · No credit card required
Enterprise
Custom
volume pricing
Unlimited team members
🎬 Unlimited video ads
Everything in Scale
Unlimited workspaces
Dedicated AI model
SSO & SCIM
99.99% SLA guarantee
White-glove onboarding
24/7 premium support
Typically < $999/mo · Negotiated annually
All plans include: SSL security · 99.9% uptime · Automatic updates · Mobile responsive · Supabase cloud database
Built for the business you're trying to build.
The companies that win don't run on a dozen disconnected tools. They run on one system that knows everything, tracks everything, and gives leadership total control. That's Floi AI.
🔔 Notifications
No notifications yet
📢 Post to Social
Select platforms to post to
Media attached:
🤖
Client Hub
Powered by Floi AI
Loading your invoices…
📁 No documents shared yet. Your provider will share documents here when available.
Secure client portal · Powered by Floi AI
🤖
Floi AI
Dashboard
OWNER
Your workspace at a glance
🔔
MRR
—
Active Users
—
Churn Rate
—
NPS Score
—
Recent Activity
No activity yet — start using the platform to see events here
AI Usage This Week
Support Replies2,140
Reports47
Content Drafts312
Chat Queries8,992
Quick Actions
📈
AI Strategist
Get business advice
🎫
Open Tickets
5 need attention
📊
Generate Report
Sales, ops, finance
🎨
Set Your Brand
Name, color, logo
AI powered by platform · Start typing to chat
Total Billed
$0
Paid
$0
Outstanding
$0
Overdue
0
#
Client
Amount
Status
Due Date
Actions
Invoice Builder
BILL FROM
BILL TO
LINE ITEMS
Description
Qty
Unit Price
Total
Subtotal$0.00
Tax (%)
Grand Total$0.00
Portal Clients
No portal clients yet — add your first client
Portal Settings
PORTAL PREVIEW (what clients see)
Client Hub
Welcome! Here you can view your invoices and documents.
AI-generated — review before use. Generate multiple versions to find the right fit.
📱 Social Media Accounts
Connect your social accounts so the platform can post your video ads and content automatically. Each platform takes ~5 minutes — click "How do I get this?" for step-by-step instructions.
Add / Update Account
Tokens are stored securely and never shared.
Social API Proxy URL (optional — for direct posting)
Deploy the included Netlify Function to enable real-time posting. Leave blank for queued/simulated mode.
⚙️ Video Generation API ConfigOWNER ONLY
🎬 Video Generation API
Connect Replicate to power the AI Video Ad Generator. Your customers use credits from their plan; Platform Admin has unlimited access.
No saved video ads yet. Generate one and click Save to Library.
🔍
⚡ Live Meta data: Get a free token at developers.facebook.com/tools/explorer → paste it in Settings → AI Configuration → Meta Ad Library Token to pull real running ads.
Connected Apps
REST API
Your API Key
API Reference
POST/v1/chat— Send a message to the AI
curl -X POST https://api.floiai.ai/v1/chat \ -H "Authorization: Bearer YOUR_KEY" \ -d '{"message": "Summarize sales this week"}'
6 datasets · Real-time behavioral data · Updated every 24–72h
Data as a Service
Stop guessing. Buy intent data that converts.
Access the same 60B+ weekly behavioral signals used by 1,000+ agencies to win $2,500–$10K/mo clients. Every dataset is refreshed in real-time and matched to live profiles you can deploy on any ad platform today.
60B+
signals/week
48h
avg refresh rate
1,000+
agencies using this
$2.5K+
avg client value
Monthly Revenue
$0
↑ recurring
Active Subscribers
0
↑ growing
Your Datasets
0
↑ listed
Avg Price
$0
/mo per dataset
Your Data Products
Dataset Name
Category
Records
Price
Subs
Revenue
Status
List a New Dataset
Your Workspace
My Team Admin
Manage your team, track logins, and see your data subscriptions. Only you and your team members are visible here.
Workspace Admin
Team Members
—
in your workspace
Active Now
—
online today
Data Subscriptions
—
active datasets
Monthly Data Spend
—
recurring
Team Members
Member
Role
Last Login
Sessions
Status
Actions
All logins by your team members. Only your workspace — no other companies' data is visible here.
Member
Role
Location
Device
IP
Time
Status
Datasets your workspace is currently subscribed to.
${DAAS_CATALOG ? '' : ''}
Invite a Team Member
They'll get access to your workspace only. You control their role and permissions.
🔒
Platform Owner Console
This console is restricted to the platform owner account. Sign in with your owner email to access it.
Access is automatic — no PIN needed. Just log in as the owner.
Platform Owner Only
Platform Admin Console
Owner
Total Users
—
+0 today
Active Users
—
-0 this week
Live Right Now
—
active sessions
MRR
—
— ARR
Revenue by Plan
Live Activity Feed
Live Sessions
— users online right now
User
Plan
Location
Device
Current Action
Session Time
IP
Auto-refreshes every 8 seconds · Login within last 30 min = live
Login Audit Log
User
Plan
Location
Device
IP Address
Time
Status
User
Plan
Location
Joined
Last Active
Revenue
Sessions
Status
Actions
All Systems
● All Operational
Last checked: just now
90-Day Uptime History
Each bar = 1 day · Green = operational · Red = incident
90 days agoToday
Honest CEO Briefing
What you need to handle millions of users for decades
The app you have today is a fully-featured prototype. It runs in the browser with no server. To sell to enterprise clients and handle millions of users 24/7 for decades without downtime, you need the stack below. None of it is complicated — and much of it is free to start.
Replace localStorage with Supabase (Postgres). Stores all users, logins, tickets, data purchases. Scales to billions of rows. Built-in real-time subscriptions so the admin panel shows live data. Takes 1 afternoon to set up. supabase.com →
🔐 2. Real Auth — Clerk or Supabase Auth (free → $25/mo)
Every login is tracked with IP, device, timestamp, and geographic data — exactly what the admin panel shows. Social login (Google, GitHub), MFA, and SOC 2-compliant audit logs. clerk.com →
💳 3. Billing — Stripe (0% → 0.5% at scale)
Recurring subscriptions, usage billing, invoices, dunning management. When a client pays $2,500/mo or $10K/mo, Stripe handles it automatically. One webhook connects it to Supabase so MRR updates in real-time. stripe.com →
Deploy the frontend to Vercel (global CDN, 99.99% uptime SLA). Route through Cloudflare for DDoS protection, caching, and performance. Tens of millions of requests for essentially $0 until you're scaling hard. vercel.com →
📈 5. Analytics — PostHog (free for 1M events/mo)
Track every click, page view, feature use, and conversion. This is what powers the real version of the admin overview — funnel analysis, retention cohorts, feature flags. posthog.com →
✅ Total monthly cost to start
$0–$50/month to run everything until you hit thousands of paying users. The prototype you have right now is worth demoing to enterprise clients today. When they say yes, build the backend. That's the right order.
When you're ready to build the real backend, say:
"Build me the Supabase + Clerk + Stripe backend for Floi AI" — I'll generate the full codebase.
All Customer Workspaces
Navigate to this tab while in Platform Admin to load workspaces.
Customer Usage Tracking
Real-time plan status, generation credits, billing periods
—
Total Customers
—
Active Plans
—
Expired / Unpaid
—
Blocked (Over Limit)
Customer
Plan
Plan Start
Plan End
Video Ads This Period
Status
Last Activity
Actions
No customers yet — signups will appear here automatically.
Recent Generation Log
No generations logged yet.
Edit Customer Plan
Employee
Role
Mon
Tue
Wed
Thu
Fri
Total Hrs
Overtime
Status
🏦
Bank Account
Not connected — connect your bank to auto-import expenses and revenue
Recent Transactions
Income (90d)
$0
Expenses (90d)
$0
Net Cash
$0
Weekly Pay Run
Employee
Role
Hrs
OT Hrs
Rate
Total Pay
Role Pay Rates
Business Expenses
Total Monthly Expenses
$0.00
🎥
No meetings yet
Schedule your first meeting to get started.
👤 My Profile
Your profile is shown in your workspace sidebar. The platform name stays Floi AI everywhere — only your corner of it reflects your identity.
U
Your Business Name
This is how you appear in your sidebar and workspace
Shown in your sidebar instead of your email
🔒 Your workspace is private. Everything in your account belongs to you — your data, your team, your settings. Your admin access is for your business only. No other account can see or access what's yours.
🏭 Industry Workflow
Select your industry. The dashboard metrics, AI prompts, and sample tickets all adapt instantly.
💻
SaaS / Tech
🛒
E-Commerce
🏥
Healthcare
💰
Finance
🎨
Agency
🔔 Notifications
Urgent ticket alerts
Notify when urgent tickets arrive
AI task completions
When AI finishes a report or draft
Weekly digest
Summary of activity every Monday
🔐 Owner Account (Platform Admin Access)
Powers the Data Marketplace with real contacts. Get key →
Required to see Live Sessions + Login History for ALL users. Get from Supabase → Settings → API → service_role key.
Find voice IDs at elevenlabs.io/voice-library. Default: Rachel (natural female) or paste any voice ID.
Powers AI Assistant for all your customers. They never see this key. Get key →
Powers live ad results in Ad Intelligence. Free — Get token →
💳 Stripe Webhook Setup PLATFORM OWNER
Your Stripe secret key — powers subscription lookups. Get key →
From Stripe → Developers → Webhooks → your endpoint → Signing secret. Open Webhooks →
Webhook URL to paste in Stripe: https://your-netlify-site.netlify.app/.netlify/functions/stripe-webhook Events to enable: checkout.session.completed, invoice.payment_succeeded, invoice.payment_failed, customer.subscription.deleted
💳 Subscription Plan Payment Links
Create Payment Links in your Stripe Dashboard for each plan and paste them here. When customers click Subscribe on your pricing page, they go straight to Stripe checkout.
🏦 Plaid Bank Integration PLATFORM OWNER
Customers connect their bank via a secure popup — you set this up once and they just click "Connect Bank."
Use Sandbox while testing, switch to Production when your customers go live.
💾 Data Management
Export all data
Download tickets, reports, and settings as JSON
Clear chat history
Remove all AI conversation history
Reset all data
Wipe all saved data and start fresh
Sign out
Log out of your account
📱 Social Media Accounts
Connect your social accounts so the platform can post your video ads and content automatically. Click "How do I get this?" for step-by-step instructions.
Add / Update Account
Tokens are stored securely and never shared.
Social API Proxy URL (optional — for direct posting)
Deploy the included Netlify Function to enable real-time posting. Leave blank for queued/simulated mode.
Total Contacts
0
↑ All time
Open Deals
0
↑ Active
Pipeline Value
$0
↑ Total value
Won This Month
$0
↑ Closed
Name
Company
Email
Status
Actions
No contacts yet — click + Add Contact to get started
No activities yet
Add Contact
Add Deal
Log Activity
✅
GDPR Ready
● Active
✅
CCPA Ready
● Active
🔒
SOC 2 Ready
● In Progress
🏥
HIPAA Ready
● In Progress
🌐
ISO 27001
● In Progress
🔐
AES-256
● Active
🔐 Active Security Controls
✅ End-to-End Encryption
AES-256 in transit and at rest
✅ Role-Based Access
Owner vs customer roles enforced
✅ Session Management
JWT tokens, auto-expire
✅ Audit Logging
Every login recorded
✅ Data Isolation
Each workspace fully isolated
✅ Secure API Keys
Never exposed client-side
📋 Data Handling
✅ What we collect
Email and name Business data you enter Login timestamps Payment status via Stripe
❌ What we never do
Sell your data Store passwords Share data between customers Train AI on your data
🇪🇺 Your Data Rights (GDPR / CCPA)
You can export or delete your data at any time.
📊 Access Audit Log
Loading audit log…
📡
Dataset Name
Subscription
AccessImmediate — full dataset
Cancel anytime✓ Yes
🔒 Demo mode — no real charge. Connect Stripe in Integrations for live billing.