Skip to content

Site Features Reference

Detailed reference for all features configurable in pika-config.ts under siteFeatures.

Site features provide default configurations that apply across your entire Pika Platform instance. Individual chat apps can override most of these settings.

Configure the platform landing page.

homePage: {
homePageTitle: string;
welcomeMessage: string;
linksToChatApps: {
userChatAppRules: UserChatAppRule[];
};
}

Fields:

FieldTypeDescription
homePageTitlestringBrowser page title
welcomeMessagestringWelcome message displayed to users
userChatAppRulesUserChatAppRule[]Controls which users see which chat apps

UserChatAppRule:

interface UserChatAppRule {
userTypes?: UserType[]; // User types who see links
chatAppUserTypes?: UserType[]; // Types of apps to show them
}

Example:

homePage: {
homePageTitle: 'AI Assistants',
welcomeMessage: 'Choose an assistant to get started',
linksToChatApps: {
userChatAppRules: [
{
// Internal users see all apps
userTypes: ['internal-user'],
chatAppUserTypes: ['internal-user', 'external-user']
},
{
// External users only see external apps
userTypes: ['external-user'],
chatAppUserTypes: ['external-user']
}
]
}
}

Multi-tenancy configuration for accounts/organizations.

entity: {
enabled: boolean;
attributeName: string;
tableColumnHeaderTitle: string;
displayNameSingular: string;
displayNamePlural: string;
searchPlaceholderText: string;
}

When to use: Enable when users belong to accounts, organizations, or other entities that need separate data access.

Example:

entity: {
enabled: true,
attributeName: 'companyId',
tableColumnHeaderTitle: 'Company ID',
displayNameSingular: 'Company',
displayNamePlural: 'Companies',
searchPlaceholderText: 'Search companies...'
}

Allow users to temporarily override their custom data for testing.

userDataOverrides: {
enabled: boolean;
promptUserIfAnyOfTheseCustomUserDataAttributesAreMissing: string[];
}

Use case: Internal users testing different account scenarios.

Example:

userDataOverrides: {
enabled: true,
promptUserIfAnyOfTheseCustomUserDataAttributesAreMissing: [
'accountId',
'accountType',
'region'
]
}

Enable content administrators to view all user sessions.

contentAdmin: {
enabled: boolean;
}

Example:

contentAdmin: {
enabled: true
}

AI execution transparency feature.

traces: {
enabled: boolean;
userTypes: UserType[];
detailedTraces: {
enabled: boolean;
userTypes: UserType[];
};
}

Fields:

FieldDescription
enabledShow basic trace information
userTypesWho can see traces
detailedTraces.enabledShow technical implementation details
detailedTraces.userTypesWho can see detailed traces

Example:

traces: {
enabled: true,
userTypes: ['internal-user', 'external-user'],
detailedTraces: {
enabled: true,
userTypes: ['internal-user'] // Only internal users see details
}
}

Display legal/compliance disclaimers.

chatDisclaimerNotice: {
enabled: boolean;
notice: string;
}

Example:

chatDisclaimerNotice: {
enabled: true,
notice: 'This AI assistant provides general information only. For critical decisions, please consult a professional.'
}

Self-correcting AI responses.

verifyResponse: {
enabled: boolean;
autoRepromptThreshold: 'A' | 'B' | 'C' | 'D';
userTypes: UserType[];
}

Thresholds:

GradeMeaningAction
AAccurate and comprehensiveAccept
BAccurate but incompleteAccept
CAccurate with assumptionsAuto-retry if threshold ≤ C
DInaccurateAuto-retry if threshold ≤ D

Example:

verifyResponse: {
enabled: true,
autoRepromptThreshold: 'C', // Retry C and D responses
userTypes: ['internal-user']
}

Configure logout button.

logout: {
enabled: boolean;
userTypes: UserType[];
}

Example:

logout: {
enabled: true,
userTypes: ['internal-user', 'external-user']
}

Admin website configuration.

siteAdmin: {
websiteEnabled: boolean;
supportUserEntityAccessControl: {
enabled: boolean;
};
supportSpecificUserAccessControl: {
enabled: boolean;
};
sessionInsights: {
enabled: boolean;
};
}

Example:

siteAdmin: {
websiteEnabled: true,
supportUserEntityAccessControl: {
enabled: true
},
supportSpecificUserAccessControl: {
enabled: true
},
sessionInsights: {
enabled: true
}
}

File attachment configuration.

fileUpload: {
enabled: boolean;
mimeTypesAllowed: string[];
}

Common MIME types:

  • 'text/*' - All text files
  • 'text/csv' - CSV files
  • 'application/pdf' - PDF documents
  • 'image/jpeg', 'image/png' - Images
  • 'application/json' - JSON files

Example:

fileUpload: {
enabled: true,
mimeTypesAllowed: [
'text/*',
'application/pdf',
'image/jpeg',
'image/png',
'application/json'
]
}

Quick action buttons in chat.

suggestions: {
enabled: boolean;
suggestions: string[];
maxToShow: number;
randomize: boolean;
randomizeAfter: number;
}

Fields:

FieldDescription
suggestionsArray of suggestion texts (typically overridden by chat apps)
maxToShowMaximum suggestions to display at once
randomizeRandomize suggestion order
randomizeAfterStart randomizing after N messages

Example:

suggestions: {
enabled: true,
suggestions: [], // Overridden by chat apps
maxToShow: 3,
randomize: true,
randomizeAfter: 0
}

Customize chat input placeholder.

promptInputFieldLabel: {
enabled: boolean;
promptInputFieldLabel: string;
}

Example:

promptInputFieldLabel: {
enabled: true,
promptInputFieldLabel: 'Type your message...'
}

Global UI behavior settings.

uiCustomization: {
enabled: boolean;
showUserRegionInLeftNav: boolean;
showChatHistoryInStandaloneMode: boolean;
}

Example:

uiCustomization: {
enabled: true,
showUserRegionInLeftNav: true,
showChatHistoryInStandaloneMode: true
}

AI-generated analytics.

sessionInsights: {
enabled: boolean;
}

What it provides:

  • Goal achievement analysis
  • User satisfaction scoring
  • AI performance metrics
  • Interaction quality assessment

Example:

sessionInsights: {
enabled: true
}

Custom UI widgets system.

tags: {
enabled: boolean;
}

Example:

tags: {
enabled: true
}

Help users write better prompts.

agentInstructionAssistance: {
enabled: boolean;
}

Example:

agentInstructionAssistance: {
enabled: true
}

Automatically enhance prompts.

instructionAugmentation: {
enabled: boolean;
type: 'llm-semantic-directive-search';
}

Example:

instructionAugmentation: {
enabled: true,
type: 'llm-semantic-directive-search'
}

Remember user context across sessions.

userMemory: {
enabled: boolean;
maxMemoryRecordsPerPrompt: number;
maxKMatchesPerStrategy: number;
}

Fields:

FieldDescription
maxMemoryRecordsPerPromptMaximum memories included in each prompt
maxKMatchesPerStrategyMaximum matches per retrieval strategy (short-term, long-term)

Example:

userMemory: {
enabled: true,
maxMemoryRecordsPerPrompt: 25,
maxKMatchesPerStrategy: 5
}

Most features can be overridden per chat app:

Site-wide default:

pika-config.ts
siteFeatures: {
traces: {
enabled: true,
userTypes: ['internal-user']
}
}

Chat app override:

// Chat app configuration
features: {
traces: {
featureId: 'traces',
enabled: true,
userTypes: ['internal-user', 'external-user'] // Override
}
}
export const pikaConfig: PikaConfig = {
// ... project names ...
siteFeatures: {
homePage: {
homePageTitle: 'AI Assistants',
welcomeMessage: 'Welcome!',
linksToChatApps: {
userChatAppRules: [
{
userTypes: ['internal-user'],
chatAppUserTypes: ['internal-user', 'external-user']
}
]
}
},
entity: {
enabled: true,
attributeName: 'accountId',
tableColumnHeaderTitle: 'Account ID',
displayNameSingular: 'Account',
displayNamePlural: 'Accounts',
searchPlaceholderText: 'Search accounts...'
},
userDataOverrides: {
enabled: true,
promptUserIfAnyOfTheseCustomUserDataAttributesAreMissing: ['accountId']
},
contentAdmin: {
enabled: true
},
traces: {
enabled: true,
userTypes: ['internal-user'],
detailedTraces: {
enabled: true,
userTypes: ['internal-user']
}
},
chatDisclaimerNotice: {
enabled: true,
notice: 'AI-generated content. Verify important information.'
},
verifyResponse: {
enabled: true,
autoRepromptThreshold: 'C',
userTypes: ['internal-user']
},
logout: {
enabled: true,
userTypes: ['internal-user', 'external-user']
},
siteAdmin: {
websiteEnabled: true,
supportUserEntityAccessControl: { enabled: true },
supportSpecificUserAccessControl: { enabled: true },
sessionInsights: { enabled: true }
},
fileUpload: {
enabled: true,
mimeTypesAllowed: ['text/*', 'application/pdf']
},
suggestions: {
enabled: true,
suggestions: [],
maxToShow: 3,
randomize: true,
randomizeAfter: 0
},
promptInputFieldLabel: {
enabled: true,
promptInputFieldLabel: 'Message...'
},
uiCustomization: {
enabled: true,
showUserRegionInLeftNav: false,
showChatHistoryInStandaloneMode: true
},
sessionInsights: {
enabled: true
},
tags: {
enabled: true
},
agentInstructionAssistance: {
enabled: true
},
instructionAugmentation: {
enabled: true,
type: 'llm-semantic-directive-search'
},
userMemory: {
enabled: true,
maxMemoryRecordsPerPrompt: 25,
maxKMatchesPerStrategy: 5
}
}
};

Some features depend on others:

FeatureRequiresReason
User Data OverridesEntity (optional)Works better with entity system
Content Admin-Independent
Detailed TracesTracesExtension of basic traces
Session Insights-Independent
Entity Toggle (in chat apps)EntityNeeds entity system enabled

Features that impact performance:

FeatureImpactMitigation
User MemoryAdds to prompt sizeTune maxMemoryRecordsPerPrompt
Verify ResponseDoubles LLM callsEnable only for critical apps
Session InsightsPost-session processingAsync, no user-facing impact
Instruction AugmentationAdds to promptUsually minimal impact

If upgrading from an older Pika version, these features may be new:

  • instructionAugmentation - Added in v1.2
  • sessionInsights - Added in v1.1
  • tags - Added in v1.0

Check the Changelog for migration details.

import type {
SiteFeatures,
UserType,
UserChatAppRule
} from 'pika-shared/types/chatbot/chatbot-types';

See Types Reference for complete type definitions.