Walkthrough · Scenario C · headline
Predict project slip with explainable drivers.
Run the headline ML skill from the Quadrazene seed — ps-predict-slip-weeks— on project 662429 (Bechtel). Five scenes: open the skill, watch the reaction stream, read the prediction card, file the Action Item, and inspect the audit trail.
The PS skills catalogue
Ten skills that ship with the Quadrazene PS demo.
Six Insights skills for read-path analytics; four Advisory skills for recommendations — including the two ML-backed inference skills that drive Scenarios C and A. Each card mirrors what shows up in the Reactor's left rail; click-to-edit chips become live inputs on the real surface.
ps-schedule-changes-by-customerInsightsWarm-up · table readCustomer-level schedule-change frequency, average lead-time of change, dominant reasons.
ps-tonnage-at-riskInsightsScenario D · exec briefingCustomers ranked by tonnage at risk on open projects, with division spread.
ps-weeks-to-required-dateInsightsDistribution of how late in the cycle schedule changes happen — early-stage vs late-stage rescheduling.
ps-open-projects-by-customerInsightsOpen projects grouped by customer — count, tonnage, division spread, oldest project.
ps-customer-pattern-historyInsightsCustomer-level history of schedule changes — what fields shifted, when, why, who, and how late in the cycle.
ps-overdue-milestonesInsightsScenario B · daily triageOverdue milestones with project + customer + days-late, critical-path-first.
ps-flag-at-riskAdvisoryRecommends at-risk projects: customers with high recent change-frequency AND substantial open tonnage. Rule-based; pairs with the ML variant for cross-checks.
ps-trend-alertAdvisoryPredictive alert: customers whose schedule-change rate is worsening versus their own baseline.
ps-predict-slip-weeksAdvisoryMLScenario C · headline ★ML prediction of expected slip in weeks for a project, with p50/p90 quantiles and per-feature drivers from the GBM regressor.
ps-flag-at-risk-mlAdvisoryMLScenario A · late-stage alertML classifier — P(slip) per project with per-feature contributions from the logistic classifier. Pairs with the rule-based ps-flag-at-risk.
Every Skill is engine-tagged, bound to a Reaction, and pinned to the quadrazene-ps System by default. Variables inside {{...}} become chips in the rail — typed input for numbers, defaults for everything else.
Integration architecture
The same skills, called from Fiori, Teams, or the Reactor.
Quadrazene exposes an authenticated HTTP/SSE API that runs the same Skills, Reactions, and Chains the Reactor uses. A Fiori tile can post a skill, watch the response stream, and then read the new SAP document straight from SAP — closing the loop in the user's own UI. A Teams adaptive card does the same thing over Bot Framework. The runtime, the audit ledger, and the policy engine are shared.
Fiori round-trip
A Fiori tile (or full-screen iframe) renders the Reactor view or posts a Skill to /api/skills. The reaction writes a Q3 QM notification to SAP via OData. Fiori reads the new document from SAP exactly the way it would for any other backend write.
Teams card-driven
A Teams bot renders an adaptive card. Submit triggers POST /api/skills/{name}/run with the user's identity. The bot streams the response inline. HITL approvals come back as card actions, captured to the audit ledger.
Server-to-server
Email intake, cron schedules, and external webhooks all hit the same API with a JWT scoped to a service account. Chains queue, run, and notify — no human UI in the loop.
# Run a Skill (streamed via SSE; same payload shape regardless of caller)
POST /api/skills/ps-predict-slip-weeks/run
Authorization: Bearer <jwt-or-oauth-token>
Idempotency-Key: <client-supplied-uuid>
Content-Type: application/json
{
"tenantId": "tachyon",
"params": { "project": "662429" },
"callback": { "kind": "teams", "conversationId": "..." } // optional
}
# List the inbox for the calling user
GET /api/inbox?status=pending&engine=advisory
# Approve / reject a HITL gate (Fiori dialog or Teams card action)
POST /api/hitl/{id}/decide { "decision": "approve", "note": "..." }
# Read the audit trail for a single run (Fiori detail page or compliance UI)
GET /api/audit/runs/{runId}