Overview
KaireonAI supports two authentication methods:- Google OAuth — one-click sign-in with your Google account
- Email & Password — register with email, verify, then sign in
Playground Registration
The hosted playground at playground.kaireonai.com offers self-service registration.Sign Up with Google
- Visit playground.kaireonai.com/register
- Click Sign up with Google
- Select your Google account
- You’re signed in — no email verification needed
Sign Up with Email
- Visit playground.kaireonai.com/register
- Fill in your name, email, and password
- Click Create Account
- Check your inbox for a verification email from
support@kaireonai.com - Click the Verify Email link
- Sign in at playground.kaireonai.com/login
Password requirements: minimum 8 characters, at least 1 uppercase letter, at least 1 number.
After Registration
New users land on the platform as an admin of their personal workspace. An onboarding banner guides you to load sample data — go to Settings → Sample Data and load a dataset pack (e.g., Starbucks Offers) to explore the full platform. You have full access to create offers, schemas, decision flows, pipelines, and everything else.Playground Limits
Decision Quota
Each playground workspace has a 5,000 lifetime decision limit. Decisions are counted when:- The Recommend API generates impressions
- Batch pipeline runs produce decisions
- Journey triggers fire automated decisions
Workspace Reset
If you’ve used up your decisions or want to start fresh, go to Settings → Reset Workspace. This deletes all data in your workspace (offers, flows, schemas, interaction history, etc.) and resets your decision counter to 0. Your account and workspace remain intact.No Entity Limits
There are no limits on creating entities (offers, schemas, decision flows, pipelines, etc.) in the playground. The only constraint is the 5,000 decision cap.Data Isolation
Every user’s data is completely isolated in their own tenant:- Separate data storage — offers, schemas, pipelines, interaction history, and all other data is scoped to your tenant
- No cross-tenant access — API routes enforce tenant boundaries on every request
- Independent models — scoring models and experiments are trained only on your tenant’s data
- Isolated decision flows — your flows, rules, and configurations are private to your workspace
Self-Hosted Authentication
When self-hosting KaireonAI, authentication is configured via environment variables:| Variable | Description | Required |
|---|---|---|
NEXTAUTH_SECRET | Random secret for signing JWT sessions | Yes |
NEXTAUTH_URL | Public URL of your deployment (e.g., https://your-domain.com) | Yes |
GOOGLE_CLIENT_ID | Google OAuth client ID | For Google sign-in |
GOOGLE_CLIENT_SECRET | Google OAuth client secret | For Google sign-in |
SES_FROM_EMAIL | Sender email for transactional emails | For email registration |
AWS_REGION | AWS region for SES | For email registration |
Self-hosted instances have no decision limits — the 5,000 cap only applies to the hosted playground.
Google OAuth Setup
To enable Google sign-in on your self-hosted instance:Create OAuth credentials
Go to Google Cloud Console, create an OAuth 2.0 Client ID for a Web application.
Configure redirect URIs
Add your deployment URL as an authorized redirect URI:For local development, also add:
Email Verification Setup
Email verification requires an email sending service. The platform uses AWS SES by default:Seed Admin User
For self-hosted deployments, create the initial admin user with the seed script:admin@kaireonai.com / admin123). Change the password immediately after first login.
User Roles
| Role | Permissions |
|---|---|
| Admin | Full access — manage users, settings, all modules |
| Editor | Create and modify offers, rules, flows, pipelines |
| Viewer | Read-only access to all modules |
Security
- JWT sessions — 30-minute expiry, auto-refreshed
- Account lockout — 5 failed login attempts locks the account for 15 minutes
- Email verification — required for email/password registration
- Rate limiting — registration endpoint: 5 attempts per IP per hour
- CSRF protection — all state-changing API requests require
X-Requested-Withheader - Tenant isolation — all data access is scoped to the authenticated user’s tenant