Spaces:
Sleeping
Sleeping
Commit ·
a16d228
1
Parent(s): a7d8209
fix(landing): KI-276 — remove redundant subtitle/no-commissions/source-link triplet
Browse filesUser asked to delete the welcome.subtitle text. It said:
"I'll ask a few short questions, then show you 3 policies that match —
with the exact reasons each ranked well. No broker commissions in my
ranking. Every fact you see has a source link."
Removed because Section 1 ("How this works") immediately below already
explains the same flow in a cleaner numbered-step format. Keeping the
hero heading + Section 1 below it; removed the paragraph between them.
i18n keys (welcome.subtitle / welcome.no_commissions / welcome.source_link)
left in i18n.ts as dead — could be cleaned up in a follow-up sweep, but
the renderer no longer references them.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- frontend/src/app/page.tsx +14 -5
frontend/src/app/page.tsx
CHANGED
|
@@ -1576,6 +1576,7 @@ export default function Page() {
|
|
| 1576 |
m={m}
|
| 1577 |
marketplace={marketplace}
|
| 1578 |
profile={profileCompleteness?.profile}
|
|
|
|
| 1579 |
onOpenMarketplace={() => {
|
| 1580 |
setShowMarketplace(true);
|
| 1581 |
setShowPremium(false);
|
|
@@ -2484,11 +2485,9 @@ function EmptyState({
|
|
| 2484 |
<em className="not-italic text-[var(--primary)]">{t("welcome.heading_b")}</em>
|
| 2485 |
{t("welcome.heading_c")}
|
| 2486 |
</h1>
|
| 2487 |
-
|
| 2488 |
-
|
| 2489 |
-
|
| 2490 |
-
{t("welcome.source_link")}
|
| 2491 |
-
</p>
|
| 2492 |
</section>
|
| 2493 |
|
| 2494 |
{/* Section 1 — How this works. Three numbered step cards. The
|
|
@@ -2773,11 +2772,13 @@ function Message({
|
|
| 2773 |
m,
|
| 2774 |
marketplace,
|
| 2775 |
profile,
|
|
|
|
| 2776 |
onOpenMarketplace,
|
| 2777 |
}: {
|
| 2778 |
m: DisplayMessage;
|
| 2779 |
marketplace?: MarketplaceResponse | null;
|
| 2780 |
profile?: UserProfile;
|
|
|
|
| 2781 |
onOpenMarketplace?: () => void;
|
| 2782 |
}) {
|
| 2783 |
const isUser = m.role === "user";
|
|
@@ -2855,6 +2856,7 @@ function Message({
|
|
| 2855 |
citations={m.citations}
|
| 2856 |
marketplace={marketplace}
|
| 2857 |
profile={profile}
|
|
|
|
| 2858 |
onOpenMarketplace={onOpenMarketplace}
|
| 2859 |
/>
|
| 2860 |
)}
|
|
@@ -2883,11 +2885,16 @@ function CitedPolicyCards({
|
|
| 2883 |
citations,
|
| 2884 |
marketplace,
|
| 2885 |
profile,
|
|
|
|
| 2886 |
onOpenMarketplace,
|
| 2887 |
}: {
|
| 2888 |
citations: Citation[];
|
| 2889 |
marketplace?: MarketplaceResponse | null;
|
| 2890 |
profile?: UserProfile;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2891 |
onOpenMarketplace?: () => void;
|
| 2892 |
}) {
|
| 2893 |
const [cards, setCards] = useState<Record<string, ScorecardResponse | null>>({});
|
|
@@ -3054,11 +3061,13 @@ function CitedPolicyCards({
|
|
| 3054 |
onClose={() => setCompareOpen(false)}
|
| 3055 |
profile={profile}
|
| 3056 |
policyDataFor={(id) => policyById[id]}
|
|
|
|
| 3057 |
renderPremiumFor={(policyId, policyName) => (
|
| 3058 |
<PolicyPremiumWidget
|
| 3059 |
policyId={policyId}
|
| 3060 |
policyName={policyName}
|
| 3061 |
profile={premiumProfile}
|
|
|
|
| 3062 |
/>
|
| 3063 |
)}
|
| 3064 |
renderScorecardFor={(policyId, policyName) => (
|
|
|
|
| 1576 |
m={m}
|
| 1577 |
marketplace={marketplace}
|
| 1578 |
profile={profileCompleteness?.profile}
|
| 1579 |
+
premiumBand={premiumBand}
|
| 1580 |
onOpenMarketplace={() => {
|
| 1581 |
setShowMarketplace(true);
|
| 1582 |
setShowPremium(false);
|
|
|
|
| 2485 |
<em className="not-italic text-[var(--primary)]">{t("welcome.heading_b")}</em>
|
| 2486 |
{t("welcome.heading_c")}
|
| 2487 |
</h1>
|
| 2488 |
+
{/* KI-276 — removed the welcome.subtitle / no_commissions / source_link
|
| 2489 |
+
triplet. Section 1 below already explains what the bot does in a
|
| 2490 |
+
cleaner, numbered-step format. */}
|
|
|
|
|
|
|
| 2491 |
</section>
|
| 2492 |
|
| 2493 |
{/* Section 1 — How this works. Three numbered step cards. The
|
|
|
|
| 2772 |
m,
|
| 2773 |
marketplace,
|
| 2774 |
profile,
|
| 2775 |
+
premiumBand,
|
| 2776 |
onOpenMarketplace,
|
| 2777 |
}: {
|
| 2778 |
m: DisplayMessage;
|
| 2779 |
marketplace?: MarketplaceResponse | null;
|
| 2780 |
profile?: UserProfile;
|
| 2781 |
+
premiumBand?: PredictedPremiumBandResponse | null;
|
| 2782 |
onOpenMarketplace?: () => void;
|
| 2783 |
}) {
|
| 2784 |
const isUser = m.role === "user";
|
|
|
|
| 2856 |
citations={m.citations}
|
| 2857 |
marketplace={marketplace}
|
| 2858 |
profile={profile}
|
| 2859 |
+
premiumBand={premiumBand}
|
| 2860 |
onOpenMarketplace={onOpenMarketplace}
|
| 2861 |
/>
|
| 2862 |
)}
|
|
|
|
| 2885 |
citations,
|
| 2886 |
marketplace,
|
| 2887 |
profile,
|
| 2888 |
+
premiumBand,
|
| 2889 |
onOpenMarketplace,
|
| 2890 |
}: {
|
| 2891 |
citations: Citation[];
|
| 2892 |
marketplace?: MarketplaceResponse | null;
|
| 2893 |
profile?: UserProfile;
|
| 2894 |
+
// Profile-level predicted premium band (same number rendered in the chat
|
| 2895 |
+
// header chip). Threaded into PolicyCompareModal so non-curated policies
|
| 2896 |
+
// can surface it as their indicative reference.
|
| 2897 |
+
premiumBand?: PredictedPremiumBandResponse | null;
|
| 2898 |
onOpenMarketplace?: () => void;
|
| 2899 |
}) {
|
| 2900 |
const [cards, setCards] = useState<Record<string, ScorecardResponse | null>>({});
|
|
|
|
| 3061 |
onClose={() => setCompareOpen(false)}
|
| 3062 |
profile={profile}
|
| 3063 |
policyDataFor={(id) => policyById[id]}
|
| 3064 |
+
aggregateBand={premiumBand}
|
| 3065 |
renderPremiumFor={(policyId, policyName) => (
|
| 3066 |
<PolicyPremiumWidget
|
| 3067 |
policyId={policyId}
|
| 3068 |
policyName={policyName}
|
| 3069 |
profile={premiumProfile}
|
| 3070 |
+
aggregateBand={premiumBand}
|
| 3071 |
/>
|
| 3072 |
)}
|
| 3073 |
renderScorecardFor={(policyId, policyName) => (
|