StartupDeckAI Documentation
Guides for founders using StartupDeckAI in the browser, plus technical reference for running and operating the stack.
Most people use StartupDeckAI at startupdeck.in — sign up, validate an idea, and export reports from the dashboard. No installation required. Use Help Center for account and billing questions. The sections below cover product features and how the service is run. StartupDeckAI is online only; there is no self-hosted version.
Start in the app
Create a free account and run your first idea validation from the dashboard.
Product features
Idea validation, quick analysis, Founder OS, and plan limits explained.
Architecture
How the React frontend, Node backend, and PostgreSQL database fit together.
Deployment
Production setup on Vercel, Render, and custom domains.
Security
Two-factor auth, rate limits, encryption, and account protection.
System Architecture
High-level overview of StartupDeckAI's split-architecture design.
Frontend — Vercel
- React 18 + TypeScript
- Vite build tool
- Tailwind CSS + Shadcn UI
- TanStack Query
- Framer Motion
Backend — Render
- Node.js + Express
- Drizzle ORM
- Passport.js Auth
- Redis + BullMQ
- Prerender.io SEO
Data Layer
- PostgreSQL (Neon.tech)
- Redis Cache
- File Storage
- Session Store
Frontend (Vercel)
The client-side React application built with modern web technologies.
Tech Stack
| Technology | Purpose |
|---|---|
| React 18 | UI framework with concurrent features |
| TypeScript | Type-safe codebase |
| Wouter | Lightweight client-side routing |
| Tailwind CSS | Utility-first styling |
| Shadcn UI | Beautifully designed component library |
| Framer Motion | Premium UI animations |
| TanStack Query | Server state management |
| Vite | Lightning-fast build tool with HMR |
Project Structure
client/
├── src/
│ ├── components/ # Reusable UI components
│ ├── pages/ # Page components
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Utility functions
│ └── services/ # API service layer
├── index.html
└── vite.config.ts
Backend (Render)
Express-based API server with services architecture.
Service architecture
The backend is a Node.js API with route handlers, background jobs, and service modules. Internal file layout is not documented here — refer to your authorized codebase copy.
Database Schema
Core database tables powered by PostgreSQL and Drizzle ORM.
Data is stored in PostgreSQL using an ORM-managed schema. After configuring your database connection locally, apply migrations with the project scripts — do not expose schema details publicly.
Database commands
# Push schema to database
npm run db:push
# Create admin user
npm run create-admin
Deployment Guide
Deploy StartupDeckAI with a split architecture for maximum performance.
startupdeck.in (frontend) + api.startupdeck.in (backend).
Post-Deployment Checklist
Vercel (Frontend)
Deploy the React frontend to Vercel for edge-optimized delivery.
Configuration
| Setting | Value |
|---|---|
| Repo Root | StartupDeckAI |
| Build Command | vite build |
| Output Directory | dist/client |
| Env Vars | VITE_API_BASE_URL=https://api.startupdeck.in |
Deploy Steps
# Install Vercel CLI
npm install -g vercel
# Deploy
vercel --prod
Render (Backend)
Deploy the Express backend to Render for reliable API hosting.
Configuration
| Setting | Value |
|---|---|
| Repo Root | StartupDeckAI |
| Build Command | npm install --include=dev && npm run build |
| Start Command | npm start |
| Health Check | /health |
| Custom Domain | api.startupdeck.in |
Environment variables
Configure production secrets in your hosting provider's secret manager. Use values from your private .env.example — do not paste live credentials into docs, tickets, or chat.
Admin Setup
Create administrator accounts securely — never use published or default passwords.
Create an admin user
[email protected] ADMIN_PASSWORD=<strong-secret> npm run create-admin
After creation, sign in, enable two-factor authentication if available, and rotate credentials on any non-production environment before go-live.
Dashboard Guide
Navigate the comprehensive admin dashboard for system management.
Dashboard Tabs
System stats, health status, and recent activity
User management and role administration
Detailed analytics and reporting dashboards
Real-time system health and performance
Backup scheduling and recovery management
System logs and event tracking
User Management
Manage users, roles, and permissions through the admin panel.
Roles
| Role | Access Level | Capabilities |
|---|---|---|
user | Standard | Create analyses, manage own profile |
admin | Elevated | User management, analytics view |
super_admin | Full | All features including system config |
Connecting your tools
How a connection works, what it can and cannot do, and exactly what each tool is read for.
Founder OS gets its numbers from the tools you already use. You connect your own account, either by approving StartupDeckAI in the tool's own screen or with a key you create, and StartupDeckAI only reads from it. It never creates, changes or deletes anything in a connected account.
How to connect a tool
- Open Integrations in Founder OS and choose a tool. The Popular and New filters show where to start.
- Read the short list of what we read from that tool.
- For Stripe, GitHub, Slack, HubSpot and Notion, press Continue with the tool. The tool's own screen asks you to allow the read permissions the dialog lists, and nothing else. No key changes hands.
- For every tool, you can instead follow the steps in the dialog to create a key, limit it to read access where the tool allows it, and paste it. We check the key with the tool first.
- Either way, what the tool gives us is stored encrypted and the first import starts.
How it stays read only
- Every request to a connected tool passes through one check that refuses anything other than a read. A few tools use a POST for searching, checking a key or swapping an approval code for a token. Those are listed one by one, and none of them changes anything in your account.
- When you approve StartupDeckAI in a tool, we ask only for read permissions. Where the tool reports what it granted (Stripe, GitHub, Slack and HubSpot do), we check the grant and refuse to connect if it can do more than read. Notion does not report this, and the dialog says so.
- Where a tool lets you limit a key to read access, the dialog asks you to do that, so even a mistake on our side could not write. Where a tool cannot, the dialog says so plainly.
- Requests identify themselves as StartupDeckAI, wait when a tool asks us to slow down, and stop after a few tries.
- Keys and access tokens are encrypted before they are stored and are never shown again. Tokens that expire are renewed before use and stored the same way.
What stays under your control
- You choose which repositories, pages, projects or channels a connection can reach, wherever the tool lets you.
- Revoke the key, or remove StartupDeckAI, in the tool at any time to cut access straight away.
- Disconnecting in Founder OS deletes the key or token and the records we imported from that tool. For a tool you approved, we also ask the tool to end our access, and tell you if it did not confirm.
What each tool reads
| Tool | What we read | How it connects | Provider terms |
|---|---|---|---|
| Amplitude |
| A key you create | Terms |
| Chargebee |
| A key you create, limited to read access | Terms |
| GitHub |
| Approval in GitHub (we check the grant is read only), or a key you create | Terms |
| HubSpot |
| Approval in HubSpot (we check the grant is read only), or a key you create | Terms |
| Intercom |
| A key you create, limited to read access | Terms |
| Jira |
| A key you create | Terms |
| LemonSqueezy |
| A key you create | Terms |
| Linear |
| A key you create, limited to read access | Terms |
| Mailchimp |
| A key you create | Terms |
| Mixpanel |
| A key you create | Terms |
| Notion |
| Approval in Notion (the tool does not report the grant), or a key you create | Terms |
| Paddle |
| A key you create, limited to read access | Terms |
| Pipedrive |
| A key you create | Terms |
| PostHog |
| A key you create, limited to read access | Terms |
| Razorpay |
| A key you create | Terms |
| Sentry |
| A key you create, limited to read access | Terms |
| Slack |
| Approval in Slack (we check the grant is read only), or a key you create | Terms |
| Stripe |
| Approval in Stripe (we check the grant is read only), or a key you create | Terms |
| Vercel |
| A key you create | Terms |
| Zendesk |
| A key you create | Terms |
Legal and privacy
The policies that apply when you use StartupDeckAI, in plain language.
Privacy Policy
What we collect, why, how long we keep it, and how to ask for a copy or for deletion.
Terms of Service
The rules for accounts, plans, connected tools, your content and AI generated reports.
Refunds and cancellation
How to cancel, what is refundable, and how long a refund takes.
Delivery
How access is delivered, since StartupDeckAI is online only.
Copyright and trademarks
Who owns what, how third party names are used, and how to send a takedown notice.
Report a security problem
Where to send a vulnerability report and what to include.
Product features
Tools available in the StartupDeckAI web app. Availability depends on your plan — see Pricing for limits.
StartupDeckAI checks a startup idea before you build it. Pro Plus and Enterprise plans add Founder OS, which helps run the company once it has customers.
Describe the idea and get a score out of 100, a verdict of GO, PIVOT or KILL, market size, competitors, risks and next steps. Every figure is labelled with where it came from.
Quick analysisA score, a verdict and the main strengths and risks in a few seconds. Rule based, with no AI model involved.
Reports, sharing and downloadsEvery past validation in one place. Share a report by private link, or download it as a PDF or text on any plan; paid plans remove the watermark.
Founder OSConnect the tools you already use, read only, and keep decisions, notes, revenue and metrics in one place. Included with Pro Plus and Enterprise.
How the score worksHow the quick check and the full report work out the score, and what GO, PIVOT and KILL mean.
SupportAn assistant that answers from what the product does today, and a person on the team when you ask for one.
Two-Factor Authentication (2FA / MFA)
Protect your StartupDeckAI account, analyses, and financial details with industry-grade multi-factor security.
Overview
StartupDeckAI supports two-factor authentication (2FA) for all user accounts. When enabled, logging in via username/password or Google OAuth requires you to verify your identity with a dynamic, single-use 6-digit passcode. This prevents unauthorized access even if your password or OAuth credentials become compromised.
Supported Authentication Methods
Scan a cryptographically secure 2D QR code using standard authenticators like Google Authenticator, Microsoft Authenticator, Authy, or 1Password. Generates time-based, offline tokens refreshed every 30 seconds.
Receive a high-entropy, 6-digit verification code directly to your registered email address. Perfect for users who prefer secure verification without needing secondary mobile authenticator apps.
How to Enable 2FA
- Log into your account and navigate to Account Settings.
- Scroll down to the Security & Two-Factor Authentication section.
- Select your preferred method: Authenticator App or Email OTP.
- For Authenticator Apps, scan the generated QR code or copy the plaintext secret key. For Email OTP, verify the test code sent to your inbox.
- Enter the 6-digit confirmation token to securely activate 2FA.
- Copy and store your Emergency Recovery Codes in a safe place. If you ever lose access to your device, these codes are the only way to regain access without administrator intervention.
Login Verification Flow
Once activated, the authentication sequence intercepts access post-credentials check:
1. Login Trigger
User submits email/pass or authenticates via Google/GitHub OAuth.
2. 2FA Intercept
Server checks if user has active 2FA and halts the auth session.
3. Verification
User enters 6-digit TOTP token or Email OTP in secure overlay.
Admin Exemption & Panel Security
For administrative accounts, standard user-level 2FA is deactivated. Instead, administrators must verify their identity using a specialized **Secret Key Verification Challenge Overlay**. This timing-safe, cryptographically hashed challenge must be verified before the system grants access to the high-privilege Admin Panel, ensuring maximum defense for user data and infrastructure control.
Rate Limiting
API protection with configurable rate limits.
| Endpoint Type | Window | Max Requests |
|---|---|---|
| General API | 15 minutes | 1000 |
| AI Analysis | 1 hour | 100 |
| Authentication | 15 minutes | 20 |
Rate-limited responses return 429 Too Many Requests with a Retry-After header.
SSL / TLS
Configure secure connections with SSL certificates.
Nginx Configuration
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Monitoring
Set up comprehensive monitoring for system health and performance.
Error Tracking with Sentry
npm install @sentry/node @sentry/profiling-node
Key Metrics to Track
- System Health: Database, Redis, and email service status
- User Analytics: Growth tracking and user behavior
- Revenue Analytics: MRR, ARR, and financial projections
- Performance: CPU, memory, and response times
Scaling
Scale StartupDeckAI for production workloads.
Database Optimization
-- Add indexes for performance
CREATE INDEX CONCURRENTLY idx_analyses_user_id_created_at
ON analyses(user_id, created_at);
CREATE INDEX CONCURRENTLY idx_competitors_analysis_id
ON competitors(analysis_id);
CREATE INDEX CONCURRENTLY idx_usage_tracking_user_id_feature
ON usage_tracking(user_id, feature);
Load Balancing
upstream startupdeck_backend {
server 127.0.0.1:5000;
server 127.0.0.1:5001;
server 127.0.0.1:5002;
}
server {
location / {
proxy_pass http://startupdeck_backend;
}
}
Troubleshooting
Common issues and their solutions.
Redis Connection Failed
# Check Redis status
sudo systemctl status redis-server
# Restart Redis
sudo systemctl restart redis-server
Database connection issues
Verify your database is running and that connection settings in your private environment file match your deployment. Test from your secure shell — do not share connection strings publicly.
Payment Webhook Failures
# Test webhook endpoint
stripe events resend evt_webhook_id
# Check webhook logs
stripe logs tail