diff --git a/backend/src/routes/coaching.js b/backend/src/routes/coaching.js
index d2c6dcb..47decde 100644
--- a/backend/src/routes/coaching.js
+++ b/backend/src/routes/coaching.js
@@ -48,6 +48,12 @@ router.get(
order: [["next_session_at", "ASC"]],
include: [{ model: db.packages, as: "package" }],
});
+ const upcomingPrepBriefs = await db.prep_briefs.findAll({
+ limit: 4,
+ order: [["next_session_at", "ASC"]],
+ where: { status: "ready" },
+ include: [{ model: db.clients, as: "client" }],
+ });
res.status(200).send({
counts: {
@@ -59,6 +65,7 @@ router.get(
},
nextSessions,
activeClients,
+ upcomingPrepBriefs,
});
}),
);
diff --git a/frontend/src/pages/clients.tsx b/frontend/src/pages/clients.tsx
index 01a0d6c..0d800c1 100644
--- a/frontend/src/pages/clients.tsx
+++ b/frontend/src/pages/clients.tsx
@@ -23,6 +23,10 @@ type ActionItem = {
type PrepBrief = {
id: string;
+ previous_summary?: string;
+ open_commitments?: string;
+ suggested_questions?: string;
+ sensitive_topics?: string;
client_reflection?: string;
client_reflection_at?: string;
};
@@ -77,6 +81,26 @@ function EmptyState({ label }: { label: string }) {
);
}
+function PrepText({ value }: { value?: string }) {
+ if (!value) {
+ return
+ {item} +
+ ))} ++ Next-session prep +
++ Client reflection +
++ Open commitments +
++ Suggested questions +
++ Watch points +
++ Previous summary +
+Next session prep
- {nextSession ? ( + {nextPrepBrief ? (- {nextSession.title} + {nextPrepBrief.client?.role_title} ·{' '} + {nextPrepBrief.client?.company}
- {nextSession.ai_summary} + {nextPrepBrief.suggested_questions || + nextPrepBrief.previous_summary}
- Review memory + Open prep+ Next-session prep +
++ {brief.client?.name} +
++ {brief.client?.role_title} · {brief.client?.company} +
++ {brief.client_reflection || + brief.suggested_questions || + brief.previous_summary} +
+ + ))} + {summary.upcomingPrepBriefs.length === 0 && ( ++ {loading + ? 'Loading prep briefs...' + : 'No prep briefs ready yet.'} +
+ )} +