REVIEW SURFACE
Every card in the catalogue, rendered as Teams renders it, with seeded data bound in. Nothing here posts to Teams: the JSON beside each card is what Power Automate will send. Approve the set here, then it is built once.
Pick a seeded record; every card below re-renders against it. Fire one card, or fire the whole set, and read the result in the send log.
N-01
A seco_request is submitted
Request raised — REQ-00027
Cedar Junction Aerospace LLC
Audience
Team channel — Assessment & qualification team channel
seco_request.ownerteam → the Teams channel mapped to that team. Never an individual: a request lands on a team and sits unclaimed until somebody takes it (D-04).
Resolved for this record: Teams channel · United States — Assessment & qualification
Payload fields and source column
Escalation
Unclaimed after 2 working days: repost once to the same channel with the waiting time in the body. No personal escalation — the team owns it.
Suppression
One card per request. Re-submission after a return-for-detail reuses the original thread rather than posting again.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 5 facts · 2 actions · title 26 characters
Payload file: src/services/notifications/cards/N-01.json
N-02
Request reaches commercial approval
REQUEST
Commercial approval required — REQ-00027
You are in the commercial approver pool for Commercial approvers — United States. One approval releases the request; technical assessment stays locked until it is given.
Audience
Role pool — Commercial approver pool for the owning business unit
Security role 'Commercial approver' ∩ seco_request.owningbusinessunit. Any one member may act; the first response closes it for the pool (D-05, D-06).
Resolved for this record: Pool · Commercial approvers — United States
Payload fields and source column
Escalation
3 working days without a decision: repost to the pool. 5 working days: add the hub manager to the post.
Suppression
Never digested — it blocks the technical track. Once any pool member responds, the pending card is withdrawn for everyone else.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 5 facts · 2 actions · title 40 characters
Payload file: src/services/notifications/cards/N-02.json
N-03
Commercial approval granted
REQUEST
Technical approval required — REQ-00027
Commercial approval has been given. You are in the technical approver pool for Technical approvers — US application engineering.
Audience
Role pool — Technical approver pool for the owning engineering team
Security role 'Technical approver' ∩ seco_request.seco_engineeringgroup. Commercial-first ordering means this card cannot fire before N-02 is resolved (D-05).
Resolved for this record: Pool · Technical approvers — US application engineering
Payload fields and source column
Escalation
3 working days: repost to the pool. 5 working days: add the engineering manager.
Suppression
Never digested. Withdrawn for the pool on the first response.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 5 facts · 2 actions · title 39 characters
Payload file: src/services/notifications/cards/N-03.json
N-04
Either approval declined, or the request is routed back to sales
Request declined — REQ-00027
Audience
Individual — The requester, personally
seco_request.seco_requestedby → systemuser. A 1:1 Teams chat, never a channel: a decline carries a reason and the reason is the requester's business.
Resolved for this record: Alonzo Pierce (chat)
Payload fields and source column
Escalation
None.
Suppression
One card per decline. Cannot be opted down — it is an outcome the requester asked for.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 4 facts · 1 action · title 0 characters
Payload file: src/services/notifications/cards/N-04.json
N-05
Request qualified and a seco_project created
Project created — Not yet created
From request REQ-00027.
Audience
Record owner — Requester and the assigned project lead
seco_request.seco_requestedby + seco_project.ownerusr. Two 1:1 chats, not a channel: both are named on the record.
Resolved for this record: Not yet assigned (record owner)
Payload fields and source column
Escalation
None.
Suppression
One per project. Never repeated.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 5 facts · 1 action · title 0 characters
Payload file: src/services/notifications/cards/N-05.json
N-06
A seco_action is assigned to a person
Action assigned — Not yet created
No open action on this record
Audience
Individual — The assignee, personally
seco_action.ownerusr → systemuser. 1:1 chat.
Resolved for this record: Unclaimed — team owned (chat)
Payload fields and source column
Escalation
None.
Suppression
The highest-volume card by far, so it is digested by default: one 08:00 local card listing the day's assignments, at most 10 lines with a count for the remainder. Users may opt up to immediate.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 4 facts · 2 actions · title 33 characters
Payload file: src/services/notifications/cards/N-06.json
N-07
Due date passed and the action is still open
Action overdue — Not yet created
No open action on this record is 0 days overdue.
Audience
Individual — The assignee; the project lead is added on the second escalation
seco_action.ownerusr, then seco_action.seco_project.ownerusr on escalation. Never a channel — an overdue action is not a public shaming.
Resolved for this record: Unclaimed — team owned (chat)
Payload fields and source column
Escalation
Day 1 overdue: immediate card to the assignee. Day 5: second card, project lead added (threshold open item `08 §7.3`). Thereafter it appears in the lead's weekly digest only.
Suppression
One immediate card per action per escalation step. Never a daily repeat — a repeated overdue card is the fastest route to muting.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 5 facts · 1 action · title 0 characters
Payload file: src/services/notifications/cards/N-07.json
N-08
A project moves stage on the spine
PROJECT
Stage advanced — Not yet created
For information. No action is expected from this card.
Audience
Team channel — Project team channel
seco_project.ownerteam → the mapped Teams channel.
Resolved for this record: Teams channel · United States — Assessment & qualification
Payload fields and source column
Escalation
None.
Suppression
Digested to one channel post per day listing every stage move, ordered by project. Immediate only for the move into Agreement and the move into Closed.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 6 facts · 1 action · title 32 characters
Payload file: src/services/notifications/cards/N-08.json
N-09
A seco_agreement is recorded against the project
Agreement signed — Not yet created
Delivery begins once the plan is baselined.
Audience
Team channel — Project team channel and the sales owner
seco_project.ownerteam channel + seco_project.seco_salesowner 1:1. Agreement value is permitted: it is the customer's own committed figure, not an internal rate.
Resolved for this record: Teams channel · United States — Assessment & qualification
Payload fields and source column
Escalation
None.
Suppression
One per agreement. Amendments post a new card only when the value changes.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 5 facts · 1 action · title 0 characters
Payload file: src/services/notifications/cards/N-09.json
N-10
Feedback submitted and the project closed
Project closed — Not yet created
Cedar Junction Aerospace LLC — impeller five-axis package
No closure figures recorded for this record.
Close the opportunity in Dynamics 365.
Recorded in EPMS. Dynamics 365 is not updated automatically — close the opportunity there.
Opportunity reference: NSP-20256
Audience
Record owner — Sales owner personally, plus the BD channel
seco_project.seco_salesowner → 1:1 chat, plus the business development channel. Both are entitled to total cost and total hours; if that audience ever widens, those two facts come off the card (`08 §5`).
Resolved for this record: Alonzo Pierce (record owner) + channel
Payload fields and source column
Escalation
No response to the Dynamics 365 action within 10 working days: one reminder to the sales owner. Nothing is written to the CRM automatically (D-03).
Suppression
Never digested, never suppressible. This card stands in for a CRM write, so losing it loses the value record.
Confidentiality: no cost rate, charge rate, margin or internal cost.
total cost and total hours permitted here because the audience is the sales owner and the BD channel (08 §5).
Schema 1.4 · 9 facts · 2 actions · title 32 characters
Payload file: src/services/notifications/cards/N-10.json
N-11
The closure lifecycle deactivated external accounts
External access closed — Not yet created
Deactivation is not deletion. The records and the audit trail stay, and access can be reinstated.
Audience
Record owner — Project lead, informational
seco_project.ownerusr → 1:1 chat.
Resolved for this record: Not yet assigned (record owner)
Payload fields and source column
Escalation
None.
Suppression
Digested with the lead's other informational cards. Opt-down permitted to weekly.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 5 facts · 1 action · title 40 characters
Payload file: src/services/notifications/cards/N-11.json
N-12
A record's sync state moves to Failed
INTEGRATION
Sync failed — REQ-00027
The record is unchanged in EPMS. Nothing was written to Dynamics 365.
Audience
Team channel — Platform support channel
Fixed channel from configuration, not from the record. A technical audience — no customer or commercial detail on this card.
Resolved for this record: Teams channel · Platform support
Payload fields and source column
Escalation
First failure: immediate. Same object failing repeatedly: collapsed into one card per object per day with an attempt count, so a broken connector cannot flood the channel.
Suppression
Deduplicated on object + reference + error within 24 hours. A resolved sync posts nothing — silence is success.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 6 facts · 2 actions · title 0 characters
Payload file: src/services/notifications/cards/N-12.json
N-13
A seco_opportunityintake row is created by a customer
ENQUIRY
Enquiry received — Cedar Junction Aerospace LLC
The assessment & qualification team will triage this. The account's sales owner is copied for awareness.
Audience
Record owner — Sales owner for the account, plus the A&Q channel
account.ownerid → 1:1 chat, plus the assessment & qualification channel. Check channel membership before posting customer names (`08 §5`).
Resolved for this record: Alonzo Pierce (record owner) + channel
Payload fields and source column
Escalation
Untriaged after 1 working day: repost to the A&Q channel.
Suppression
One per enquiry. Cannot be opted down by the sales owner — it is inbound customer demand.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 5 facts · 1 action · title 47 characters
Payload file: src/services/notifications/cards/N-13.json
N-14
Delivery complete and no feedback recorded after n days
Feedback outstanding — Not yet created
The project cannot close until feedback is recorded. Ask the customer.
Audience
Record owner — Project lead first, then the requester
seco_project.ownerusr, then seco_request.seco_requestedby on the second pass (D-24, R-09).
Resolved for this record: Not yet assigned (record owner)
Payload fields and source column
Escalation
Day 7 after completion: project lead. Day 14: requester added. Day 21: weekly only. Thresholds are an open item (`08 §7.3`).
Suppression
Weekly digest after the second pass. It never stops, because feedback is the mandatory closure gate.
Confidentiality: no cost rate, charge rate, margin or internal cost.
Schema 1.4 · 5 facts · 2 actions · title 0 characters
Payload file: src/services/notifications/cards/N-14.json
Fourteen card types across 150 users produces fatigue, then muting, which is worse than email. The full policy is in docs/notifications/CATALOGUE.md. In summary:
Opting down, never out: any user may move an informational card from immediate to daily, or from daily to weekly. Decisions addressed to them personally — N-02, N-03, N-04, N-07 and N-10 — cannot be turned off, because turning them off stops the work.