There is a standard shape for the AI landing page, and you have seen it: a hero card with a generated paragraph, some tiles, a list of things the system thinks you should look at. It demos beautifully. It is also the one screen in the product where the vendor has decided, on your behalf, what your morning looks like.
That decision does not survive contact with two customers. A sales manager's morning is receivables and coverage; a service supervisor's is breaching commitments; a buyer's is stock arriving late. Same product, three different pages — and a hardcoded home page can serve at most one of them.
So Sense Home is not a page. It is a layout.
Composed, not coded
Sense Home is an ordinary App Page, authored in the same designer used for every other screen, hosted on the same runtime route, and governed by the same page permissions. What makes it "the AI home" is simply which widgets someone dropped onto it.
There are four:
- Sense AI Brief — the narrative hero.
- Sense KPI Strip — the numbers.
- Sense Attention Queue — the ranked list of things worth acting on.
- Industry Pulse — outside context.
Everything follows from that choice. A Service workspace home is a different App Page with the same widgets configured differently — the attention queue filtered to service and risk categories rather than inventory and receivables. A tenant that wants their own block writes a widget and drops it alongside. Role variation is not a feature we had to build; it is what happens when the page is metadata.
The cost is honest and worth stating: because the page is metadata rather than source, it does not appear by itself. Someone authors it per tenant. There is no migration that conjures a home page into existence, which is the trade for it being yours rather than ours.
The brief: one call a day, over facts it is forbidden to compute
The generated paragraph is the part most likely to be nonsense in this class of product, so it is the part with the most constraints on it.
The server assembles a deterministic fact pack before any model is involved. It takes up to four entities, reads the summary figures from each one's authored view — through exactly the same permission-enforced path the list screen uses — and adds the top handful of the user's ranked nudges. That pack is the entire universe the model is given.
The system prompt then tells it, in as many words, to use only the facts provided: no arithmetic, no inference of numbers that were not supplied, no markdown, no greeting. The model's job is to turn a structured set of true things into two to four sentences a person can read while their coffee lands. It is a writing task, not an analysis task — and that distinction is the whole safety argument, because a model that cannot compute cannot compute something wrong.
It runs once per user per day, cached for the remainder of the UTC day. That is a cost decision and a consistency decision at once: the brief you discuss with a colleague at eleven is the brief you read at nine.
And it degrades in two directions. No facts at all — a new workspace, a quiet Monday — and it says so plainly rather than inventing activity. Out of AI credit, or the model call fails, and a deterministic template brief takes over: "N items need your attention. Top of the list: …" Less graceful, still true, still useful. Nobody arrives at a broken hero.
The queue: ranking, and the discipline of caps
The attention queue is a cross-entity feed of live nudges — the deterministic signals described in an earlier post — pulled from every record and list in the workspace rather than from the record you happen to be on.
Ranking is deliberately boring: priority, then business impact, then recency. A nudge carrying a rupee value sorts above one that does not, and among equals the freshest wins. There is no learned relevance model, because a queue that reorders itself for reasons the user cannot reconstruct is a queue people stop trusting.
The more consequential design choice is the caps. The feed is capped overall and per category — by default a few per category, a modest total. This is the single most important decision in the entire surface, and it is subtractive.
A proactive system's failure mode is not being wrong. It is being right forty times before lunch. Once a queue is longer than a person will read, it stops being a queue and becomes a wall, and the rational response to a wall is to ignore all of it — including the three items that mattered. Capping per category also stops one noisy provider from crowding out six quieter, more valuable ones.
Every row carries the same affordances as a nudge anywhere else in the product: dismiss, snooze for a day or a week, a Why? that opens the raw evidence with an optional deeper explanation, and one-click actions that run through the ordinary services under the user's own token — patch a record, add a line, invoke an action or a workflow — with a confirmation step before anything mutates. Or open the nudge in chat, seeded with its context and pinned to the agent that produced it.
Fail-open, everywhere, as a rule
One principle runs through every block and it is worth extracting, because it is the difference between an AI surface people keep and one they route around.
Nothing on this page is allowed to break the page.
- A widget whose feature is switched off renders nothing — not an error, not an empty box with an apology.
- A KPI strip pointed at an entity that no longer has summary figures renders nothing rather than a misconfiguration warning aimed at a user who cannot fix it.
- The backing endpoints return empty rather than a 4xx when a licence or module is off, so a half-licensed tenant sees a smaller page rather than a broken one.
- The AI regions degrade to deterministic content, and if that fails they disappear. What is left is a perfectly serviceable dashboard.
Put the other way: every AI element on this page is additive to a page that works without it. That is also the honest way to sell it.
Fresh without polling
The queue does not poll on a timer by default. Nudges arrive on the same realtime channel the rest of the app uses, so a signal computed server-side appears without the client asking, and the feed also refreshes when the window regains focus — the moment a user comes back from somewhere else, which is exactly when staleness would be noticed.
An interval refresh is available and off by default. A page that re-fetches every thirty seconds for eight hours costs real money across a tenant, for information that changes a few times a day.
What is not there yet
Three honest gaps.
There is no mobile Sense Home. The field app shows nudges anchored to records and lists, which is the right shape for someone standing in an outlet, but the composed home surface is web-only today.
The feedback signals do not feed ranking. Dismissals, snoozes and applied actions are recorded, and they are exactly the data a relevance model would want. They are not yet used for anything but telemetry, and we would rather say so than imply a learning loop that does not exist.
Industry Pulse depends on outside access. Where a deployment has web retrieval disabled, that block reports itself unavailable and hides — which is correct behaviour, and also means the page is one block shorter in locked-down environments.
What I would tell another team
If you are building an AI home page, the temptation is to spend your effort on the generated paragraph. Spend it instead on two things: the fact pack that constrains the model, and the caps that constrain the list.
The fact pack is what makes the writing trustworthy — a model that is handed permission-scoped truths and told not to calculate cannot produce a confident wrong number. The caps are what make the page survivable on day thirty, when the novelty has worn off and the only question is whether the top of the list is worth a person's attention.
Then make the whole thing composable, and let the customer decide what their morning looks like. They know better than we do.
Related: Sense Assist · Deterministic signals, AI delivery · How governed enterprise AI agents work
