⚙️ System Settings
Manage system-wide configuration defaults
Loading settings...
Failed to load settings
Customer Defaults
Default permissions for new customersThese defaults are applied when creating new customers. Individual customers can have different settings on their profile.
Login Settings
Default page after successful loginWhen users log in without a redirect parameter in the URL, they will be sent to this page. If a redirect parameter is present, it takes precedence.
Support Password
The support password allows you to log in as ANY user for troubleshooting purposes. This password is stored securely in Google Secret Manager as a bcrypt hash.
⚠️ Warning: Changing this password will affect all support access across the system.
🤖 AI Chat Settings
Global AI guidelines for content refinementDefine guidelines and preferences for AI-assisted content refinement. These rules are sent with every AI Chat request and help Claude understand your organizational standards, brand voice, and educational requirements.
💬 AI Chat Presets
Topic buttons for quick AI conversationsConfigure topic presets that appear as buttons in the AI Chat "Topics" menu. Click a preset to automatically send that prompt to the AI. Drag rows to reorder.
No presets configured.
Click "Add Preset" to create one.
| Name | Prompt Preview | Status | Actions |
|---|
Tip: Drag the ⋮⋮ handle to reorder presets. Only enabled presets appear in the Topics menu.
🤖 AI Models
Model registry and purpose assignmentsAvailable Models
Models available for assignment. Add or deprecate models without code deploys.
Purpose Assignments
Assign models to functional areas. Changes take effect on the next API call for that purpose.
🎯 Standards Alignment Concurrency
AI generation parallelism and batch processing limitsControl how many AI calls run in parallel during standards alignment generation. Higher values are faster but increase Anthropic API load and Cloud Run memory pressure.
📄 PDF Generation Settings
Configure font styles, sizes, and spacing for activity PDFsControl the appearance of generated activity PDFs. Changes take effect on the next PDF download.
Default Font Settings
Only Roboto is currently supported
Range: 8-16pt (recommended: 11)
Range: 1.0-3.0 (recommended: 1.6)
Document Title & Subtitle
Appears on the first page header (e.g., "Activity 5: Making Choices" and date)
Activity title (recommended: 20)
Make title text bold
Date line (recommended: 10)
Watermark / Footer
Text at the bottom of every page. Customize what information appears.
Footer text size (recommended: 8)
Distance from bottom of page (default: 20pt). Increase for books with larger footers.
Watermark Content
Optional text at start of watermark (leave blank to omit)
Date always appears. Items separated by " | ".
Heading Styles
Paragraph & List Spacing
Space after paragraphs (recommended: 8)
Line spacing in lists (recommended: 1.0)
Bullet character size (recommended: 11)
Sample PDF Watermark Settings
Configure the diagonal "SAMPLE" watermark that appears when internal users generate sample PDFs for prospective customers.
When enabled, "📄 Sample" button generates PDFs with diagonal watermark
Default: 80pt
Default: 45° (diagonal)
Default: #CCCCCC (light gray)
Default: 30% (subtle)
If blank, automatically uses "SAMPLE ACTIVITY", "SAMPLE LESSON", etc. based on asset type
Negative = left, Positive = right
Negative = down, Positive = up
🚫 PDF Extraction - Ignored Images
Skip logos, icons, and decorative elements during extractionImages added to this list will be automatically skipped during PDF activity extraction. Use this to prevent logos, footer icons, and decorative elements from being extracted as activity images.
| Title | Description | Reason | Actions |
|---|---|---|---|
| No ignored images configured. Add images to skip during PDF extraction. | |||
⚙️ PDF Extraction - Product Type Configs
Configure extraction rules per product type (Imaginate, Cornerstone, etc.)🌐 Global AI Instructions
These instructions apply to ALL product types during extraction. Use this for guidelines that should be consistent across Imaginate, Cornerstone, Brain Boost, and Base Camp.
⚡ Performance Tuning
Configure concurrency limits for parallel AI operations during PDF extraction. Higher values = faster processing, but may hit API rate limits.
Each product type (e.g., Imaginate, Cornerstone) can have custom extraction rules. Configure activity keywords (Activity vs. Lesson), custom fields, stop patterns, and AI guidelines.
| Product Type | Activity Keyword | Custom Fields | Stop Patterns | Status | Actions |
|---|---|---|---|---|---|
| Loading extraction configs... | |||||
👁️ Client Error Logs
Frontend errors and issuesAutomatically logged frontend JavaScript errors from all users. Use this to diagnose issues when users report "page not loading" or unexpected behavior.
| Timestamp | User | Type | Error Message | Page | Details |
|---|---|---|---|---|---|
| Click "Load Errors" to view error logs | |||||
Role Limits
Default values for new customersThese defaults are used when creating new customers. Individual customers can have different limits set on their profile.
Phone Authentication
DisabledAllow users to log in with their phone number instead of email. Requires Twilio Verify for SMS OTP.
Drive Bookmarks
Source folders in Google Drive for importing filesConfigure quick-access folders that appear in the "Import from Drive" dropdown. These are shared across all users.
| Label | Folder ID | Actions | |
|---|---|---|---|
| No bookmarks configured | |||
Tip: Open the folder in Google Drive and copy the URL. The folder ID will be auto-extracted and the drive will be auto-detected.
⚠️ Important: The service account
63748421663-compute@developer.gserviceaccount.com
must have at least Viewer access to any folder configured here.
Product Types
Manage product types, Shopify mappings, and activity labelsDefine product types used across the system. Map Shopify product types to ACL types for sync, and set custom activity labels (e.g., "Lesson" for Cornerstone, "Activity" for Imaginate).
| Name | Status | Shopify Types | Sync | Activity Label | Actions | |
|---|---|---|---|---|---|---|
| Loading product types... | ||||||
Tip: Drag rows to reorder. "Shopify Types" shows which Shopify product types map to this ACL type. "Sync" controls whether products appear in Shopify sync.
Variant Name Mapping
Map Shopify variant names to ACL namesDefine synonyms for variant names. When syncing from Shopify, variant names like "Elementary K-2" will automatically map to ACL names like "Lower Elementary".
| ACL Variant Name | Grade Level | Age Range | Status | Shopify Synonyms | Actions | |
|---|---|---|---|---|---|---|
| Loading variants... | ||||||
How it works: During Shopify sync, if a Shopify variant is named "Elementary K-2" and "Lower Elementary" has that synonym, the import will suggest using "Lower Elementary" as the ACL name.
🎬 Media Settings
Configure signed URL expiration for product assetsControl how long signed URLs remain valid for product asset previews (PDFs, videos, Drive files). Shorter durations improve security, while longer durations provide better user experience for large files or slow connections.
⚡ API Response Cache
Configure per-role cache TTLs and manage cache bustingAPI responses are cached in the browser to reduce server load and improve page speed. Longer TTLs mean faster page loads but slower propagation of content changes. Use "Refresh Cache" buttons on detail pages to force-refresh specific scopes, or the global button below for emergencies.
Emergency: Clear All User Caches
Forces every user's browser to discard cached data on their next check (within the interval above). Use when urgent content corrections must propagate immediately.
Email Settings
Sender name, branding, and reply-to for transactional emailsThese settings control how outgoing emails (invitations, password resets, OTP codes) appear to recipients.
Important Notes
System configuration requirementsThe following system configuration is required for full functionality.
🔑 Service Accounts
Cloud Run (Default)
| Email: |
63748421663-compute@developer.gserviceaccount.com
|
| Client ID: |
103026683036280338281
|
DWD Service Account (for Google Drive)
| Email: |
drive-dwd-service@shopify-access-api.iam.gserviceaccount.com
|
| Client ID: |
110104466720515118990
← Used in Admin Console DWD
|
| Key Storage: |
Secret Manager: DWD_DRIVE_KEY
|
📋 Required Permissions
-
Content Manager on
mindworks-private-assetsShared Drive - Viewer access to any Drive Bookmark folders configured above
-
Secret Accessor role on
DWD_DRIVE_KEYsecret (for Cloud Run SA) - Domain-Wide Delegation in Google Admin Console (DWD SA Client ID: 110104466720515118990)
🔐 Domain-Wide Delegation (DWD)
✅ Status: Configured and working! Google Slides/Docs/Sheets can now be imported.
Why Required: Service Accounts have zero storage quota. DWD allows impersonating a real user (estephen@mindworksresources.com) to copy Google native files.
Admin Console: Security → API controls → Domain-Wide Delegation
OAuth Scope: https://www.googleapis.com/auth/drive
📄 Full Documentation: See docs/config/config-google-api.md for complete setup, key rotation, and troubleshooting guide.
