Your Personal AI Advisory Council
Connect with specialized AI advisors through natural voice conversations for career guidance, wellness coaching, spiritual growth, and academic support.
Live Demo β’ Features β’ Tech Stack β’ Getting Started β’ Deployment
- π€ Introduction
- βοΈ Tech Stack
- π Features
- ποΈ Architecture
- π Getting Started
- π Environment Variables
- π± Screenshots
- π― Subscription Tiers
- π οΈ Development
- π¦ Deployment
- π License
Articulate is a cutting-edge SaaS platform that revolutionizes personal advisory services through AI-powered voice conversations. Whether you need career guidance, wellness coaching, spiritual mentorship, or academic tutoring, Articulate connects you with specialized AI advisors that understand your needs and provide personalized guidance through natural voice interactions.
Built with modern web technologies and powered by advanced AI voice synthesis, Articulate delivers a seamless, human-like advisory experience that's accessible 24/7.
- π― Specialized Advisors: Choose from 40+ pre-built advisors or create your own custom AI advisor
- π£οΈ Natural Voice Conversations: Real-time voice interactions with low-latency responses
- π Track Your Progress: Monitor your journey with detailed analytics and insights
- οΏ½ Flexible Pricing: Free tier to get started, premium plans for power users
- π Secure & Private: Enterprise-grade security with Clerk authentication
- shadcn/ui - Beautiful, accessible component library
- Zod - TypeScript-first schema validation
- React Hook Form - Performant form handling
- Lucide Icons - Modern icon library
- Real-time voice interactions with AI advisors
- Low-latency responses for natural conversations
- Session timer to track conversation duration
- Live transcription of conversations
- Download transcripts for future reference
- Browse 40+ pre-built advisors across 4 categories:
- πΌ Career & Professional Development
- π§ Wellness & Mental Health
- ποΈ Spiritual & Personal Growth
- π Academic & Learning
- Advanced search & filtering by category, subject, and topic
- Advisor ratings and session counts
- Bookmark favorite advisors for quick access
- Design your own AI advisor with custom:
- Name and personality
- Subject expertise
- Conversation style (casual, professional, formal, nurturing)
- Voice type (male/female)
- Session duration
- Tier-based limits:
- Free: 5 custom advisors
- Pro: 20 custom advisors
- Premium: Unlimited
- Track your progress with detailed statistics
- Session history with all your conversations
- Bookmarked advisors for easy access
- Advanced analytics (Premium feature - Coming Soon)
- Conversation insights (Pro/Premium feature)
- Flexible pricing tiers to match your needs
- Clerk-powered billing for secure payments
- Easy plan upgrades and downgrades
- Transparent pricing with no hidden fees
- Secure sign-up/sign-in with Clerk
- Google OAuth integration
- Session management with automatic refresh
- Protected routes for authenticated users
- Error monitoring with Sentry
- Mobile-first approach for all devices
- Smooth animations and transitions
- Loading states for better UX
- Skeleton screens during data fetching
- Optimized performance with Next.js
articulate/
βββ app/ # Next.js app directory
β βββ (auth)/ # Authentication routes
β β βββ sign-in/
β β βββ sign-up/
β βββ companions/ # Advisor routes
β β βββ [id]/ # Individual advisor session
β β βββ new/ # Create new advisor
β β βββ page.tsx # Advisors list
β βββ journey/ # User dashboard
β βββ subscription/ # Pricing & billing
β βββ loading.tsx # Global loading state
β βββ layout.tsx # Root layout
β βββ page.tsx # Homepage
βββ components/ # React components
β βββ ui/ # shadcn/ui components
β βββ CompanionCard.tsx
β βββ CompanionComponent.tsx # Voice session component
β βββ CompanionForm.tsx
β βββ Navbar.tsx
β βββ ...
βββ lib/ # Utility functions
β βββ actions/ # Server actions
β βββ subscription.ts # Tier management
β βββ supabase.ts # Database client
β βββ vapi.sdk.ts # Voice AI SDK
βββ constants/ # App constants
β βββ categories.ts
β βββ index.ts
βββ types/ # TypeScript types
βββ public/ # Static assets
-- Companions (AI Advisors)
companions (
id: uuid
name: text
category: text
subject: text
topic: text
duration: integer
voice: text
style: text
description: text
author: text (user_id)
created_at: timestamp
)
-- Bookmarks
bookmarks (
id: uuid
user_id: text
companion_id: uuid (FK)
created_at: timestamp
)
-- Session History
session_history (
id: uuid
user_id: text
companion_id: uuid (FK)
created_at: timestamp
)Before you begin, ensure you have the following installed:
- Node.js (v18 or higher)
- npm or yarn
- Git
- Clone the repository
git clone https://github.com/AdnanElAssadi56/Articulate.git
cd Articulate- Install dependencies
npm install- Set up environment variables
Create a .env.local file in the root directory:
# Clerk Authentication
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
CLERK_SECRET_KEY=your_clerk_secret_key
NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in
NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up
NEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL=/
NEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL=/
# Supabase Database
NEXT_PUBLIC_SUPABASE_URL=your_supabase_project_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
# Vapi Voice AI
NEXT_PUBLIC_VAPI_WEB_TOKEN=your_vapi_web_token
# Sentry Error Monitoring (Optional)
SENTRY_AUTH_TOKEN=your_sentry_auth_token- Set up Supabase database
Run the following SQL in your Supabase SQL editor:
-- Create companions table
create table companions (
id uuid default gen_random_uuid() primary key,
name text not null,
category text not null,
subject text not null,
topic text not null,
duration integer not null,
voice text not null,
style text not null,
description text,
author text not null,
created_at timestamp with time zone default timezone('utc'::text, now()) not null
);
-- Create bookmarks table
create table bookmarks (
id uuid default gen_random_uuid() primary key,
user_id text not null,
companion_id uuid references companions(id) on delete cascade,
created_at timestamp with time zone default timezone('utc'::text, now()) not null,
unique(user_id, companion_id)
);
-- Create session_history table
create table session_history (
id uuid default gen_random_uuid() primary key,
user_id text not null,
companion_id uuid references companions(id) on delete cascade,
created_at timestamp with time zone default timezone('utc'::text, now()) not null
);
-- Enable Row Level Security
alter table companions enable row level security;
alter table bookmarks enable row level security;
alter table session_history enable row level security;
-- Create policies
create policy "Companions are viewable by everyone"
on companions for select
using (true);
create policy "Users can create companions"
on companions for insert
with check (true);
create policy "Users can manage their own bookmarks"
on bookmarks for all
using (true);
create policy "Users can manage their own session history"
on session_history for all
using (true);- Configure Clerk subscriptions
In your Clerk dashboard:
- Create three subscription plans: Free, Pro, Premium
- Set up pricing: Pro ($9.99/mo), Premium ($19.99/mo)
- Configure features for each tier
- Run the development server
npm run dev
# or
yarn dev- Open your browser
Navigate to http://localhost:3000
| Variable | Description | Where to Get It |
|---|---|---|
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY |
Clerk public key | Clerk Dashboard |
CLERK_SECRET_KEY |
Clerk secret key | Clerk Dashboard |
NEXT_PUBLIC_SUPABASE_URL |
Supabase project URL | Supabase Dashboard |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Supabase anonymous key | Supabase Dashboard |
NEXT_PUBLIC_VAPI_WEB_TOKEN |
Vapi web token | Vapi Dashboard |
| Variable | Description | Where to Get It |
|---|---|---|
SENTRY_AUTH_TOKEN |
Sentry authentication token | Sentry Dashboard |
Perfect for trying out the platform
- 5 custom advisors
- 3 bookmarks
- 5 sessions per month
- 10-minute sessions
- Access to all pre-built advisors
For regular users
- 20 custom advisors
- Unlimited bookmarks
- 50 sessions per month
- 20-minute sessions
- Conversation insights
- Download transcripts
- Unlimited conversation history
For power users
- Unlimited custom advisors
- Unlimited bookmarks
- Unlimited sessions
- 30-minute sessions
- Advanced analytics
- AI-powered insights
- All Pro features
# Development server
npm run dev
# Build for production
npm run build
# Start production server
npm start
# Run linter
npm run lint- Push your code to GitHub
git add .
git commit -m "Initial commit"
git push origin main- Import to Vercel
- Go to Vercel
- Click "New Project"
- Import your GitHub repository
- Add environment variables
- Deploy!
- Configure environment variables in Vercel
Add all variables from .env.local to your Vercel project settings.
Your app will be live at https://your-project.vercel.app
This project is open source and available under the MIT License.






