Skip to main content

Account executives jump between CRM notes, renewal docs, and security packets to prep a single customer conversation. This puts those sources on one page per account — KPI header, parallel search tiles, journey summary, and one-click saved prompts — so the next call needs one tab, not nine.

Everything on the page comes from what your instance already knows about that account. Nothing is hardcoded, which also means a field stays blank when no source supports it rather than showing a number nobody can trace.

This recipe builds the page two ways: Platform Search plus Client Chat for an open-ended dashboard, or Agents createRun for a prescriptive QBR-ready brief.

Account pageKPIs + tiles + journey + prompts
Path A: Search + Chatglean.search.query + Client Chat
Path B: Agentsglean.agents.createRun
Glean Platform APIpermission-aware retrieval + synthesis
A work email for tenant discovery and OAuth sign-in; a scoped Glean API token is the fallback
X_GLEAN_INCLUDE_EXPERIMENTAL=true for Platform Search and Agents
Path B: an Account Brief agent in Agent Builder; set GLEAN_AGENT_ID server-side
Node 20+
An account name your own content covers — the page is built around whichever you pick (GLEAN_ACCOUNT_NAME)
1

Pick a path

Path A combines parallel Platform Search tiles with Client Chat synthesis. Path B keeps the same page UX but uses a template Account Brief agent.

1

Scaffold the project

npx -y tiged@2.12.8 --mode=git gleanwork/glean-cookbook/recipes/customer-360/platform-search-chat customer-360
2

Install dependencies

cd customer-360 && npm install
3

Set credentials

The shipped command discovers the tenant and completes OAuth, with a scoped API token fallback. Set GLEAN_ACCOUNT_NAME in the resulting ignored .env to the account the user supplied. Do not search for a different account.

cd customer-360 && npm run login -- --email "<work-email>"
4

Verify

Allow 1–3 minutes. It starts its own server, runs the demo queries against the supplied account, and asserts cited answers with blank unsupported KPI fields.

cd customer-360 && npm run verify
5

Run it

Leave the verified app running at http://localhost:3000 and give that URL to the user.

cd customer-360 && npm start
Take it further
  • Add a portfolio dashboard across a rep's whole book of business, with health and renewal countdown tiles per account.
  • Schedule a weekly headless job that re-runs the account's queries, diffs against the last run, and posts only what changed to Slack.
  • Wire push-to-CRM / push-to-Slack actions from the journey panel once you have a governed custom tool.

What's the status of our renewal with that account?

Returns a non-empty answer citing real documents about the account you built the page around. Substitute the name when you ask — there is no fixed query text for a page built around whichever account you pick.

Give me a customer summary

Synthesizes across more than one source with a citation per claim, rather than restating a single document.

What are the renewal risks?

Either names risks grounded in cited content, or says it has none to report. It must not infer risk the sources don't support, and the KPI header must leave unsupported fields blank rather than showing a figure no document contains.

View source

Runs the recipe through the Glean cookbook plugin.

At a glance
SurfacesPlatform API, Client API
StatusShowcase
Time~1 hr
Required scopes
SEARCHCHATAGENTS