Kennedy Johnson Cursor commited on
Commit
acbaa2f
·
1 Parent(s): 083b448

Apply Heidi Aug 18 Veggie panel feedback: disclaimer, prompt cards, all-six default.

Browse files

Restore her homepage/feature copy, replace copyright with the food-only educational disclaimer, retitle chat prompts (no healthcare/supplements), default active advisors to all six, and tighten Veggie Chef food-focused language plus daikon routing.

Co-authored-by: Cursor <cursoragent@cursor.com>

healthyeating_config.yaml CHANGED
@@ -10,7 +10,13 @@ app:
10
  subtitle: "AI-Powered Tips For Clean Eating and Real Food"
11
  primary_color: "#7C3AED"
12
  logo_icon: "Leaf"
13
- footer_text: "© Heidi Boudro"
 
 
 
 
 
 
14
  user_avatars:
15
  - { id: "leaf-violet", icon: "Leaf", color: "#7C3AED", bg: "#F5F3FF" }
16
  - { id: "user-emerald", icon: "User", color: "#059669", bg: "#ECFDF5" }
@@ -25,16 +31,16 @@ homepage:
25
  headline_prefix: "Easy Clean Eating with"
26
  headline_highlight: "Expert AI Advisors"
27
  description: >-
28
- Friendly, practical guidance for enjoying real food — getting started,
29
- fruits and vegetables, simple prep, superfoods, enzymes, and good books.
30
- Ask Heidi's specialist advisors for tips you can use today.
31
  features_title: "Why Use Healthy Eating Advisor?"
32
  features:
33
  - title: "All About Food"
34
- description: "Friendly tips from specialists who each stay in their own lane"
35
  icon: "UtensilsCrossed"
36
- - title: "Practical Next Steps"
37
- description: "Simple ideas for clean eating and real food — without overwhelm"
38
  icon: "Sparkles"
39
  - title: "Available 24/7"
40
  description: "Chat when it's convenient for you"
@@ -68,7 +74,7 @@ login:
68
  chat_page:
69
  placeholder: "Ask us anything about food!"
70
  examples:
71
- - title: "Foods"
72
  icon: "Leaf"
73
  color: "#059669"
74
  bg_color: "#ECFDF5"
@@ -76,30 +82,38 @@ chat_page:
76
  - "What is clean eating?"
77
  - "How can I get started eating more vegetables?"
78
  - "What can I pack for lunch?"
79
- - title: "Supplements"
80
- icon: "Pill"
81
- color: "#D97706"
82
- bg_color: "#FFFBEB"
83
- suggestions:
84
- - "What's an easy superfood?"
85
- - "What does it mean for a food to have high enzymes?"
86
- - "Which healthy-eating book should I start with?"
87
- - title: "New advisee intake"
88
  icon: "ClipboardList"
89
  color: "#2563EB"
90
  bg_color: "#EFF6FF"
91
  suggestions:
92
- - "New advisee intake — please ask about my health, body state, and food concerns."
93
- - "Explain how to describe my health and body state or concerns so you can help."
94
  - "I know I'm not eating in a healthy way but I don't know what to do about it."
95
- - title: "Healthcare & why"
96
- icon: "HeartPulse"
 
 
97
  color: "#E11D48"
98
  bg_color: "#FFF1F2"
99
  suggestions:
100
- - "How do real foods improve health?"
101
- - "Why is processed food such a big problem?"
102
  - "Is clean eating really more enjoyable?"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
 
104
  personas:
105
  base_prompt: |
 
10
  subtitle: "AI-Powered Tips For Clean Eating and Real Food"
11
  primary_color: "#7C3AED"
12
  logo_icon: "Leaf"
13
+ # Educational disclaimer (shown in homepage footer + chat sidebar). No copyright/name line.
14
+ footer_text: >-
15
+ This Expert AI Advisors Panel is about food and is for educational and
16
+ illustrative purposes only. Nothing on this site or generated by this Panel
17
+ constitutes medical, nutritional, or professional advice. AI responses do
18
+ not replace professional medical evaluations. Always consult a physician for
19
+ diagnosis or treatment.
20
  user_avatars:
21
  - { id: "leaf-violet", icon: "Leaf", color: "#7C3AED", bg: "#F5F3FF" }
22
  - { id: "user-emerald", icon: "User", color: "#059669", bg: "#ECFDF5" }
 
31
  headline_prefix: "Easy Clean Eating with"
32
  headline_highlight: "Expert AI Advisors"
33
  description: >-
34
+ Get friendly, practical guidance on enjoying real food, getting started,
35
+ fruits and vegetables, easy prep, superfoods, and more! Use a panel of AI
36
+ experts to help you reach your healthy eating goals.
37
  features_title: "Why Use Healthy Eating Advisor?"
38
  features:
39
  - title: "All About Food"
40
+ description: "Friendly tips and easy recommendations"
41
  icon: "UtensilsCrossed"
42
+ - title: "Personalized Next Steps"
43
+ description: "Specialized AI Advisors personalize recommendations for you"
44
  icon: "Sparkles"
45
  - title: "Available 24/7"
46
  description: "Chat when it's convenient for you"
 
74
  chat_page:
75
  placeholder: "Ask us anything about food!"
76
  examples:
77
+ - title: "Real Food"
78
  icon: "Leaf"
79
  color: "#059669"
80
  bg_color: "#ECFDF5"
 
82
  - "What is clean eating?"
83
  - "How can I get started eating more vegetables?"
84
  - "What can I pack for lunch?"
85
+ - title: "Let's learn about you"
 
 
 
 
 
 
 
 
86
  icon: "ClipboardList"
87
  color: "#2563EB"
88
  bg_color: "#EFF6FF"
89
  suggestions:
 
 
90
  - "I know I'm not eating in a healthy way but I don't know what to do about it."
91
+ - "Ask me why I want to improve my diet"
92
+ - "Ask me what is worrying me the most about my diet"
93
+ - title: "Why healthy eating?"
94
+ icon: "Heart"
95
  color: "#E11D48"
96
  bg_color: "#FFF1F2"
97
  suggestions:
98
+ - "What are the benefits of real food?"
99
+ - "What's wrong with processed food?"
100
  - "Is clean eating really more enjoyable?"
101
+ - title: "Easy Food Prep"
102
+ icon: "ChefHat"
103
+ color: "#0F766E"
104
+ bg_color: "#F0FDFA"
105
+ suggestions:
106
+ - "How can I eat less sugar?"
107
+ - "What's a daikon radish?"
108
+ - "What can I do with frozen fruit?"
109
+ - title: "Superfood"
110
+ icon: "Sparkles"
111
+ color: "#D97706"
112
+ bg_color: "#FFFBEB"
113
+ suggestions:
114
+ - "What's an easy superfood?"
115
+ - "What does it mean for a food to have high enzymes?"
116
+ - "What's a good healthy eating book for beginners?"
117
 
118
  personas:
119
  base_prompt: |
multi_llm_chatbot_backend/app/core/improved_orchestrator.py CHANGED
@@ -1137,11 +1137,12 @@ When analyzing the document context:
1137
  ],
1138
  "veggie_chef": [
1139
  "vegetable", "veggie", "broccoli", "carrot", "brassica",
1140
- "nightshade", "steam", "salad", "greens",
 
1141
  ],
1142
  "fruit_maven": [
1143
  "fruit", "juice", "berry", "blueberry", "pomegranate",
1144
- "banana", "apple", "citrus", "plantain",
1145
  ],
1146
  "superfoods_superman": [
1147
  "superfood", "ginger", "turmeric", "coconut", "fish oil",
 
1137
  ],
1138
  "veggie_chef": [
1139
  "vegetable", "veggie", "broccoli", "carrot", "brassica",
1140
+ "nightshade", "steam", "salad", "greens", "daikon", "radish",
1141
+ "bok choy", "stir-fry", "stir fry", "plantain", "guacamole",
1142
  ],
1143
  "fruit_maven": [
1144
  "fruit", "juice", "berry", "blueberry", "pomegranate",
1145
+ "banana", "apple", "citrus", "frozen fruit",
1146
  ],
1147
  "superfoods_superman": [
1148
  "superfood", "ginger", "turmeric", "coconut", "fish oil",
personas/healthy_eating_advisors/veggie_chef.yaml CHANGED
@@ -80,25 +80,27 @@ persona_prompt: |
80
 
81
  - Be able to discuss:
82
 
83
- - general health benefits of vegetables
84
 
85
  - fiber, nutrients, antioxidants, and vegetable variety
86
 
87
  - starchy vegetables, cooling vegetables, legumes, and vegetable families
88
 
89
- - cruciferous/brassica vegetables, including bok choy, broccoli, cabbage, kale, turnip, radish, watercress, and others
90
 
91
  - preparation methods such as steaming, stir-frying, sautéing, raw preparations, snacks, guacamole, fried plantains, and bok choy stir fry
92
 
93
  - practical vegetable shopping ideas like prewashed vegetables, prepared salads, farmers’ markets, and CSA boxes
94
 
 
 
95
  - When discussing the references, present them as helpful informational material, not absolute truth.
96
 
97
  - If the documents contain nuanced, controversial, or debated claims, present them carefully and with appropriate uncertainty.
98
 
99
  Important content tendencies from the references:
100
 
101
- - Vegetables are generally presented as nutrient-dense, fiber-rich, and useful in healthy eating patterns.
102
 
103
  - Cruciferous vegetables may have potential benefits and also cautions related to thyroid function in some contexts; present this as nuanced, not one-size-fits-all.
104
 
@@ -114,9 +116,9 @@ persona_prompt: |
114
 
115
  - Do not say vegetables will cure, reverse, prevent, or treat disease as a guaranteed outcome.
116
 
117
- - If discussing health benefits, use cautious wording such as “may help,” “is associated with,” “can support,” or “some studies suggest.”
118
 
119
- - If a user mentions a medical condition, thyroid concerns, chronic pain, allergies, eating disorder concerns, or medication questions, encourage them to talk with a qualified healthcare professional or registered dietitian.
120
 
121
  - If a user asks about food safety, poisoning, severe allergic reactions, or dangerous symptoms, advise appropriate professional or urgent help.
122
 
@@ -190,6 +192,7 @@ persona_prompt: |
190
  - What is hummus? Where do I get it?
191
  - I really like radishes
192
  - I'd like a beginner's guide to daikon. What is it?
 
193
  - What vegetables will I probably like if I enjoy radishes?
194
  - Can I have a tasting plan for three vegetables that I might like if I like radishes?
195
  **PANEL HANDOFFS:**
 
80
 
81
  - Be able to discuss:
82
 
83
+ - general benefits of vegetables for everyday eating (fiber, nutrients, antioxidants, variety) — keep it food-focused, not medical
84
 
85
  - fiber, nutrients, antioxidants, and vegetable variety
86
 
87
  - starchy vegetables, cooling vegetables, legumes, and vegetable families
88
 
89
+ - cruciferous/brassica vegetables, including bok choy, broccoli, cabbage, kale, turnip, radish, daikon, watercress, and others
90
 
91
  - preparation methods such as steaming, stir-frying, sautéing, raw preparations, snacks, guacamole, fried plantains, and bok choy stir fry
92
 
93
  - practical vegetable shopping ideas like prewashed vegetables, prepared salads, farmers’ markets, and CSA boxes
94
 
95
+ - beginner-friendly produce questions (for example: what is a daikon radish, and simple ways to try it)
96
+
97
  - When discussing the references, present them as helpful informational material, not absolute truth.
98
 
99
  - If the documents contain nuanced, controversial, or debated claims, present them carefully and with appropriate uncertainty.
100
 
101
  Important content tendencies from the references:
102
 
103
+ - Vegetables are generally presented as nutrient-dense, fiber-rich, and useful in clean eating and real-food patterns.
104
 
105
  - Cruciferous vegetables may have potential benefits and also cautions related to thyroid function in some contexts; present this as nuanced, not one-size-fits-all.
106
 
 
116
 
117
  - Do not say vegetables will cure, reverse, prevent, or treat disease as a guaranteed outcome.
118
 
119
+ - If discussing benefits of vegetables, use cautious wording such as “may help,” “is associated with,” “can support,” or “some studies suggest.” Stay on food and prep — do not diagnose or prescribe.
120
 
121
+ - If a user mentions a medical condition, thyroid concerns, chronic pain, allergies, eating disorder concerns, or medication questions, encourage them to talk with a qualified healthcare professional or registered dietitian. Do not give healthcare or supplement advice.
122
 
123
  - If a user asks about food safety, poisoning, severe allergic reactions, or dangerous symptoms, advise appropriate professional or urgent help.
124
 
 
192
  - What is hummus? Where do I get it?
193
  - I really like radishes
194
  - I'd like a beginner's guide to daikon. What is it?
195
+ - What's a daikon radish?
196
  - What vegetables will I probably like if I enjoy radishes?
197
  - Can I have a tasting plan for three vegetables that I might like if I like radishes?
198
  **PANEL HANDOFFS:**
phd-advisor-frontend/src/components/AdvisorStatusDropdown.js CHANGED
@@ -60,7 +60,9 @@ const AdvisorStatusDropdown = ({
60
  const selectNone = (event) => {
61
  event.stopPropagation();
62
  if (onSetActiveAdvisors && allIds.length > 0) {
63
- onSetActiveAdvisors([allIds[0]]);
 
 
64
  }
65
  };
66
 
 
60
  const selectNone = (event) => {
61
  event.stopPropagation();
62
  if (onSetActiveAdvisors && allIds.length > 0) {
63
+ // Prefer Kitchen Coach when minimizing (sort_order 1), not Veggie Chef alone.
64
+ const kitchenId = allIds.includes('kitchen_coach') ? 'kitchen_coach' : allIds[0];
65
+ onSetActiveAdvisors([kitchenId]);
66
  }
67
  };
68
 
phd-advisor-frontend/src/components/CareerSourcesSection.js CHANGED
@@ -15,33 +15,18 @@ const SOURCE_CARDS = [
15
  },
16
  ];
17
 
 
 
 
 
 
18
  const CareerSourcesSection = () => (
19
  <section className="career-sources-section" aria-labelledby="career-sources-title">
20
  <h3 id="career-sources-title" className="features-title">What you can explore</h3>
21
- <p className="career-sources-intro">
22
- Heidi wrote this panel for people who want easy clean eating with real food — not complicated diets.
23
- Start with the advisors above, then dig into her sites for more guidance:{' '}
24
- <a
25
- href="https://getting-started-with-healthy-eating.com/"
26
- target="_blank"
27
- rel="noopener noreferrer"
28
- >
29
- Getting Started with Healthy Eating
30
- </a>
31
- {' '}and{' '}
32
- <a
33
- href="https://foodagainstpain.com/"
34
- target="_blank"
35
- rel="noopener noreferrer"
36
- >
37
- Food Against Pain
38
- </a>
39
- .
40
- </p>
41
  <div className="career-sources-grid">
42
  {SOURCE_CARDS.map((card) => (
43
  <article key={card.title} className="career-source-card">
44
- {/* Intentionally blank — Heidi will add photos later */}
45
  <div className="career-source-image career-source-image--empty" aria-hidden />
46
  <h4 className="feature-title">{card.title}</h4>
47
  <p className="feature-description">{card.blurb}</p>
 
15
  },
16
  ];
17
 
18
+ /**
19
+ * Explore cards with blank image placeholders.
20
+ * Image slots use CSS aspect-ratio 16:9 (full card width; ~min-height 120px).
21
+ * Heidi can supply photos later at that ratio.
22
+ */
23
  const CareerSourcesSection = () => (
24
  <section className="career-sources-section" aria-labelledby="career-sources-title">
25
  <h3 id="career-sources-title" className="features-title">What you can explore</h3>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
26
  <div className="career-sources-grid">
27
  {SOURCE_CARDS.map((card) => (
28
  <article key={card.title} className="career-source-card">
29
+ {/* Intentionally blank — Heidi will add photos later (16:9) */}
30
  <div className="career-source-image career-source-image--empty" aria-hidden />
31
  <h4 className="feature-title">{card.title}</h4>
32
  <p className="feature-description">{card.blurb}</p>
phd-advisor-frontend/src/components/CopyrightNotice.js CHANGED
@@ -1,6 +1,11 @@
1
  import React from 'react';
2
  import { useAppConfig } from '../contexts/AppConfigContext';
3
 
 
 
 
 
 
4
  const CopyrightNotice = ({ variant = 'footer', className = '' }) => {
5
  const { config } = useAppConfig();
6
  const isSidebar = variant === 'sidebar';
@@ -8,12 +13,8 @@ const CopyrightNotice = ({ variant = 'footer', className = '' }) => {
8
  const patentsClass = isSidebar ? 'sidebar-patents-link' : 'footer-patents-link';
9
  const combinedClass = className ? `${textClass} ${className}` : textClass;
10
 
11
- // Prefer the author/copyright line from config (app.footer_text). This keeps
12
- // the footer themed per-panel instead of hardcoding a single brand.
13
  const footerText = config?.app?.footer_text?.trim();
14
 
15
- // When a panel provides its own footer_text (author/copyright line), show only
16
- // that and skip the Neon.ai brand + patents link.
17
  if (footerText) {
18
  return <p className={combinedClass}>{footerText}</p>;
19
  }
 
1
  import React from 'react';
2
  import { useAppConfig } from '../contexts/AppConfigContext';
3
 
4
+ /**
5
+ * Panel footer / sidebar notice.
6
+ * When app.footer_text is set (Healthy Eating: educational disclaimer), show only that.
7
+ * Otherwise fall back to the Neon.ai copyright line.
8
+ */
9
  const CopyrightNotice = ({ variant = 'footer', className = '' }) => {
10
  const { config } = useAppConfig();
11
  const isSidebar = variant === 'sidebar';
 
13
  const patentsClass = isSidebar ? 'sidebar-patents-link' : 'footer-patents-link';
14
  const combinedClass = className ? `${textClass} ${className}` : textClass;
15
 
 
 
16
  const footerText = config?.app?.footer_text?.trim();
17
 
 
 
18
  if (footerText) {
19
  return <p className={combinedClass}>{footerText}</p>;
20
  }
phd-advisor-frontend/src/pages/ChatPage.js CHANGED
@@ -19,7 +19,9 @@ import SearchPathGate, { needsSearchPath } from '../components/SearchPathGate';
19
  import ClearDataModal from '../components/ClearDataModal';
20
  import AccountModal from '../components/AccountModal';
21
 
22
- const ACTIVE_ADVISORS_STORAGE_KEY = 'muscleGrowthActiveAdvisorIds';
 
 
23
 
24
  const ChatPage = ({ user, authToken, onNavigateToHome, onNavigateToCanvas, onSignOut }) => {
25
  const { config, advisors, getAdvisorColors } = useAppConfig();
@@ -101,6 +103,13 @@ const ChatPage = ({ user, authToken, onNavigateToHome, onNavigateToCanvas, onSig
101
  const allIds = Object.keys(advisors || {});
102
  if (allIds.length === 0) return;
103
 
 
 
 
 
 
 
 
104
  setActiveAdvisorIds((prev) => {
105
  let next = prev.filter((id) => allIds.includes(id));
106
  if (next.length === 0) {
@@ -114,6 +123,7 @@ const ChatPage = ({ user, authToken, onNavigateToHome, onNavigateToCanvas, onSig
114
  /* ignore */
115
  }
116
  }
 
117
  if (next.length === 0) next = [...allIds];
118
  if (
119
  prev.length === next.length &&
 
19
  import ClearDataModal from '../components/ClearDataModal';
20
  import AccountModal from '../components/AccountModal';
21
 
22
+ // Panel-specific key so prior single-advisor (e.g. Veggie-only) prefs don't stick.
23
+ const ACTIVE_ADVISORS_STORAGE_KEY = 'healthyEatingActiveAdvisorIds';
24
+ const LEGACY_ACTIVE_ADVISORS_STORAGE_KEY = 'muscleGrowthActiveAdvisorIds';
25
 
26
  const ChatPage = ({ user, authToken, onNavigateToHome, onNavigateToCanvas, onSignOut }) => {
27
  const { config, advisors, getAdvisorColors } = useAppConfig();
 
103
  const allIds = Object.keys(advisors || {});
104
  if (allIds.length === 0) return;
105
 
106
+ // Drop legacy key so Heidi's "Veggie Chef only" sticky default resets to all six.
107
+ try {
108
+ localStorage.removeItem(LEGACY_ACTIVE_ADVISORS_STORAGE_KEY);
109
+ } catch {
110
+ /* ignore */
111
+ }
112
+
113
  setActiveAdvisorIds((prev) => {
114
  let next = prev.filter((id) => allIds.includes(id));
115
  if (next.length === 0) {
 
123
  /* ignore */
124
  }
125
  }
126
+ // Heidi Aug 18: default is all six (not Veggie Chef alone).
127
  if (next.length === 0) next = [...allIds];
128
  if (
129
  prev.length === next.length &&
phd-advisor-frontend/src/styles/Sidebar.css CHANGED
@@ -717,7 +717,7 @@
717
 
718
  .sidebar-copyright-text {
719
  margin: 8px 0 0 0;
720
- font-size: 10px;
721
  line-height: 1.4;
722
  color: var(--text-secondary, #6b7280);
723
  }
 
717
 
718
  .sidebar-copyright-text {
719
  margin: 8px 0 0 0;
720
+ font-size: 9px;
721
  line-height: 1.4;
722
  color: var(--text-secondary, #6b7280);
723
  }
phd-advisor-frontend/src/styles/components.css CHANGED
@@ -1037,8 +1037,11 @@
1037
 
1038
  .footer-text {
1039
  color: var(--text-secondary);
1040
- font-size: 14px;
1041
- margin: 0;
 
 
 
1042
  }
1043
 
1044
  .footer-neon-link {
 
1037
 
1038
  .footer-text {
1039
  color: var(--text-secondary);
1040
+ font-size: 12px;
1041
+ line-height: 1.45;
1042
+ margin: 0 auto;
1043
+ max-width: 720px;
1044
+ text-align: center;
1045
  }
1046
 
1047
  .footer-neon-link {