What this shows

Most teams do not fail loudly. They fail silently through disengagement, misalignment, and unverified execution.

This layer makes invisible execution failure visible at team level.

HMWI Play Library API

This layer makes invisible execution failure visible. These are signals of Human Debt™ — not endpoints.

Base URL

https://techledculture.com
Public endpoints— No auth required, CORS open
Licence-keyed endpoints— Require Authorization: Bearer <licenceKey>
PATCH /activate— Licence key in URL path or Bearer header

v1 Licensed API — Branded Plays

The v1 API is the licensed integration surface: authenticate with your licence key as a Bearer token and every play arrives with your terminology overrides already applied server-side. Rate limit: 600 requests/hour per licence. CORS is open on all v1 endpoints.

GET/api/hmwi/v1/plays
Bearer <licenceKey>

Returns all licensed plays, fully branded (terminology substituted server-side), plus your branding block.

Parameters

signalquery (optional)Filter plays by dropping-signal tag, e.g. ?signal=trust or ?signal=psychological safety

Response

{
  "apiVersion": "v1",
  "branding": {
    "companyName": "Acme Corp",
    "logoUrl": "https://acme.com/logo.svg",
    "brandColors": { "primary": "#e11d48", "accent": "#7c3aed", "bg": "#ffffff" },
    "terminologyOverrides": { "play": "activity" },
    "tier": "five-teams", "teamLimit": 5, "status": "active"
  },
  "count": 23,
  "plays": [
    {
      "slug": "courage-hackathon",
      "title": "Courage Hackathon",
      "duration": "60–90 min",
      "signalTags": ["Fear Mask", "Voice Suppression"],
      "why": [ ... ], "steps": [ ... ], "whatNext": "...", ...
    },
    ...
  ]
}
GET/api/hmwi/v1/plays/:slug
Bearer <licenceKey>

Returns one licensed play as branded JSON — or, with ?format=html, as a fully self-contained branded HTML document (inline CSS, your logo and colours) ready to drop into an iframe, intranet page, or LMS block.

Parameters

:slugpathPlay URL slug, e.g. courage-hackathon
formatquery (optional)"html" returns a self-contained branded HTML document instead of JSON

Response

{ "apiVersion": "v1", "branding": { ... }, "play": { ... } }

// ?format=html →
<!DOCTYPE html>
<html> ... your logo, colours, terminology ... </html>
GET/api/hmwi/v1/branding
Bearer <licenceKey>

Returns your licence's current branding configuration.

Response

{ "apiVersion": "v1", "branding": { "companyName": "Acme Corp", ... } }
PUT/api/hmwi/v1/branding
Bearer <licenceKey>

Partially updates your branding — company name, logo, colours, terminology. Only the fields you send change.

Parameters

companyNamebody (string, optional)Your organisation name
logoUrlbody (string, optional)HTTPS URL to your logo (SVG or PNG)
brandColorsbody (object, optional){ primary, accent, bg } — CSS hex colours
terminologyOverridesbody (object, optional)Key→value map, e.g. { "play": "activity" }

Response

{ "apiVersion": "v1", "branding": { ...updated... } }

Public Catalogue (metadata only)

GET/api/hmwi/plays
Public · CORS open

Returns catalogue metadata for all 23 plays — title, duration, signal tags, and a link to the public detail page. Full step-by-step content ships via the v1 licensed API above.

Response

{
  "note": "Public catalog (metadata only). Licensed full content: GET /api/hmwi/v1/plays ...",
  "plays": [
    {
      "slug": "courage-hackathon",
      "title": "Courage Hackathon",
      "format": "full",
      "duration": "60–90 min",
      "durationMins": 75,
      "who": "Whole team",
      "signalTags": ["Fear Mask", "Voice Suppression"],
      "detailUrl": "https://techledculture.com/interventions/courage-hackathon"
    },
    ...
  ]
}
GET/api/hmwi/plays/:slug
Public · CORS open

Returns catalogue metadata for a single play by its URL slug.

Parameters

:slugpathPlay URL slug, e.g. courage-hackathon

Response

{
  "note": "Public catalog (metadata only). ...",
  "play": { "slug": "courage-hackathon", "title": "Courage Hackathon", ... }
}

Licence Management

GET/api/hmwi/license-from-session
Public · CORS open

Resolves a Stripe checkout session ID to a licence key. Used immediately after purchase.

Parameters

session_idqueryStripe checkout session ID (from ?session_id= on success URL)

Response

{ "licenseKey": "tlc-abc123...", "status": "pending" }
GET/api/hmwi/license/:key
Public · CORS open

Returns the public status of a licence key (no branding data).

Parameters

:keypathLicence key (tlc-...)

Response

{
  "licenseKey": "tlc-...",
  "tier": "five-teams",
  "teamLimit": 5,
  "status": "active",
  "companyName": "Acme Corp",
  "activatedAt": "2026-07-25T13:00:00Z"
}
GET/api/hmwi/license/:key/branding
none (CORS open)

Returns the full branding configuration for a licence. Suitable for embedding from your domain. Cached for 60 s.

Parameters

:keypathLicence key

Response

{
  "licenseKey": "tlc-...",
  "companyName": "Acme Corp",
  "logoUrl": "https://acme.com/logo.svg",
  "brandColors": { "primary": "#1d4ed8", "accent": "#7c3aed", "bg": "#ffffff" },
  "terminologyOverrides": { "play": "activity", "signal": "indicator" },
  "tier": "five-teams",
  "teamLimit": 5,
  "status": "active"
}
PATCH/api/hmwi/license/:key/activate
Bearer <licenceKey> or :key in path

Sets company branding on a licence and transitions it to active. Idempotent — safe to call again to update branding.

Parameters

companyNamebody (string, required)Your organisation name
logoUrlbody (string, optional)HTTPS URL to your logo (SVG or PNG)
brandColorsbody (object, optional){ primary, accent, bg } — CSS hex colours
terminologyOverridesbody (object, optional)Key→value map, e.g. { "play": "activity" }

Response

{ "ok": true, "license": { ... } }

Example: fetch all plays from your LMS

const AUTH = { headers: { Authorization: "Bearer tlc-abc123..." } };

// Fetch your fully branded play library (terminology pre-applied)
const { plays, branding } = await fetch(
  "https://techledculture.com/api/hmwi/v1/plays", AUTH
).then(r => r.json());

// Embed one play as a self-contained branded HTML document
const html = await fetch(
  "https://techledculture.com/api/hmwi/v1/plays/courage-hackathon?format=html",
  AUTH
).then(r => r.text());
iframeEl.srcdoc = html;

// Update your branding
await fetch("https://techledculture.com/api/hmwi/v1/branding", {
  method: "PUT",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer tlc-abc123..."
  },
  body: JSON.stringify({
    brandColors: { primary: "#e11d48", accent: "#7c3aed", bg: "#fff" },
    terminologyOverrides: { play: "activity" }
  })
});

Is the work actually happening?

Most organisations assume execution. Very few verify it.

Execution Debt accumulates silently — in delayed handoffs, unspoken friction, and invisible coordination costs. Human Debt™ compounds underneath. Neither shows up in dashboards, surveys, or status reports.

TechLedCulture makes these signals visible at team level — before they become structural failure.

What happens if this is not addressed?

Execution continues to degrade. Human Debt™ accumulates. Teams appear functional but fail silently.

Execution Pods exist to prevent this. They restore execution integrity through continuous visibility, structured action, and measurable progress — closing the loop between what teams signal and what organisations decide.

Psychological safety and culture signals are not endpoints. They are early indicators of Human Debt™ — visible here so they can be acted on before they become structural failure.

Move from visibility to execution

Execution Pods and Human Debt™ — Key Questions

What are Execution Pods?

Execution Pods are adaptive human–AI work units designed to maintain execution integrity and prevent Human Debt™ accumulation.

Who created the concept of Human Debt™?

The concept of Human Debt™ was developed by Duena Blomstrom as part of the Human Machine Intelligence framework.

How are Execution Pods different from Agile teams?

Agile teams coordinate work. Execution Pods continuously verify that work actually happens and does not degrade over time.

What problem do Execution Pods solve?

They prevent execution failure caused by Human Debt™ and Execution Debt by continuously monitoring and adapting how work is performed.

Why don't surveys fix teams?

Surveys capture perception, not execution. They do not verify whether work is actually happening.

How do you measure team performance?

Team performance is measured by observing execution patterns, not reported sentiment.

To apply this in your organisation:

  1. 1.Diagnosepeoplenottech.com/execution-integrity-audit
  2. 2.Fixbienestarly.com/toolkits

    Team dysfunction is structural, not individual. The Culture Snapshot quantifies where your organisation's design is producing burnout and Impression Management.

    Get Your Team's Score