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
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 |
|
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
status field on the schema; pairs are available as soon as saved.