Product Guide How It Works Administration Support Guide Owner Guide Engine Core

Customer Support & Troubleshooting Guide

For support specialists: how to diagnose, resolve, and escalate user issues

1. Escalation Matrix

flowchart TD
    Issue["User reports issue"] --> T1{"Tier 1:
Self-service / Quick fix?"} T1 -->|Yes| Resolve1["Resolve: guide user
through steps"] T1 -->|No| T2{"Tier 2:
Configuration / Permission issue?"} T2 -->|Yes| Resolve2["Resolve: adjust settings,
permissions, or data"] T2 -->|No| T3{"Tier 3:
System / Infrastructure issue?"} T3 -->|Yes| Resolve3["Escalate to engineering
with diagnostics"] T3 -->|No| Eng["Escalate to engineering
as bug report"]
TierHandlesExamplesResolves within
Tier 1User errors, UI guidance, basic questionsDuplicate name, unsaved changes, navigation, "how do I...?"Immediately
Tier 2Config, permissions, data issuesMissing permissions, broken variable references, API key issues, computation errorsSame day
Tier 3Infrastructure, bugs, provider outagesS3 errors, CloudFront issues, database locks, LLM provider downEscalate to engineering

What to Include When Escalating

2. System Health Checks

Grafana Dashboard: "16 - Customer Support"

A dedicated Grafana dashboard is available (grafana/dashboards/16-customer-support.json). It provides real-time views of everything below, organized into 6 rows. Start every troubleshooting session by opening this dashboard.

CheckHowGrafana panelExpectedIf it fails
System up?GET /api/public/health"System Up?" stat"UP" greenT3 System down
Active computationsGrafana"Active Computations"0-5 normal>10 or stuck >10min = investigate
Stuck tasksGrafana"Stuck Tasks (>5 min)"0 (green)Non-zero = deadlock/timeout, T3
Computation successGrafana"Computation Success Rate">95% green<95% = check error panels
Login successGrafana"Login Success Rate">99% green<90% = auth issue, T3
LLM errorsGrafana"LLM Provider Errors / min"0-2 normal>20/min = provider outage
API key poolGrafana"API Key Pool Status"Active > 0 per providerAll passive = AI down. Add keys.
Pool exhaustionGrafana"LLM Pool Exhaustion Events"0Non-zero = AI failing. T2
Chat errorsGrafana"Chat Errors"0Non-zero = chat broken
WebSocketBrowser DevTools -> WS tab-Active /secured/ws-integrationRefresh; check proxy
VersionGET /api/public/version-Expected versionWrong version deployed

Dashboard Rows Quick Guide

RowShowsCheck when
System HealthUp/down, computations, success rates, LLM errorsFirst thing on every ticket
User-Facing ErrorsAuth failures/min, computation errors by type, LLM errors by reason"Something is broken"
AI/LLM HealthResponse latency P50/95/99, key pool, pool exhaustion, chat errors"AI is slow" / "AI not working"
PerformanceCampaign duration, chat response time, file upload latency"Everything is slow"
User ActivityCampaigns/hr, computations/hr, chat msgs/hr, logins/hrBaseline comparison
DeploymentMicrosite errors, upload errors, doc gen errors, CDN latency"Assets not publishing"
LLM Provider Detail (collapsed)Per-provider errors, reasons, retries, key passivation, RPM throttlingExpand when LLM issues detected above

3. Error Message Reference

When a user reports an error, find the exact message text below to understand the cause and resolution.

Campaign Errors

Error MessageWhenResolutionTier
"Campaign with name {name} already exist!"Creating or renaming a campaign to a name already used in the same companyChoose a different name. Campaign names must be unique within each company.T1
"This campaign's name in the company exists. Change campaign name. The result will not be saved."Updating a campaign with a duplicate nameSame as above - pick a unique name.T1
"Provided Campaign is not a published template or does not exist."Setting an MCT ID that doesn't point to a valid published templateVerify the template exists and its type is "Published Template".T2
"Failed to rename campaign." / "Failed to delete campaign."Campaign operation failed (often: locked by computation)Wait for active computation to finish. Check if another user is working on it.T1
"Campaign not found!"Campaign ID in URL doesn't match any existing campaignCampaign may have been deleted. Return to home page and check campaign list.T1

Computation Errors

Error MessageWhenResolutionTier
"There are some active computation elements in progress, please wait before execute"Trying to start computation while one is already runningWait for the current computation to finish. Monitor progress via the progress bar or WebSocket.T1
"Can't run new one campaign computation. Campaign locked by another process"Another user or tab is already computing this campaignWait for the other process. If stuck for >10 minutes, ask engineering to check for hung locks.T2
"Prompt key '{key}' not defined."A prompt variable references an environment variable that doesn't existCheck environment variables: the referenced prompt template must exist. Create it or fix the reference.T2
"[key]: ReferenceError: [variable] is not defined"JavaScript function references a variable that doesn't exist or hasn't been computedCheck variable names and computation order. The referenced variable may need to be computed first.T2
"Parent(s) not computed: [key list]"A variable depends on others that haven't been computedRun computation at a broader scope (step or phase level) to include dependencies.T2
"Broken template reference [templateId]"A variable references a document template that was deletedReassign a valid document template to the step, or remove the asset variable.T2

AI / LLM Provider Errors

Error CategoryWhat the user might seeCauseResolutionTier
Rate limited (429)"Too many requests" or computation stallsToo many AI calls sent to the provider in a short timeWait 1-2 minutes and retry. Long-term: add more API keys or increase RPM in model config.T1
Invalid API key (401/403)"Invalid API key" or "Unauthorized"API key is expired, revoked, or incorrectly formattedCheck API key in LLM API Keys settings. OpenAI keys must start with sk-. Verify in provider dashboard that the key is active.T2
Context too long"context_length_exceeded" or "max_tokens"Prompt + input data exceeds the model's token limitReduce prompt size, use fewer variables in the prompt template, or switch to a model with a larger context window.T2
Content filtered"content_filter" or "moderation" errorAI refused to process due to content safety rulesRevise the prompt to remove sensitive/flagged content.T2
Model not found (404)"model_not_found"Model name in configuration doesn't match provider's available modelsCheck model name in AI Model Configuration. Model may have been deprecated by the provider.T2
Provider down (502/503)"Bad Gateway" or timeoutsAI provider is experiencing an outageCheck provider status page (status.openai.com, etc.). Wait and retry. System auto-retries up to 3 times.T3
Network timeout (0)Computation hangs, then errorsNetwork connectivity issue between our system and the AI providerCheck server network. Increase read timeout in model configuration. Escalate if persistent.T3

File Storage & Asset Errors

Error MessageWhenResolutionTier
"File too large! Max allowed size is 100MB"Uploading a file larger than 100 MBCompress or split the file. The limit is 100 MB per file.T1
"Folder size more than 100 MB"A storage folder has exceeded the 100 MB limitDelete unused files from the folder, or move files to subfolders.T1
"File for an asset {title} does not exist in public storage!"An asset's source file was deleted from storageRe-upload the asset file, or regenerate the asset by rerunning computation.T2
"Private asset can not be published!"Trying to deploy an asset that's in private storage to the micrositeMove the file to public company storage, then retry the deployment.T2
"Unable to load the required data"Data fetch failed (storage, campaign, or step data)Refresh the page. Check network connectivity. Verify user has permissions.T1

Authentication & Permission Errors

Error MessageWhenResolutionTier
"Access Denied: You do not have the necessary roles to access this resource."User doesn't have the required permissionCheck which permission is needed (see Part 1: Permissions). Ask admin to add the permission to the user's group or add an Allow override.T2
"Access Denied: ... Required roles: [list]"Same, but with specific role names shownThe message tells you exactly which permissions are needed. Request them from the admin.T2
"Username not found"User account doesn't exist in the systemCreate the user account, or check if the email/username is correct.T2
Page redirects to loginSession expiredLog in again. OAuth sessions last 24 hours; API key sessions last only 5 minutes.T1

Validation Errors

Error MessageWhereHow to fix
"Required field!"Any required form field left emptyFill in the field before submitting
"The name must not contain slashes!"Campaign nameRemove / characters from the name
"The subdomain must contain only lowercase letters, digits, and hyphens..."Microsite subdomainUse only a-z, 0-9, hyphens; don't start/end with hyphen
"Invalid url!"URL fieldsEnter a valid URL with protocol (https://...)
"The email is not valid!"Email fieldsEnter a valid email format
"Site Context must not start or end with a slash."Microsite site contextRemove leading/trailing slashes
"Allowed characters: A-Z, a-z, numbers, or -/_+=.@"Various fieldsRemove special characters not in the allowed list
"Invalid api key" (must start with sk-)OpenAI API keyUse the correct key format from OpenAI dashboard
"You have unsaved changes. Please click Apply or Cancel."Form fields with Apply/Cancel buttonsClick "Apply" to save or "Cancel" to discard before navigating

Customer App Specific Errors

Error MessageWhenResolutionTier
"No GTM Foundation available. Contact support..."Step 1 of campaign wizard, no templates existAdmin must create and publish a GTM Foundation (campaign template) first.T2
"Failed to start AI Assist. Please try again."Clicking AI Assist button failsCheck LLM configuration. Ensure at least one chat-enabled AI model exists. Retry.T2
"Asset with ID {id} not found."Referencing a deleted asset in the assets tableReload the step data. The asset may have been deleted by another user.T1
"An error has occurred" (full-screen modal)Computation failed during campaign activationCheck computation status for specific error. See AI/computation error tables above.T2
"Something went wrong"Generic fallback errorAsk user to check browser console (F12 -> Console) for details. Refresh and retry.T2

4. Troubleshooting Scenarios

"My computation is stuck / not finishing"

Tier 2

  1. Check computation status: is it showing progress (items completing) or completely frozen?
  2. If progress is moving but slow: likely rate limiting. The system is waiting for API tokens. Check RPM setting on the AI model - increase it or add more API keys.
  3. If completely frozen for >5 minutes: check if it's a lock issue. Another tab or user may have started a competing computation.
  4. Try cancelling the computation (Stop button) and restarting.
  5. If cancel doesn't work: the computation may be stuck in a deadlock. Escalate to engineering with campaign ID and timestamp.
  6. After a system restart, all in-progress items auto-reset to "created" - user can re-trigger computation.

"User can't see a campaign / feature / button"

Tier 2

  1. Check the user's company context: are they looking at the right company? Campaigns are isolated per company.
  2. Check the user's permission group: go to Users -> select user -> Company Security. Look for the missing permission.
  3. Check for DENY overrides: these block specific permissions even if the group allows them.
  4. For feature buttons (Image Generation, Audit, etc.): check if the feature toggle permission is enabled (Imaging Enabled, Audit Enabled, etc.).
  5. For hidden phases/steps: user needs the "Show Hidden" permission.
  6. In Customer App: campaigns only appear if they have an applicationState. Template-only campaigns are hidden.
  7. Quick fix: use "Login As" (admin feature) to see exactly what the user sees.

"AI is generating bad / wrong content"

Tier 2

  1. Check the prompt template (environment variable): is it well-written with clear instructions?
  2. Check the model: is the right AI model assigned? Different models have different strengths. GPT-4 is more capable than GPT-3.5 but slower.
  3. Check temperature: high temperature (>1.0) = more creative/random. Low temperature (<0.5) = more deterministic/focused.
  4. Check max tokens: if too low, output may be cut off mid-sentence.
  5. For structured output (json_prompt): check the JSON schema - it may be too restrictive or have wrong field types.
  6. Check if variables feeding into the prompt have correct values - bad input = bad output.
  7. User can override any AI result manually - suggest this as an immediate fix while prompt is being refined.

"Asset won't publish to microsite"

Tier 2 / Tier 3

  1. Check asset state: it must be "Publication Approved" before it can be published. Walk through the approval chain: Created -> Ready for Review -> Asset Approved -> Publication Approved -> Published.
  2. Check asset storage location: "Private asset can not be published!" means the file is in private storage. Move to public storage first.
  3. Check if the microsite exists and is in "Created" state. If it's "Initial" or "Error", the infrastructure isn't ready.
  4. Check if the asset's source file still exists in public storage. It may have been deleted.
  5. If all above is fine: Escalate - may be an S3/CloudFront issue.

"Customer App: Activate button doesn't work / computation fails"

Tier 2

  1. Check all 5 steps are properly filled: the system validates that each step has required fields before activation.
  2. Step 5 requires at least 1 external asset in the table.
  3. If computation starts but fails: check the error modal. It should show a specific error (AI, template, variable reference).
  4. Check WebSocket connection: if the progress bar doesn't move at all, the real-time connection may be broken. Ask user to refresh the page.
  5. Check AI model configuration: ensure at least one model is set as system default.
  6. If computation completes partially: the user can view the generated state and re-run failed items using field handlers.

"User logged out unexpectedly"

Tier 1

  1. OAuth sessions expire after 24 hours. The user simply needs to log in again.
  2. API key sessions expire after just 5 minutes of inactivity. If using automated tools, they must handle re-authentication.
  3. If an admin used "Logout User" on this account, all active sessions are terminated.
  4. If the user is logged out immediately after logging in: check their account status (is it disabled?) and company assignment (are they assigned to at least one company?).

"Changes not saving / data seems stale"

Tier 1 / Tier 2

  1. Check for "Apply" buttons: many fields in the system require clicking "Apply" to save. If the user navigates away without clicking Apply, changes are lost.
  2. Check for concurrent editing: if two users edit the same campaign, the last save wins. The system uses optimistic locking - if there's a conflict, the second user may see an error.
  3. Check browser cache: ask user to hard-refresh (Ctrl+Shift+R) to bypass cached data.
  4. Check WebSocket connection: if real-time updates aren't arriving, the user may see stale computation results.

"Microsite shows old content after updating assets"

Tier 2

  1. If the microsite uses HTTPS (CloudFront): there's a CDN cache. After deploying, changes may take a few minutes to propagate globally.
  2. The system auto-invalidates CloudFront cache when the origin path changes, but not on every asset deployment.
  3. Ask user to try hard-refreshing the microsite page (Ctrl+Shift+R) or try in an incognito window.
  4. If still stale after 15 minutes: Escalate for manual CloudFront cache invalidation.

5. Step-by-Step Guides

How to Create a Campaign (Admin Console)

  1. Navigate to Campaigns page
  2. Click "Create Campaign" button
  3. Enter a unique campaign name
  4. (Optional) Select a published template to start from
  5. Click Create - the campaign appears in "Not Started" status
  6. Add Phases (logical groups, e.g., "Research", "Content")
  7. Add Steps within each phase
  8. Add Variables (CC Items) within each step - choose types: string, prompt, function, etc.
  9. Set up Environment Variables - prompt templates, functions, shared config
  10. Assign Document Templates to steps that need rendered output
  11. Configure the default AI model for the campaign
  12. Click Compute to run the computation engine
  13. Review results, override if needed, compute again
  14. Generate and publish Assets

How to Fix a Failed Computation

  1. Identify which variables failed: look for red "error" state in the campaign grid
  2. Click on the failed variable to see the error message
  3. Common fixes:
    • Missing prompt key: create the environment variable the prompt references
    • Broken reference: fix the variable key name or path
    • AI error: check API key, model config, and prompt size (see AI errors table)
    • Script error: fix the JavaScript function code
  4. After fixing, either:
    • Recompute the single failed variable (right-click -> Compute)
    • Or reset the state to "created" and rerun the full computation
  5. If the error persists, check the dependency graph (upstream/downstream views) for circular or broken dependencies

How to Grant Permissions to a User

  1. Go to Users page -> find the user
  2. Click user -> Company Security tab
  3. Select the company
  4. Either:
    • Assign a Permission Group (recommended): select a pre-built group like "Campaign Manager" or "Content Editor"
    • Add individual overrides: add Allow overrides for specific permissions
  5. User must refresh their browser for new permissions to take effect (session caches permissions)

Warning: DENY overrides are permanent blockers

If a user has a DENY override for a permission, it blocks that permission regardless of their permission group. Always check for DENY overrides first when troubleshooting access issues.

How to Add / Replace an LLM API Key

  1. Go to Model Configs page (or LLM API Keys section)
  2. Click "Create"
  3. Select the provider (OpenAI, Anthropic, Google, etc.)
  4. Paste the API key (OpenAI keys start with sk-)
  5. The key enters the "In Pool" state and starts being used immediately
  6. If a key is rate-limited, it's auto-disabled temporarily and re-checked every 60 seconds
  7. To replace: disable the old key, add the new one

How to Guide a User Through the Customer App

  1. Home Page: shows campaign cards. Click "New Campaign" to start, or click an existing card to continue.
  2. Step 1 (Fundamentals): campaign name, GTM Foundation (template selection), desired outcomes, timeframe, funnel stage. All required.
  3. Step 2 (Audience): select target personas (at least 1), choose segment, add any additional info.
  4. Step 3 (Strategy): fill in campaign objective, point of view, content themes, messaging pillars.
  5. Step 4 (Execution): describe content strategy, select content formats and distribution channels.
  6. Step 5 (Assets): add at least 1 external asset manually. Click "Activate Campaign" to trigger AI generation.
  7. After activation: a progress bar shows real-time computation. Wait for completion.
  8. Generated state: Steps 1-3 become read-only. Steps 4-5 remain editable with field handlers for incremental updates.
  9. AI Assist (if available for the step): click the AI icon to open an embedded chat for help refining content.

6. Known Limitations

LimitationValueWhat happens when exceeded
Single file upload size100 MB"File too large!" error, upload rejected
Folder size in storage100 MB"Folder size more than 100 MB" error, new uploads blocked
Concurrent computations per campaign1"Campaign locked by another process" error
Total computation threads150 (system-wide)New computations queue until threads free up
Threads per campaign30 maxAI calls within one campaign are limited to 30 parallel
OAuth session24 hoursUser must re-login
API key session5 minutes inactivitySession expires, must re-authenticate
AI retry attempts3 (default, configurable per model)After 3 retries, variable goes to "error" state
Campaign nameUnique per companyDuplicate rejected with error
Phase nameUnique per campaignDuplicate rejected
Step nameUnique per phaseDuplicate rejected
Variable keyUnique per stepDuplicate rejected

Things the System Cannot Do

7. Admin Console UI Reference

Quick reference of what each main screen shows and what the user can do there.

PageURL patternWhat it showsKey actions
Campaigns/campaignsList of all campaigns for selected companyCreate, edit, clone, delete, archive, publish, export
Campaign Editor/campaigns/company/:id/campaign/:idCampaign grid: phases -> steps -> variablesAdd/edit/delete phases, steps, variables. Run computation. View results.
Variable Grid(within campaign editor)All CC items for a step in a tableAdd, rename, reorder (drag), clone, override, execute, view graph
Document View(within campaign editor)Rendered document from template + dataInline text editing, image replacement, link management
Chat/campaigns/company/:id/chat/:chatIdAI chat for a stepSend messages, receive AI responses, apply overrides
Dependency Graph/graph/:ids or /graph/downstream/:idsInteractive upstream/downstream variable graphPan, zoom, click nodes to navigate
Storage/campaigns/storage/* or /campaigns/company/:id/storage/*File browser with foldersUpload, download, delete, copy, rename, create folders
Companies/companiesList of all companiesCreate, edit, manage users, configure microsite, audit config
Users/usersList of all usersCreate, edit, enable/disable, assign to companies, manage permissions
Security Groups/security-groupsPermission group definitionsCreate, edit, clone groups. Assign permissions.
Model Configs/model-configsAI model configurationsCreate, edit, delete, set default
Document Templates/templates/documentsDocument template listCreate, edit, preview, HTML-to-XSLT conversion
Labels (i18n)/campaigns/company/:id/campaign/:id/labelsCampaign/global labelsAdd, edit, delete, bulk replace
Campaign Apps/appsApplication configurationsView app details and storage
API Keys/account/api-keysUser's personal API keysView, manage

8. Quick Reference Card

Keyboard Shortcuts

ShortcutWhereWhat it does
Cmd/Ctrl + EnterChat, JSON editor, inline editorsSave / Apply changes
ESCChat, editors, modalsCancel editing / Close
Drag & DropVariable grid, phase list, step listReorder items

Status Color Coding

Color/BadgeMeaning
GrayNot started / Created
YellowWaiting / In Progress
PurpleProcessing
GreenComputed / Success
RedError / Failed

Useful URLs

URLPurpose
/api/public/healthSystem health check (returns "OK")
/api/public/versionBuild version and timestamp
/api/secured/{campaignId}/computation/statusComputation progress for a campaign