Esta página aún no está traducida al español — mostrando la versión en inglés.
Plan limits
Every numeric limit enforced by the codebase, with its source file.
This page is a cross-reference of every limit in ChatbotGen that's visible from code. Each row cites the file where the constant lives.
Per-plan limits
Verified from priv/repo/seeds/plans.exs:
| Plan | Price (cents) | Chatbots | Documents / bot | URLs / bot | Messages / mo | Chars trained |
|---|---|---|---|---|---|---|
| Free | 0 | 1 | 3 | 5 | 50 | 400,000 |
| Starter | 2,900 | 3 | 20 | 50 | 2,000 | 2,000,000 |
| Growth | 7,900 | 10 | 100 | 200 | 10,000 | 11,000,000 |
| Business | 19,900 | 50 | 200 | 500 | 30,000 | 40,000,000 |
All plans are monthly (interval: "month"). No yearly plans are seeded.
Upload and import limits
| Limit | Value | Source file |
|---|---|---|
| File upload max size (PDF / DOCX / TXT) | 10 MB |
assets/js/pages/App/Knowledge/Index.jsx — file.size > 10 * 1024 * 1024 check |
| Accepted file types |
.pdf, .docx, .txt |
same file — |
| Client error when oversized | "File too large. Maximum size is 10MB." | same file |
| Widget icon max size | 5 MB |
assets/js/pages/App/Chatbot/WidgetSettings/Edit.jsx — const ICON_MAX_BYTES = 5 * 1024 * 1024 |
| Widget icon accepted MIMEs |
image/png, image/jpeg, image/webp |
same file — ICON_ALLOWED_MIME |
| Q&A CSV max upload | 2 MB |
lib/chatbotgen_web/controllers/app/knowledge/qa/import_controller.ex — @max_upload_bytes 2_000_000 |
| Q&A CSV max rows per import | 500 |
lib/chatbotgen/knowledge.ex — @max_import_rows 500 |
Crawl limits
| Limit | Value | Source file |
|---|---|---|
| URL discovery hard ceiling per chatbot | 1,000 |
lib/chatbotgen/workers/generate_urls_from_website.ex — @absolute_max 1_000 |
| Applied max |
min(plan.max_trained_urls, @absolute_max) |
same file, line available = max(min(plan_limit, @absolute_max) - existing_count, 0) |
The absolute ceiling overrides any plan limit higher than 1,000. Currently no plan exceeds 1,000 URLs (Business caps at 500).
Conversation export
| Limit | Value | Source file |
|---|---|---|
| Conversation export max rows | 10,000 |
lib/chatbotgen_web/controllers/app/chatbot/export_controller.ex — Chat.list_conversations(chatbot.id, per_page: 10_000) |
Handoff summary generation
| Knob | Value | Source file |
|---|---|---|
| Summary model |
google/gemini-2.5-flash |
lib/chatbotgen/workers/handoff_notification.ex — @summary_model |
| Summary max tokens | 200 |
same file — @summary_max_tokens 200 |
| Transcript history size | last 20 messages |
same file — @history_limit 20 |
Tools
| Limit | Value | Source file |
|---|---|---|
| Wasi API timeout | 15,000 ms |
lib/chatbotgen/ai/tools/wasi.ex — receive_timeout: 15_000 |
| Wasi city cache TTL | 5 minutes |
same file — @cities_ttl :timer.minutes(5) |
| Wasi max properties per call | 5 |
same file — Enum.take(5) in extract_properties/1 |
Password
| Limit | Value | Source file |
|---|---|---|
| Password placeholder hint | "At least 6 characters" |
assets/js/pages/App/Settings/Password/Edit.jsx and assets/js/pages/App/Registration/New.jsx |
The exact backend password validation (length, complexity) lives in the accounts context and is surfaced via errors["user.password"] in the UI.
Chatbot schema defaults
Verified from lib/chatbotgen/chatbots/chatbot.ex:
| Field | Default |
|---|---|
status |
"created" |
model |
"google/gemini-2.5-flash" |
embedding_model |
"openai/text-embedding-3-small" |
widget_initial_message |
"Hello, how can I help you?" |
widget_initial_message_delay |
3 |
widget_input_placeholder |
"Ask me anything..." |
widget_primary_color |
"#4F46E5" |
widget_secondary_color |
"#E2F7CB" |
widget_bg_color |
"#F9FAFB" |
widget_suggested_messages |
"" |
display_powered_by |
true |
Knowledge source statuses
-
FileDocument (
lib/chatbotgen/chatbots/file_document.ex) —pending|processing|completed|failed -
WebsiteUrl (
lib/chatbotgen/chatbots/website_url.ex) —pending|crawling|completed|failed -
TextSource (
lib/chatbotgen/chatbots/text_source.ex) —pending|processing|completed|failed -
QuestionAndAnswer — no
statusfield on the schema; pairs are available as soon as saved.
Related
- Plans & pricing — per-plan numbers with feature rows
- Usage dashboard — how the UI shows your current usage against these caps