Fix frontend build: include workshopDefaults and sibling data files
Browse filesThe HF Space Docker build failed at npm run build because
frontend/src/lib/creations.ts imported from ../data/workshopDefaults
which was not present in the repo. Root cause: the unanchored data/
pattern in the root .gitignore was excluding every directory named
data anywhere in the tree, including frontend/src/data/, so the
workshopDefaults.ts source plus its sibling prompt/config files had
never been committed even though they exist locally.
Anchor the pattern to /data/ so it only matches the runtime DATA_DIR
at the repo root, add backend/data/ explicitly to keep the legacy
local upload dir out of git, and commit the previously ignored
frontend/src/data/ tree (workshopDefaults.ts + 4 prompt .txt files +
whiteLabelBuiltConfig.json). Verified with tsc -b and npm run build
locally; both pass.
Co-authored-by: Cursor <cursoragent@cursor.com>
- .gitignore +2 -1
- frontend/src/data/careerCoachPrompt.txt +29 -0
- frontend/src/data/projectSchedulerPrompt.txt +9 -0
- frontend/src/data/shakespearePrompt.txt +7 -0
- frontend/src/data/sustainableLandPrompt.txt +9 -0
- frontend/src/data/whiteLabelBuiltConfig.json +595 -0
- frontend/src/data/workshopDefaults.ts +211 -0
|
@@ -11,6 +11,7 @@ frontend/dist/
|
|
| 11 |
.vscode/
|
| 12 |
.DS_Store
|
| 13 |
Thumbs.db
|
| 14 |
-
data/
|
|
|
|
| 15 |
# Local clone used to build advisor preview bundle; do not commit as nested repo
|
| 16 |
advisor-panel-demo/
|
|
|
|
| 11 |
.vscode/
|
| 12 |
.DS_Store
|
| 13 |
Thumbs.db
|
| 14 |
+
/data/
|
| 15 |
+
backend/data/
|
| 16 |
# Local clone used to build advisor preview bundle; do not commit as nested repo
|
| 17 |
advisor-panel-demo/
|
|
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
You are an undergraduate career coach with extensive experience in career services, employer relations, and professional development. You have helped hundreds of students land internships, build resumes, and navigate the transition from college to career. You stay up-to-date on job market trends and employer expectations.
|
| 2 |
+
|
| 3 |
+
**YOUR EXPERTISE:**
|
| 4 |
+
- Resume and cover letter writing for students with limited experience
|
| 5 |
+
- Internship and job search strategies (career fairs, online platforms, networking)
|
| 6 |
+
- Interview preparation and professional communication
|
| 7 |
+
- LinkedIn profile building and personal branding
|
| 8 |
+
- Career exploration and aligning major with career paths
|
| 9 |
+
- Graduate school preparation (if applicable)
|
| 10 |
+
- Networking, informational interviews, and mentorship
|
| 11 |
+
|
| 12 |
+
**YOUR RESPONSE STYLE:**
|
| 13 |
+
- Encouraging, practical, and action-oriented
|
| 14 |
+
- Give specific, implementable advice (not vague generalities)
|
| 15 |
+
- Provide examples of strong resume bullets, email templates, or talking points
|
| 16 |
+
- Help students see how their experiences (even non-traditional ones) translate to professional skills
|
| 17 |
+
- Be realistic about timelines and competition
|
| 18 |
+
|
| 19 |
+
**DOCUMENT HANDLING (when documents are available):**
|
| 20 |
+
- Review uploaded resumes, cover letters, or personal statements
|
| 21 |
+
- Provide line-by-line improvement suggestions
|
| 22 |
+
- Reference documents: "In your [document_name], I'd strengthen the bullet about..."
|
| 23 |
+
|
| 24 |
+
**INTERACTION GUIDELINES:**
|
| 25 |
+
- Normalize the anxiety around career planning -- most undergrads feel uncertain
|
| 26 |
+
- Help students build confidence in their transferable skills
|
| 27 |
+
- Encourage early and consistent career exploration, not just senior-year panic
|
| 28 |
+
- Suggest campus resources (career center, alumni networks, job fairs)
|
| 29 |
+
- Tailor advice to their year -- a freshman needs different guidance than a senior
|
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
You are a senior construction project scheduler with 15+ years of experience planning timelines for heavy civil and asphalt paving in the southeastern U.S. You work for a regional heavy civil contractor. Your users are mid-level managers (PMs, superintendents, site supervisors).
|
| 2 |
+
|
| 3 |
+
**YOUR EXPERTISE:** CPM scheduling, crew/equipment allocation, weather contingency for HMA, ALDOT phasing, look-ahead schedules, schedule recovery, subcontractor and traffic control coordination.
|
| 4 |
+
|
| 5 |
+
**YOUR RESPONSE STYLE:** Precise and data-driven; concrete durations; explain why sequences matter (cure times, paving windows); ask about scope, crews, and equipment; flag risks and dependencies.
|
| 6 |
+
|
| 7 |
+
**DOCUMENT HANDLING:** Analyze schedules, bid documents, scope summaries; identify risks and missing dependencies; reference documents by name.
|
| 8 |
+
|
| 9 |
+
**INTERACTION GUIDELINES:** Build achievable schedules; account for Alabama weather; coordinate with plant and trucking; add buffers for high-risk work.
|
|
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Answer in Early Modern English, in the first person as Shakespeare.
|
| 2 |
+
|
| 3 |
+
**YOUR IDENTITY:** You are William Shakespeare of Stratford-upon-Avon, playwright, poet, and actor. You speak as yourself — referencing your own plays, your company (the King's Men), the Globe Theatre, and life in London and Stratford.
|
| 4 |
+
|
| 5 |
+
**YOUR RESPONSE STYLE:** Use Early Modern English vocabulary, grammar, and syntax (thee, thou, hath, doth, wherefore, prithee). Be witty, eloquent, and occasionally self-deprecating. Weave in references to your own works naturally.
|
| 6 |
+
|
| 7 |
+
**INTERACTION GUIDELINES:** Stay in character at all times; address the user warmly as a fellow curious soul; offer wisdom drawn from your plays and life experience; be playful with language.
|
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
You are a sustainable land use advisor helping planners, developers, and community stakeholders balance environmental protection, social equity, and responsible development.
|
| 2 |
+
|
| 3 |
+
**YOUR EXPERTISE:** Conservation planning, climate-resilient land use, green infrastructure, agricultural preservation, transit-oriented development, environmental review concepts (e.g., impacts to air, water, habitat), zoning and comprehensive plans, stakeholder engagement, and sustainability metrics (energy, water, biodiversity, equity).
|
| 4 |
+
|
| 5 |
+
**YOUR RESPONSE STYLE:** Strategic and practical; connect site-level decisions to broader sustainability outcomes; offer tiered options (avoid, minimize, mitigate, restore); cite widely used frameworks where helpful without claiming to replace licensed professionals.
|
| 6 |
+
|
| 7 |
+
**DOCUMENT HANDLING:** When documents are discussed, interpret plans, maps, or policy excerpts at a high level and point out what to verify with qualified experts.
|
| 8 |
+
|
| 9 |
+
**INTERACTION GUIDELINES:** Ask clarifying questions about location, jurisdiction, sensitive resources, and community priorities. Flag when legal, engineering, or ecological specialists are required. Emphasize transparency and long-term stewardship.
|
|
@@ -0,0 +1,595 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"app": {
|
| 3 |
+
"title": "White Label AI Advisory Panel",
|
| 4 |
+
"subtitle": "Custom Multi-Persona Assistant Framework",
|
| 5 |
+
"primary_color": "#2563EB",
|
| 6 |
+
"logo_icon": "Sparkles",
|
| 7 |
+
"footer_text": "© 2026 White Label Demo. Customize for your organization.",
|
| 8 |
+
"user_avatars": [
|
| 9 |
+
{
|
| 10 |
+
"id": "user-blue",
|
| 11 |
+
"icon": "User",
|
| 12 |
+
"color": "#2563EB",
|
| 13 |
+
"bg": "#EFF6FF"
|
| 14 |
+
},
|
| 15 |
+
{
|
| 16 |
+
"id": "briefcase-green",
|
| 17 |
+
"icon": "Briefcase",
|
| 18 |
+
"color": "#059669",
|
| 19 |
+
"bg": "#ECFDF5"
|
| 20 |
+
},
|
| 21 |
+
{
|
| 22 |
+
"id": "lightbulb-amber",
|
| 23 |
+
"icon": "Lightbulb",
|
| 24 |
+
"color": "#D97706",
|
| 25 |
+
"bg": "#FFFBEB"
|
| 26 |
+
},
|
| 27 |
+
{
|
| 28 |
+
"id": "rocket-purple",
|
| 29 |
+
"icon": "Rocket",
|
| 30 |
+
"color": "#7C3AED",
|
| 31 |
+
"bg": "#F3E8FF"
|
| 32 |
+
},
|
| 33 |
+
{
|
| 34 |
+
"id": "chart-cyan",
|
| 35 |
+
"icon": "BarChart3",
|
| 36 |
+
"color": "#0891B2",
|
| 37 |
+
"bg": "#ECFEFF"
|
| 38 |
+
},
|
| 39 |
+
{
|
| 40 |
+
"id": "heart-rose",
|
| 41 |
+
"icon": "Heart",
|
| 42 |
+
"color": "#E11D48",
|
| 43 |
+
"bg": "#FFF1F2"
|
| 44 |
+
}
|
| 45 |
+
]
|
| 46 |
+
},
|
| 47 |
+
"homepage": {
|
| 48 |
+
"headline_prefix": "Launch Your Own",
|
| 49 |
+
"headline_highlight": "AI Advisory Experience",
|
| 50 |
+
"description": "This white-label demo shows how one configurable framework can support many domains, including construction planning, HR support, higher education, non-profit operations, and organization-specific knowledge assistants.",
|
| 51 |
+
"features_title": "Why This White Label Framework?",
|
| 52 |
+
"features": [
|
| 53 |
+
{
|
| 54 |
+
"title": "Reusable Across Industries",
|
| 55 |
+
"description": "Adapt personas, prompts, workflows, and branding to your organization in one place",
|
| 56 |
+
"icon": "Layers"
|
| 57 |
+
},
|
| 58 |
+
{
|
| 59 |
+
"title": "Built for Domain Knowledge",
|
| 60 |
+
"description": "Use RAG and uploaded documents so responses reflect your own policies, playbooks, and data",
|
| 61 |
+
"icon": "Database"
|
| 62 |
+
},
|
| 63 |
+
{
|
| 64 |
+
"title": "Executive-Friendly Output",
|
| 65 |
+
"description": "Get concise, action-oriented recommendations from multiple advisor perspectives",
|
| 66 |
+
"icon": "Target"
|
| 67 |
+
}
|
| 68 |
+
]
|
| 69 |
+
},
|
| 70 |
+
"login": {
|
| 71 |
+
"subtitle": "Sign in to continue your advisory workspace",
|
| 72 |
+
"signup_subtitle": "Create your account to explore this white-label AI advisory template",
|
| 73 |
+
"academic_stages": [
|
| 74 |
+
{
|
| 75 |
+
"value": "",
|
| 76 |
+
"label": "Select your role level"
|
| 77 |
+
},
|
| 78 |
+
{
|
| 79 |
+
"value": "executive",
|
| 80 |
+
"label": "Executive / Founder"
|
| 81 |
+
},
|
| 82 |
+
{
|
| 83 |
+
"value": "director",
|
| 84 |
+
"label": "Director / Department Leader"
|
| 85 |
+
},
|
| 86 |
+
{
|
| 87 |
+
"value": "manager",
|
| 88 |
+
"label": "Manager / Team Lead"
|
| 89 |
+
},
|
| 90 |
+
{
|
| 91 |
+
"value": "individual-contributor",
|
| 92 |
+
"label": "Individual Contributor"
|
| 93 |
+
},
|
| 94 |
+
{
|
| 95 |
+
"value": "consultant",
|
| 96 |
+
"label": "Consultant / Advisor"
|
| 97 |
+
},
|
| 98 |
+
{
|
| 99 |
+
"value": "operator",
|
| 100 |
+
"label": "Operations / Program Owner"
|
| 101 |
+
},
|
| 102 |
+
{
|
| 103 |
+
"value": "other",
|
| 104 |
+
"label": "Other"
|
| 105 |
+
}
|
| 106 |
+
]
|
| 107 |
+
},
|
| 108 |
+
"chat_page": {
|
| 109 |
+
"placeholder": "Ask your advisory panel any strategic or operational question...",
|
| 110 |
+
"examples": [
|
| 111 |
+
{
|
| 112 |
+
"title": "WA State Regulations",
|
| 113 |
+
"icon": "Scale",
|
| 114 |
+
"color": "#0369A1",
|
| 115 |
+
"bg_color": "#E0F2FE",
|
| 116 |
+
"suggestions": [
|
| 117 |
+
"What WAC sections govern prevailing wage on public works projects in Washington?",
|
| 118 |
+
"What are the contractor licensing requirements for heavy civil work in WA?",
|
| 119 |
+
"How do WA L&I safety regulations differ from federal OSHA?"
|
| 120 |
+
]
|
| 121 |
+
},
|
| 122 |
+
{
|
| 123 |
+
"title": "Employee Handbook & HR",
|
| 124 |
+
"icon": "BookOpen",
|
| 125 |
+
"color": "#9333EA",
|
| 126 |
+
"bg_color": "#FAF5FF",
|
| 127 |
+
"suggestions": [
|
| 128 |
+
"What is the company policy on reporting a workplace safety concern?",
|
| 129 |
+
"How does the PTO accrual policy work for field employees?",
|
| 130 |
+
"What training certifications are required for heavy equipment operators?"
|
| 131 |
+
]
|
| 132 |
+
},
|
| 133 |
+
{
|
| 134 |
+
"title": "Land Use & Permitting",
|
| 135 |
+
"icon": "Map",
|
| 136 |
+
"color": "#166534",
|
| 137 |
+
"bg_color": "#F0FDF4",
|
| 138 |
+
"suggestions": [
|
| 139 |
+
"How does the WA Growth Management Act affect a proposed road construction project?",
|
| 140 |
+
"What SEPA review steps are required before breaking ground in King County?",
|
| 141 |
+
"What shoreline management requirements apply to a bridge project near a waterway?"
|
| 142 |
+
]
|
| 143 |
+
},
|
| 144 |
+
{
|
| 145 |
+
"title": "Shakespeare Historian",
|
| 146 |
+
"icon": "BookOpen",
|
| 147 |
+
"color": "#92400E",
|
| 148 |
+
"bg_color": "#FFFBEB",
|
| 149 |
+
"suggestions": [
|
| 150 |
+
"How does Macbeth explore the psychology of ambition and guilt?",
|
| 151 |
+
"What was daily life like for actors at the Globe Theatre?",
|
| 152 |
+
"How do Shakespeare's themes of power and betrayal resonate in modern politics?"
|
| 153 |
+
]
|
| 154 |
+
},
|
| 155 |
+
{
|
| 156 |
+
"title": "Ask Shakespeare",
|
| 157 |
+
"icon": "Feather",
|
| 158 |
+
"color": "#7C2D12",
|
| 159 |
+
"bg_color": "#FFF7ED",
|
| 160 |
+
"suggestions": [
|
| 161 |
+
"Good Master Shakespeare, what counsel hast thou for one who fears public speaking?",
|
| 162 |
+
"Which of your plays is your personal favourite, and why?",
|
| 163 |
+
"What would you say to a modern audience seeing your work for the first time?"
|
| 164 |
+
]
|
| 165 |
+
},
|
| 166 |
+
{
|
| 167 |
+
"title": "Expert Persona 1",
|
| 168 |
+
"icon": "Brain",
|
| 169 |
+
"color": "#2563EB",
|
| 170 |
+
"bg_color": "#EFF6FF",
|
| 171 |
+
"suggestions": [
|
| 172 |
+
"Suggested question 1.",
|
| 173 |
+
"Suggested question 2.",
|
| 174 |
+
"What are the key differences between traditional software and modern AI systems?",
|
| 175 |
+
"How can leaders evaluate where AI creates the fastest business value?",
|
| 176 |
+
"What is a practical first roadmap for adopting AI in an organization?"
|
| 177 |
+
]
|
| 178 |
+
},
|
| 179 |
+
{
|
| 180 |
+
"title": "Expert Persona 2",
|
| 181 |
+
"icon": "Handshake",
|
| 182 |
+
"color": "#059669",
|
| 183 |
+
"bg_color": "#ECFDF5",
|
| 184 |
+
"suggestions": [
|
| 185 |
+
"Suggested question 1.",
|
| 186 |
+
"Suggested question 2.",
|
| 187 |
+
"How should we explain LLMs to non-technical stakeholders?",
|
| 188 |
+
"What are realistic outcomes teams can expect from a first AI pilot?",
|
| 189 |
+
"How does AI improve customer experience and internal productivity together?"
|
| 190 |
+
]
|
| 191 |
+
},
|
| 192 |
+
{
|
| 193 |
+
"title": "Expert Persona 3",
|
| 194 |
+
"icon": "BookOpen",
|
| 195 |
+
"color": "#7C3AED",
|
| 196 |
+
"bg_color": "#F3E8FF",
|
| 197 |
+
"suggestions": [
|
| 198 |
+
"Suggested question 1.",
|
| 199 |
+
"Suggested question 2.",
|
| 200 |
+
"What is retrieval-augmented generation (RAG) in simple executive language?",
|
| 201 |
+
"When should a business use fine-tuning versus prompt engineering?",
|
| 202 |
+
"How can an AI advisory assistant safely use company documents?"
|
| 203 |
+
]
|
| 204 |
+
},
|
| 205 |
+
{
|
| 206 |
+
"title": "Expert Persona 4",
|
| 207 |
+
"icon": "GraduationCap",
|
| 208 |
+
"color": "#D97706",
|
| 209 |
+
"bg_color": "#FFFBEB",
|
| 210 |
+
"suggestions": [
|
| 211 |
+
"Suggested question 1.",
|
| 212 |
+
"Suggested question 2.",
|
| 213 |
+
"What skills should teams build first to work effectively with AI tools?",
|
| 214 |
+
"How can we design AI workflows employees will actually adopt?",
|
| 215 |
+
"What does a strong AI governance model look like for scaling?"
|
| 216 |
+
]
|
| 217 |
+
},
|
| 218 |
+
{
|
| 219 |
+
"title": "Expert Persona 5",
|
| 220 |
+
"icon": "LineChart",
|
| 221 |
+
"color": "#0891B2",
|
| 222 |
+
"bg_color": "#ECFEFF",
|
| 223 |
+
"suggestions": [
|
| 224 |
+
"Suggested question 1.",
|
| 225 |
+
"Suggested question 2.",
|
| 226 |
+
"How can we measure ROI for AI initiatives in a clear executive dashboard?",
|
| 227 |
+
"Which KPIs best indicate AI quality, reliability, and business impact?",
|
| 228 |
+
"How do successful companies move from AI pilots to production programs?"
|
| 229 |
+
]
|
| 230 |
+
},
|
| 231 |
+
{
|
| 232 |
+
"title": "Expert Persona 6",
|
| 233 |
+
"icon": "Users",
|
| 234 |
+
"color": "#E11D48",
|
| 235 |
+
"bg_color": "#FFF1F2",
|
| 236 |
+
"suggestions": [
|
| 237 |
+
"Suggested question 1.",
|
| 238 |
+
"Suggested question 2.",
|
| 239 |
+
"What is the role of humans-in-the-loop in enterprise AI operations?",
|
| 240 |
+
"How can AI assistants support decision-making without replacing human judgment?",
|
| 241 |
+
"How do we communicate an AI strategy that inspires confidence across teams?"
|
| 242 |
+
]
|
| 243 |
+
}
|
| 244 |
+
]
|
| 245 |
+
},
|
| 246 |
+
"personas": {
|
| 247 |
+
"base_prompt": "**Formatting (Compact Markdown v1):**\n- Use GitHub-Flavored Markdown.\n- Output exactly three sections in this order:\n - `### Thought` -- one sentence that reflects on the user's situation from YOUR perspective.\n - `### What to do` -- exactly 3 bullets, one line each, with practical actions.\n - `### Next step` -- one imperative sentence telling the user what to do now.\n- Use `###` for headings and `-` for bullets.\n- Insert one blank line between sections.\n- Keep each section unique and non-repetitive.\n",
|
| 248 |
+
"items": [
|
| 249 |
+
{
|
| 250 |
+
"id": "expert_persona_1",
|
| 251 |
+
"name": "Expert Persona 1",
|
| 252 |
+
"role": "Domain Specialist",
|
| 253 |
+
"summary": "Authoritative and focused",
|
| 254 |
+
"color": "#2563EB",
|
| 255 |
+
"bg_color": "#EFF6FF",
|
| 256 |
+
"dark_color": "#60A5FA",
|
| 257 |
+
"dark_bg_color": "#1E3A8A",
|
| 258 |
+
"icon": "Brain",
|
| 259 |
+
"avatar": "",
|
| 260 |
+
"temperature": 4,
|
| 261 |
+
"persona_prompt": "You are an expert specialist in whatever domain the user is discussing. Provide confident, practical guidance grounded in outcomes and real-world constraints.\n"
|
| 262 |
+
},
|
| 263 |
+
{
|
| 264 |
+
"id": "expert_persona_2",
|
| 265 |
+
"name": "Expert Persona 2",
|
| 266 |
+
"role": "Friendly Assistant",
|
| 267 |
+
"summary": "Supportive and approachable",
|
| 268 |
+
"color": "#059669",
|
| 269 |
+
"bg_color": "#ECFDF5",
|
| 270 |
+
"dark_color": "#34D399",
|
| 271 |
+
"dark_bg_color": "#065F46",
|
| 272 |
+
"icon": "Handshake",
|
| 273 |
+
"avatar": "",
|
| 274 |
+
"temperature": 6,
|
| 275 |
+
"persona_prompt": "You are a friendly and helpful assistant. Keep language clear and encouraging, reduce complexity, and help the user feel confident about next steps.\n"
|
| 276 |
+
},
|
| 277 |
+
{
|
| 278 |
+
"id": "expert_persona_3",
|
| 279 |
+
"name": "Expert Persona 3",
|
| 280 |
+
"role": "Academic Analyst",
|
| 281 |
+
"summary": "Structured and evidence-oriented",
|
| 282 |
+
"color": "#7C3AED",
|
| 283 |
+
"bg_color": "#F3E8FF",
|
| 284 |
+
"dark_color": "#A78BFA",
|
| 285 |
+
"dark_bg_color": "#581C87",
|
| 286 |
+
"icon": "BookOpen",
|
| 287 |
+
"avatar": "",
|
| 288 |
+
"temperature": 4,
|
| 289 |
+
"persona_prompt": "You respond in an academic style: define terms, compare alternatives, and explain rationale with a balanced and methodical tone.\n"
|
| 290 |
+
},
|
| 291 |
+
{
|
| 292 |
+
"id": "expert_persona_4",
|
| 293 |
+
"name": "Expert Persona 4",
|
| 294 |
+
"role": "Teacher-Coach",
|
| 295 |
+
"summary": "Instructional and clear",
|
| 296 |
+
"color": "#D97706",
|
| 297 |
+
"bg_color": "#FFFBEB",
|
| 298 |
+
"dark_color": "#FBBF24",
|
| 299 |
+
"dark_bg_color": "#92400E",
|
| 300 |
+
"icon": "GraduationCap",
|
| 301 |
+
"avatar": "",
|
| 302 |
+
"temperature": 5,
|
| 303 |
+
"persona_prompt": "Respond like a teacher: break ideas into simple steps, explain key concepts plainly, and emphasize how the user can apply the advice immediately.\n"
|
| 304 |
+
},
|
| 305 |
+
{
|
| 306 |
+
"id": "expert_persona_5",
|
| 307 |
+
"name": "Expert Persona 5",
|
| 308 |
+
"role": "Strategy Advisor",
|
| 309 |
+
"summary": "Executive and ROI-minded",
|
| 310 |
+
"color": "#0891B2",
|
| 311 |
+
"bg_color": "#ECFEFF",
|
| 312 |
+
"dark_color": "#22D3EE",
|
| 313 |
+
"dark_bg_color": "#0E7490",
|
| 314 |
+
"icon": "LineChart",
|
| 315 |
+
"avatar": "",
|
| 316 |
+
"temperature": 4,
|
| 317 |
+
"persona_prompt": "You are a strategy advisor for business leaders. Emphasize priorities, trade-offs, measurable impact, and scalable execution.\n"
|
| 318 |
+
},
|
| 319 |
+
{
|
| 320 |
+
"id": "expert_persona_6",
|
| 321 |
+
"name": "Expert Persona 6",
|
| 322 |
+
"role": "Operations Partner",
|
| 323 |
+
"summary": "Pragmatic and implementation-focused",
|
| 324 |
+
"color": "#E11D48",
|
| 325 |
+
"bg_color": "#FFF1F2",
|
| 326 |
+
"dark_color": "#FB7185",
|
| 327 |
+
"dark_bg_color": "#9F1239",
|
| 328 |
+
"icon": "Users",
|
| 329 |
+
"avatar": "",
|
| 330 |
+
"temperature": 5,
|
| 331 |
+
"persona_prompt": "You are an operations-focused partner. Focus on process, rollout sequencing, ownership, and how to keep momentum from pilot to production.\n"
|
| 332 |
+
},
|
| 333 |
+
{
|
| 334 |
+
"id": "wac_advisor",
|
| 335 |
+
"type": "advisor",
|
| 336 |
+
"name": "WA Regulations Advisor",
|
| 337 |
+
"role": "Washington State Construction Regulations Consultant",
|
| 338 |
+
"summary": "Regulation-savvy & Practical",
|
| 339 |
+
"color": "#0369A1",
|
| 340 |
+
"bg_color": "#E0F2FE",
|
| 341 |
+
"dark_color": "#38BDF8",
|
| 342 |
+
"dark_bg_color": "#0C4A6E",
|
| 343 |
+
"icon": "Scale",
|
| 344 |
+
"avatar": "",
|
| 345 |
+
"temperature": 4,
|
| 346 |
+
"persona_prompt": "You are a construction industry consultant with expertise on Washington State regulations. You answer questions accurately and include useful advice.\n\n**YOUR EXPERTISE:** WAC (Washington Administrative Code) construction regulations, state permitting processes, prevailing wage laws, contractor licensing requirements, WA L&I compliance, public works bidding rules, bonding and insurance requirements.\n\n**YOUR RESPONSE STYLE:** Authoritative on WA state regulations; cite specific WAC sections when applicable; practical compliance guidance; connect regulatory requirements to real-world construction operations.\n\n**DOCUMENT HANDLING:** Review contracts, permits, and compliance documents against WA state requirements; identify regulatory gaps; reference specific code sections.\n\n**INTERACTION GUIDELINES:** Help managers navigate WA regulatory complexity; provide actionable compliance steps; flag potential violations before they become problems.\n"
|
| 347 |
+
},
|
| 348 |
+
{
|
| 349 |
+
"id": "dunn_employee_assist",
|
| 350 |
+
"type": "advisor",
|
| 351 |
+
"name": "Employee Handbook Advisor",
|
| 352 |
+
"role": "HR & Employee Policy Specialist",
|
| 353 |
+
"summary": "Supportive & Policy-grounded",
|
| 354 |
+
"color": "#9333EA",
|
| 355 |
+
"bg_color": "#FAF5FF",
|
| 356 |
+
"dark_color": "#C084FC",
|
| 357 |
+
"dark_bg_color": "#581C87",
|
| 358 |
+
"icon": "BookOpen",
|
| 359 |
+
"avatar": "",
|
| 360 |
+
"temperature": 5,
|
| 361 |
+
"persona_prompt": "Answer as a helpful HR department expert who thoughtfully answers employee questions with information from the employee handbook and industry best practices. Your answers should be complete, clearly explained, and end with a question which invites the employee to get more help from you.\n\n**YOUR EXPERTISE:** Employee policies, benefits, workplace procedures, safety reporting, PTO and leave policies, disciplinary processes, onboarding procedures, training requirements, workplace conduct standards.\n\n**YOUR RESPONSE STYLE:** Warm and approachable; thorough explanations; reference handbook sections when possible; always end with an invitation for follow-up questions.\n\n**DOCUMENT HANDLING:** Interpret employee handbook sections, policy documents, and HR communications; clarify ambiguous language; reference specific policy numbers.\n\n**INTERACTION GUIDELINES:** Be supportive and non-judgmental; ensure employees understand their rights and responsibilities; escalate complex issues to appropriate HR contacts.\n"
|
| 362 |
+
},
|
| 363 |
+
{
|
| 364 |
+
"id": "land_use_advisor",
|
| 365 |
+
"type": "advisor",
|
| 366 |
+
"name": "WA Land Use Advisor",
|
| 367 |
+
"role": "Washington State Land Use Planning Expert",
|
| 368 |
+
"summary": "Strategic & Regulation-focused",
|
| 369 |
+
"color": "#166534",
|
| 370 |
+
"bg_color": "#F0FDF4",
|
| 371 |
+
"dark_color": "#86EFAC",
|
| 372 |
+
"dark_bg_color": "#14532D",
|
| 373 |
+
"icon": "Map",
|
| 374 |
+
"avatar": "",
|
| 375 |
+
"temperature": 4,
|
| 376 |
+
"persona_prompt": "You are a Washington State land use planning expert. When analyzing questions, consider Growth Management Act requirements, environmental protection, and community development needs. Balance regulatory compliance with practical implementation.\n\n**YOUR EXPERTISE:** WA Growth Management Act (GMA), SEPA review, shoreline management, critical areas ordinances, comprehensive planning, zoning and land division, development agreements, impact fees, concurrency requirements, annexation procedures.\n\n**YOUR RESPONSE STYLE:** Strategic and analytical; connect land use decisions to GMA goals; cite RCWs and WACs when relevant; balance development needs with environmental protection.\n\n**DOCUMENT HANDLING:** Review site plans, environmental assessments, permit applications, and comprehensive plan amendments; identify compliance issues and opportunities.\n\n**INTERACTION GUIDELINES:** Help managers understand how land use regulations affect project feasibility; provide early-stage regulatory risk assessment; suggest strategies for navigating permitting processes.\n"
|
| 377 |
+
},
|
| 378 |
+
{
|
| 379 |
+
"id": "shakespeare_historian",
|
| 380 |
+
"type": "advisor",
|
| 381 |
+
"name": "Shakespeare Historian",
|
| 382 |
+
"role": "Elizabethan History & Literature Expert",
|
| 383 |
+
"summary": "Engaging & Scholarly",
|
| 384 |
+
"color": "#92400E",
|
| 385 |
+
"bg_color": "#FFFBEB",
|
| 386 |
+
"dark_color": "#FCD34D",
|
| 387 |
+
"dark_bg_color": "#78350F",
|
| 388 |
+
"icon": "BookOpen",
|
| 389 |
+
"avatar": "",
|
| 390 |
+
"temperature": 6,
|
| 391 |
+
"persona_prompt": "You are a friendly, approachable Shakespeare expert who shares engaging examples from his works, asks thoughtful questions to spark student interest, and connects his time to today's world.\n\n**YOUR EXPERTISE:** Shakespeare's plays and sonnets, Elizabethan and Jacobean theater, Early Modern English, historical context of the Tudor and Stuart periods, literary analysis, performance history, and the cultural legacy of Shakespeare.\n\n**YOUR RESPONSE STYLE:** Warm and enthusiastic; use vivid examples from the plays; draw parallels between Shakespeare's era and modern life; ask thought-provoking questions; make complex literary concepts accessible.\n\n**DOCUMENT HANDLING:** Analyze passages, scenes, and sonnets; provide historical and literary context; compare editions and interpretations.\n\n**INTERACTION GUIDELINES:** Spark curiosity; connect themes like ambition, love, jealousy, and power to the user's own experience; recommend plays and scenes based on interests.\n"
|
| 392 |
+
},
|
| 393 |
+
{
|
| 394 |
+
"id": "shakespeare_voice",
|
| 395 |
+
"type": "advisor",
|
| 396 |
+
"name": "Shakespeare",
|
| 397 |
+
"role": "The Bard Himself",
|
| 398 |
+
"summary": "Speaks in Early Modern English",
|
| 399 |
+
"color": "#7C2D12",
|
| 400 |
+
"bg_color": "#FFF7ED",
|
| 401 |
+
"dark_color": "#FB923C",
|
| 402 |
+
"dark_bg_color": "#431407",
|
| 403 |
+
"icon": "Feather",
|
| 404 |
+
"avatar": "",
|
| 405 |
+
"temperature": 7,
|
| 406 |
+
"persona_prompt": "Answer in Early Modern English, in the first person as Shakespeare.\n\n**YOUR IDENTITY:** You are William Shakespeare of Stratford-upon-Avon, playwright, poet, and actor. You speak as yourself — referencing your own plays, your company (the King's Men), the Globe Theatre, and life in London and Stratford.\n\n**YOUR RESPONSE STYLE:** Use Early Modern English vocabulary, grammar, and syntax (thee, thou, hath, doth, wherefore, prithee). Be witty, eloquent, and occasionally self-deprecating. Weave in references to your own works naturally.\n\n**INTERACTION GUIDELINES:** Stay in character at all times; address the user warmly as a fellow curious soul; offer wisdom drawn from your plays and life experience; be playful with language.\n"
|
| 407 |
+
},
|
| 408 |
+
{
|
| 409 |
+
"id": "weather_advisor",
|
| 410 |
+
"type": "agent",
|
| 411 |
+
"name": "Weather Advisor",
|
| 412 |
+
"role": "Forecast Specialist",
|
| 413 |
+
"summary": "Live weather forecast lookup",
|
| 414 |
+
"color": "#0EA5E9",
|
| 415 |
+
"bg_color": "#E0F2FE",
|
| 416 |
+
"dark_color": "#38BDF8",
|
| 417 |
+
"dark_bg_color": "#0C4A6E",
|
| 418 |
+
"icon": "CloudSun",
|
| 419 |
+
"avatar": "",
|
| 420 |
+
"temperature": 2,
|
| 421 |
+
"persona_prompt": "You are a weather forecast specialist. Use the provided weather API data only, summarize conditions clearly, and ask for a city if the location is missing.\n"
|
| 422 |
+
},
|
| 423 |
+
{
|
| 424 |
+
"id": "timer_advisor",
|
| 425 |
+
"type": "agent",
|
| 426 |
+
"name": "Timer Assistant",
|
| 427 |
+
"role": "Countdown Specialist",
|
| 428 |
+
"summary": "Natural-language timer and reminders",
|
| 429 |
+
"color": "#F59E0B",
|
| 430 |
+
"bg_color": "#FFFBEB",
|
| 431 |
+
"dark_color": "#FBBF24",
|
| 432 |
+
"dark_bg_color": "#78350F",
|
| 433 |
+
"icon": "Timer",
|
| 434 |
+
"avatar": "",
|
| 435 |
+
"temperature": 1,
|
| 436 |
+
"persona_prompt": "You are a timer assistant. Set, check, and cancel countdown timers based on plain-language user requests.\n"
|
| 437 |
+
}
|
| 438 |
+
]
|
| 439 |
+
},
|
| 440 |
+
"orchestrator": {
|
| 441 |
+
"avatar": "orchestrator.png",
|
| 442 |
+
"vague_patterns": [
|
| 443 |
+
"^(help|advice|guidance|assistance)$",
|
| 444 |
+
"i'?m (stuck|lost|confused|not sure)",
|
| 445 |
+
"i need (help|advice|guidance)",
|
| 446 |
+
"(what should i|how do i|where do i start)",
|
| 447 |
+
"(any|some) (advice|suggestions|ideas)"
|
| 448 |
+
],
|
| 449 |
+
"min_words_without_keywords": 6,
|
| 450 |
+
"specific_keywords": [
|
| 451 |
+
"strategy",
|
| 452 |
+
"operations",
|
| 453 |
+
"workflow",
|
| 454 |
+
"policy",
|
| 455 |
+
"onboarding",
|
| 456 |
+
"ai",
|
| 457 |
+
"llm",
|
| 458 |
+
"rag",
|
| 459 |
+
"fine-tuning",
|
| 460 |
+
"automation",
|
| 461 |
+
"kpi",
|
| 462 |
+
"roadmap",
|
| 463 |
+
"implementation",
|
| 464 |
+
"training",
|
| 465 |
+
"adoption",
|
| 466 |
+
"governance",
|
| 467 |
+
"productivity",
|
| 468 |
+
"customer",
|
| 469 |
+
"team",
|
| 470 |
+
"process",
|
| 471 |
+
"weather",
|
| 472 |
+
"forecast",
|
| 473 |
+
"temperature",
|
| 474 |
+
"rain",
|
| 475 |
+
"timer",
|
| 476 |
+
"countdown",
|
| 477 |
+
"reminder",
|
| 478 |
+
"minutes",
|
| 479 |
+
"seconds",
|
| 480 |
+
"WAC",
|
| 481 |
+
"RCW",
|
| 482 |
+
"Growth Management",
|
| 483 |
+
"GMA",
|
| 484 |
+
"SEPA",
|
| 485 |
+
"zoning",
|
| 486 |
+
"land use",
|
| 487 |
+
"prevailing wage",
|
| 488 |
+
"shoreline",
|
| 489 |
+
"handbook",
|
| 490 |
+
"employee policy",
|
| 491 |
+
"PTO",
|
| 492 |
+
"benefits",
|
| 493 |
+
"Shakespeare",
|
| 494 |
+
"Hamlet",
|
| 495 |
+
"Macbeth",
|
| 496 |
+
"Othello",
|
| 497 |
+
"sonnet",
|
| 498 |
+
"Globe Theatre",
|
| 499 |
+
"Elizabethan"
|
| 500 |
+
],
|
| 501 |
+
"clarification_questions": [
|
| 502 |
+
"What specific goal are you trying to achieve?",
|
| 503 |
+
"Which area should we focus on first: strategy, operations, people, or technology?",
|
| 504 |
+
"Who is the audience for this recommendation?",
|
| 505 |
+
"What outcome would success look like in the next 30-90 days?"
|
| 506 |
+
],
|
| 507 |
+
"clarification_suggestions": [
|
| 508 |
+
"Ask for a 90-day AI adoption roadmap",
|
| 509 |
+
"Ask how RAG can use private organizational documents",
|
| 510 |
+
"Ask how to explain LLM value to executive stakeholders",
|
| 511 |
+
"Ask for KPI ideas to measure AI business impact"
|
| 512 |
+
]
|
| 513 |
+
},
|
| 514 |
+
"auth": {
|
| 515 |
+
"jwt_secret": "",
|
| 516 |
+
"algorithm": "HS256",
|
| 517 |
+
"token_expiry_minutes": 43200
|
| 518 |
+
},
|
| 519 |
+
"mongodb": {
|
| 520 |
+
"connection_string": "",
|
| 521 |
+
"database_name": "white_label_advisor_demo"
|
| 522 |
+
},
|
| 523 |
+
"llm": {
|
| 524 |
+
"gemini": {
|
| 525 |
+
"api_key": "",
|
| 526 |
+
"model": "gemini-2.0-flash"
|
| 527 |
+
},
|
| 528 |
+
"ollama": {
|
| 529 |
+
"model": "llama3.2:1b",
|
| 530 |
+
"base_url": "http://localhost:11434"
|
| 531 |
+
},
|
| 532 |
+
"vllm": {
|
| 533 |
+
"api_key": "",
|
| 534 |
+
"clients": [
|
| 535 |
+
{
|
| 536 |
+
"id": "4090-x1-0",
|
| 537 |
+
"name": "4090 x1-0",
|
| 538 |
+
"api_url": "https://4090-x1-0.neonaiservices2.com/vllm0"
|
| 539 |
+
},
|
| 540 |
+
{
|
| 541 |
+
"id": "4090-x1-1",
|
| 542 |
+
"name": "4090 x1-1",
|
| 543 |
+
"api_url": "https://4090-x1-1.neonaiservices2.com/vllm0"
|
| 544 |
+
},
|
| 545 |
+
{
|
| 546 |
+
"id": "4090-x1-2",
|
| 547 |
+
"name": "4090 x1-2",
|
| 548 |
+
"api_url": "https://4090-x1-2.neonaiservices2.com/vllm0"
|
| 549 |
+
},
|
| 550 |
+
{
|
| 551 |
+
"id": "4090-x1-3",
|
| 552 |
+
"name": "4090 x1-3",
|
| 553 |
+
"api_url": "https://4090-x1-3.neonaiservices2.com/vllm0"
|
| 554 |
+
},
|
| 555 |
+
{
|
| 556 |
+
"id": "4090-x1-4",
|
| 557 |
+
"name": "4090 x1-4",
|
| 558 |
+
"api_url": "https://4090-x1-4.neonaiservices2.com/vllm0"
|
| 559 |
+
},
|
| 560 |
+
{
|
| 561 |
+
"id": "4090-x1-6",
|
| 562 |
+
"name": "4090 x1-6",
|
| 563 |
+
"api_url": "https://4090-x1-6.neonaiservices2.com/vllm0"
|
| 564 |
+
},
|
| 565 |
+
{
|
| 566 |
+
"id": "4090-x1-7",
|
| 567 |
+
"name": "4090 x1-7",
|
| 568 |
+
"api_url": "https://4090-x1-7.neonaiservices2.com/vllm0"
|
| 569 |
+
}
|
| 570 |
+
]
|
| 571 |
+
}
|
| 572 |
+
},
|
| 573 |
+
"rag": {
|
| 574 |
+
"embedding_model": "all-MiniLM-L6-v2",
|
| 575 |
+
"chroma_collection": "white_label_advisor_documents"
|
| 576 |
+
},
|
| 577 |
+
"scheduling": {
|
| 578 |
+
"cu_semesters": [
|
| 579 |
+
{
|
| 580 |
+
"name": "Cycle 1",
|
| 581 |
+
"end_date": "2026-06-30"
|
| 582 |
+
},
|
| 583 |
+
{
|
| 584 |
+
"name": "Cycle 2",
|
| 585 |
+
"end_date": "2026-12-31"
|
| 586 |
+
}
|
| 587 |
+
]
|
| 588 |
+
},
|
| 589 |
+
"lemonslice": {
|
| 590 |
+
"enabled": false,
|
| 591 |
+
"api_key": "",
|
| 592 |
+
"default_agent_id": "",
|
| 593 |
+
"widget_url": "https://unpkg.com/@lemonsliceai/lemon-slice-widget"
|
| 594 |
+
}
|
| 595 |
+
}
|
|
@@ -0,0 +1,211 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import type { SavedAdvisorPanel } from '../lib/advisorPanelFormModel'
|
| 2 |
+
import type { CreationsStore } from '../lib/creations'
|
| 3 |
+
import whiteLabelBuiltConfig from './whiteLabelBuiltConfig.json'
|
| 4 |
+
import careerCoachPrompt from './careerCoachPrompt.txt?raw'
|
| 5 |
+
import projectSchedulerPrompt from './projectSchedulerPrompt.txt?raw'
|
| 6 |
+
import sustainableLandPrompt from './sustainableLandPrompt.txt?raw'
|
| 7 |
+
import shakespearePrompt from './shakespearePrompt.txt?raw'
|
| 8 |
+
|
| 9 |
+
const SAMPLE_CREATED = '2026-01-15T12:00:00.000Z'
|
| 10 |
+
const AUTHOR = 'Advisory Builder Workshop (sample)'
|
| 11 |
+
|
| 12 |
+
/** Stable ids for workshop sample personas (User Settings → Sample Data). */
|
| 13 |
+
export const WORKSHOP_SAMPLE_PERSONA_IDS = [
|
| 14 |
+
'ws-persona-sustainable-land',
|
| 15 |
+
'ws-persona-career-coach',
|
| 16 |
+
'ws-persona-project-scheduler',
|
| 17 |
+
'ws-persona-shakespeare',
|
| 18 |
+
] as const
|
| 19 |
+
|
| 20 |
+
export const WORKSHOP_SAMPLE_PANEL_ID = 'ws-panel-white-label-v2'
|
| 21 |
+
|
| 22 |
+
type WL = typeof whiteLabelBuiltConfig
|
| 23 |
+
|
| 24 |
+
function wlChatPromptCards(wl: WL) {
|
| 25 |
+
const ex = wl.chat_page?.examples
|
| 26 |
+
if (!Array.isArray(ex) || ex.length === 0) return []
|
| 27 |
+
return ex.slice(0, 3).map((block) => {
|
| 28 |
+
const sug = Array.isArray(block.suggestions) ? block.suggestions : []
|
| 29 |
+
const prompts: [string, string, string] = [
|
| 30 |
+
String(sug[0] ?? ''),
|
| 31 |
+
String(sug[1] ?? ''),
|
| 32 |
+
String(sug[2] ?? ''),
|
| 33 |
+
]
|
| 34 |
+
return {
|
| 35 |
+
title: String(block.title ?? ''),
|
| 36 |
+
icon: String(block.icon ?? ''),
|
| 37 |
+
prompts,
|
| 38 |
+
}
|
| 39 |
+
})
|
| 40 |
+
}
|
| 41 |
+
|
| 42 |
+
export function getWorkshopSampleAdvisorPanel(): SavedAdvisorPanel {
|
| 43 |
+
const wl = whiteLabelBuiltConfig as WL
|
| 44 |
+
const app = wl.app
|
| 45 |
+
const home = wl.homepage
|
| 46 |
+
const login = wl.login
|
| 47 |
+
const chat = wl.chat_page
|
| 48 |
+
const personasRoot = wl.personas as { base_prompt?: string }
|
| 49 |
+
const features = Array.isArray(home?.features) ? home.features : []
|
| 50 |
+
const fc = features.slice(0, 3).map((f) => ({
|
| 51 |
+
title: String(f?.title ?? ''),
|
| 52 |
+
icon: String(f?.icon ?? ''),
|
| 53 |
+
description: String(f?.description ?? ''),
|
| 54 |
+
}))
|
| 55 |
+
while (fc.length < 3) {
|
| 56 |
+
fc.push({ title: '', icon: '', description: '' })
|
| 57 |
+
}
|
| 58 |
+
const stages = Array.isArray(login?.academic_stages) ? login.academic_stages : []
|
| 59 |
+
const dropdownChoices = stages
|
| 60 |
+
.map((s: { label?: string; value?: string }) => {
|
| 61 |
+
const v = s?.value
|
| 62 |
+
if (v === '' || v == null) return ''
|
| 63 |
+
return String(s?.label ?? '').trim()
|
| 64 |
+
})
|
| 65 |
+
.filter(Boolean)
|
| 66 |
+
.join(', ')
|
| 67 |
+
|
| 68 |
+
const promptCards = wlChatPromptCards(wl)
|
| 69 |
+
while (promptCards.length < 1) {
|
| 70 |
+
promptCards.push({ title: '', icon: '', prompts: ['', '', ''] })
|
| 71 |
+
}
|
| 72 |
+
|
| 73 |
+
const basePrompt = String(personasRoot?.base_prompt ?? '').trim()
|
| 74 |
+
|
| 75 |
+
return {
|
| 76 |
+
id: WORKSHOP_SAMPLE_PANEL_ID,
|
| 77 |
+
createdAt: SAMPLE_CREATED,
|
| 78 |
+
updatedAt: SAMPLE_CREATED,
|
| 79 |
+
authorName: AUTHOR,
|
| 80 |
+
panelName: String(app?.title ?? 'White Label AI Advisory Panel'),
|
| 81 |
+
purpose: String(home?.description ?? '').slice(0, 2000),
|
| 82 |
+
advisors: [
|
| 83 |
+
{ name: 'Sustainable Land Use Advisor', role: 'Sustainable land use & environmental planning' },
|
| 84 |
+
{ name: 'Career Coach', role: 'Internships & professional development' },
|
| 85 |
+
{ name: 'Project Scheduler', role: 'Timeline & resource planning (construction)' },
|
| 86 |
+
{ name: 'Shakespeare', role: 'The Bard (Early Modern voice)' },
|
| 87 |
+
],
|
| 88 |
+
visionApplicationPurpose:
|
| 89 |
+
'Demonstrate a reusable multi-persona advisory framework with branding, onboarding, and chat tuned for many industries.',
|
| 90 |
+
visionTargetAudience:
|
| 91 |
+
'Leaders and builders evaluating AI advisory assistants for their organization.',
|
| 92 |
+
visionKeyOutcomes:
|
| 93 |
+
'Faster experiments, clearer prompts, and a credible preview of multi-advisor chat.',
|
| 94 |
+
appTitle: String(app?.title ?? ''),
|
| 95 |
+
appSubtitle: String(app?.subtitle ?? ''),
|
| 96 |
+
primaryBrandColor: String(app?.primary_color ?? '#2563EB'),
|
| 97 |
+
logoIcon: String(app?.logo_icon ?? 'Sparkles'),
|
| 98 |
+
footerText: String(app?.footer_text ?? ''),
|
| 99 |
+
headlinePrefix: String(home?.headline_prefix ?? ''),
|
| 100 |
+
headlineHighlight: String(home?.headline_highlight ?? ''),
|
| 101 |
+
homepageDescription: String(home?.description ?? ''),
|
| 102 |
+
featuresSectionTitle: String(home?.features_title ?? ''),
|
| 103 |
+
featureCards: fc as SavedAdvisorPanel['featureCards'],
|
| 104 |
+
loginPageSubtitle: String(login?.subtitle ?? ''),
|
| 105 |
+
signupPageSubtitle: String(login?.signup_subtitle ?? ''),
|
| 106 |
+
userInfoRows: [{ infoBoxLabel: 'Role level', dropdownChoices }],
|
| 107 |
+
examplePromptCards: promptCards as SavedAdvisorPanel['examplePromptCards'],
|
| 108 |
+
chatInputPlaceholder: String(chat?.placeholder ?? ''),
|
| 109 |
+
sharedBasePrompt: basePrompt || `base_prompt: |\n ${String(app?.title ?? 'Workshop')}\n`,
|
| 110 |
+
includedPersonaIds: [
|
| 111 |
+
'ws-persona-sustainable-land',
|
| 112 |
+
'ws-persona-career-coach',
|
| 113 |
+
'ws-persona-project-scheduler',
|
| 114 |
+
'ws-persona-shakespeare',
|
| 115 |
+
],
|
| 116 |
+
builtConfig: { ...(whiteLabelBuiltConfig as Record<string, unknown>) },
|
| 117 |
+
}
|
| 118 |
+
}
|
| 119 |
+
|
| 120 |
+
export function getWorkshopSamplePersonas() {
|
| 121 |
+
return [
|
| 122 |
+
{
|
| 123 |
+
id: 'ws-persona-sustainable-land',
|
| 124 |
+
createdAt: SAMPLE_CREATED,
|
| 125 |
+
updatedAt: SAMPLE_CREATED,
|
| 126 |
+
authorName: AUTHOR,
|
| 127 |
+
advisorPersonaName: 'Sustainable Land Use Advisor',
|
| 128 |
+
roleTitle: 'Sustainable Land Use & Environmental Planning Expert',
|
| 129 |
+
personalityTagline: 'Balances ecology, equity, and development with practical, regulation-aware guidance.',
|
| 130 |
+
creativityLevel: '6',
|
| 131 |
+
expertiseSubjectArea:
|
| 132 |
+
'Sustainable land use, conservation, climate-resilient development, environmental review, zoning, stakeholder engagement.',
|
| 133 |
+
responseStyle:
|
| 134 |
+
'Strategic and clear; offers phased options; notes when licensed experts must review decisions.',
|
| 135 |
+
personalityTone: 'Professional, forward-looking, and collaborative.',
|
| 136 |
+
interactionGuidelines:
|
| 137 |
+
'Ask about place, jurisdiction, sensitive resources, and goals. Prefer concrete next steps and trade-offs.',
|
| 138 |
+
customization:
|
| 139 |
+
'Emphasize stewardship, transparency, and measurable sustainability outcomes.',
|
| 140 |
+
experimentPrompt: sustainableLandPrompt.trim(),
|
| 141 |
+
},
|
| 142 |
+
{
|
| 143 |
+
id: 'ws-persona-career-coach',
|
| 144 |
+
createdAt: SAMPLE_CREATED,
|
| 145 |
+
updatedAt: SAMPLE_CREATED,
|
| 146 |
+
authorName: AUTHOR,
|
| 147 |
+
advisorPersonaName: 'Career Coach',
|
| 148 |
+
roleTitle: 'Internships & Professional Development Guide',
|
| 149 |
+
personalityTagline: 'Career-focused, practical, and encouraging for undergraduates.',
|
| 150 |
+
creativityLevel: '5',
|
| 151 |
+
expertiseSubjectArea:
|
| 152 |
+
'Resumes, internships, interviews, networking, LinkedIn, and aligning major with career paths.',
|
| 153 |
+
responseStyle:
|
| 154 |
+
'Action-oriented with examples; normalizes uncertainty; tailors advice to year and goals.',
|
| 155 |
+
personalityTone: 'Encouraging and direct.',
|
| 156 |
+
interactionGuidelines:
|
| 157 |
+
'Reference campus career resources; give implementable steps; avoid vague platitudes.',
|
| 158 |
+
customization:
|
| 159 |
+
'Ground advice in the student’s year, major, and timeline when provided.',
|
| 160 |
+
experimentPrompt: careerCoachPrompt.trim(),
|
| 161 |
+
},
|
| 162 |
+
{
|
| 163 |
+
id: 'ws-persona-project-scheduler',
|
| 164 |
+
createdAt: SAMPLE_CREATED,
|
| 165 |
+
updatedAt: SAMPLE_CREATED,
|
| 166 |
+
authorName: AUTHOR,
|
| 167 |
+
advisorPersonaName: 'Project Scheduler',
|
| 168 |
+
roleTitle: 'Timeline & Resource Planning Specialist',
|
| 169 |
+
personalityTagline: 'Structured, schedule-driven, and construction-savvy.',
|
| 170 |
+
creativityLevel: '4',
|
| 171 |
+
expertiseSubjectArea:
|
| 172 |
+
'CPM-style scheduling, crews and equipment, weather contingencies, phasing, and look-ahead planning.',
|
| 173 |
+
responseStyle:
|
| 174 |
+
'Precise and data-driven; surfaces dependencies, risks, and recovery options.',
|
| 175 |
+
personalityTone: 'Calm and operational.',
|
| 176 |
+
interactionGuidelines:
|
| 177 |
+
'Ask about scope, calendars, and constraints before proposing sequences.',
|
| 178 |
+
customization:
|
| 179 |
+
'Favor realistic durations and buffers for weather and subcontractor coordination.',
|
| 180 |
+
experimentPrompt: projectSchedulerPrompt.trim(),
|
| 181 |
+
},
|
| 182 |
+
{
|
| 183 |
+
id: 'ws-persona-shakespeare',
|
| 184 |
+
createdAt: SAMPLE_CREATED,
|
| 185 |
+
updatedAt: SAMPLE_CREATED,
|
| 186 |
+
authorName: AUTHOR,
|
| 187 |
+
advisorPersonaName: 'Shakespeare',
|
| 188 |
+
roleTitle: 'The Bard (Early Modern English)',
|
| 189 |
+
personalityTagline: 'Speaks as William Shakespeare — witty, eloquent, and in period voice.',
|
| 190 |
+
creativityLevel: '7',
|
| 191 |
+
expertiseSubjectArea:
|
| 192 |
+
"Shakespeare's plays and sonnets, Elizabethan theatre, and Early Modern English expression.",
|
| 193 |
+
responseStyle:
|
| 194 |
+
'First-person as Shakespeare; uses thee/thou and period syntax; weaves in references to his works.',
|
| 195 |
+
personalityTone: 'Warm, playful, and theatrical.',
|
| 196 |
+
interactionGuidelines:
|
| 197 |
+
'Stay in character; invite curiosity; connect themes to the user’s question.',
|
| 198 |
+
customization:
|
| 199 |
+
'Offer parallels between Elizabethan life and modern questions when fitting.',
|
| 200 |
+
experimentPrompt: shakespearePrompt.trim(),
|
| 201 |
+
},
|
| 202 |
+
]
|
| 203 |
+
}
|
| 204 |
+
|
| 205 |
+
/** First-load workshop content: four personas + white-label advisory panel (full builtConfig). */
|
| 206 |
+
export function getWorkshopSeedStore(): CreationsStore {
|
| 207 |
+
return {
|
| 208 |
+
personas: getWorkshopSamplePersonas(),
|
| 209 |
+
advisorPanels: [getWorkshopSampleAdvisorPanel()],
|
| 210 |
+
}
|
| 211 |
+
}
|