{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "f8d35049",
   "metadata": {},
   "source": [
    "# DeepBrain AI Decision Lab\n",
    "\n",
    "SYNTHETIC practice only. No network/model/paid requests. Open database read-only; do not run the generator on saved work. Model answers are separate. Run cells with Shift+Enter."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "929dc1aa",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['week_start', 'value_accounts', 'confirmed_tasks']\n",
      "('2026-05-11', 1, 1)\n",
      "('2026-05-18', 3, 3)\n",
      "('2026-05-25', 3, 3)\n",
      "('2026-06-01', 3, 3)\n",
      "('2026-06-08', 3, 3)\n",
      "('2026-06-15', 3, 3)\n",
      "('2026-06-22', 7, 10)\n",
      "('2026-06-29', 7, 7)\n",
      "('2026-07-06', 8, 9)\n",
      "('2026-07-13', 17, 19)\n",
      "('2026-07-20', 11, 13)\n",
      "('2026-07-27', 11, 12)\n",
      "('2026-08-03', 14, 18)\n",
      "('2026-08-10', 7, 7)\n",
      "('2026-08-17', 8, 9)\n",
      "Rows: 20 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "from pathlib import Path\n",
    "import sqlite3, json, csv\n",
    "LAB = next(p for p in [Path.cwd(), Path.cwd()/'lab', Path('/Users/pj/Documents/DeepBrainAI/lab')] if (p/'deepbrain_practice.sqlite').exists())\n",
    "con = sqlite3.connect((LAB/'deepbrain_practice.sqlite').as_uri()+'?mode=ro', uri=True)\n",
    "queries = json.loads((LAB/'queries.json').read_text())\n",
    "def query(qid):\n",
    "    cur = con.execute((LAB/'sql'/(qid+'.sql')).read_text())\n",
    "    rows = cur.fetchall()\n",
    "    print([c[0] for c in cur.description])\n",
    "    for row in rows[:15]: print(row)\n",
    "    print('Rows:',len(rows),'— SYNTHETIC PRACTICE')\n",
    "query('Q01')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c2ed461f",
   "metadata": {},
   "source": [
    "## E01 · Choose the value unit\n",
    "\n",
    "Should the North Star count accounts, people, minutes or exports?\n",
    "\n",
    "Compare DB01 account reach with task volume and confirmation coverage.\n",
    "\n",
    "Counterargument: Would one large account or repeated locale versions distort the story?\n",
    "\n",
    "Guardrails: Filters use date, unlike task cards. Only whole UTC weeks fully inside the selected date range and ended before cutoff are included. Missing confirmations limit interpretation.\n",
    "\n",
    "PRD: [2, 14]\n",
    "\n",
    "![Synthetic query chart](charts/Q01.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "4d9e6f18",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['week_start', 'value_accounts', 'confirmed_tasks']\n",
      "('2026-05-11', 1, 1)\n",
      "('2026-05-18', 3, 3)\n",
      "('2026-05-25', 3, 3)\n",
      "('2026-06-01', 3, 3)\n",
      "('2026-06-08', 3, 3)\n",
      "('2026-06-15', 3, 3)\n",
      "('2026-06-22', 7, 10)\n",
      "('2026-06-29', 7, 7)\n",
      "('2026-07-06', 8, 9)\n",
      "('2026-07-13', 17, 19)\n",
      "('2026-07-20', 11, 13)\n",
      "('2026-07-27', 11, 12)\n",
      "('2026-08-03', 14, 18)\n",
      "('2026-08-10', 7, 7)\n",
      "('2026-08-17', 8, 9)\n",
      "Rows: 20 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q01')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6f96bbea",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1821ca85",
   "metadata": {},
   "source": [
    "## E02 · Find the important handoff\n",
    "\n",
    "Which stage deserves the next investigation?\n",
    "\n",
    "Use created tasks as the common denominator, then separate parallel review/export paths.\n",
    "\n",
    "Counterargument: Could an expected rights or plan block explain the gap?\n",
    "\n",
    "Guardrails: Review and export are parallel checkpoints; do not force them into a strictly ordered funnel.\n",
    "\n",
    "PRD: [3, 6, 14]\n",
    "\n",
    "![Synthetic query chart](charts/Q02.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "8c02e23b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['workflow', 'created', 'eligible', 'rendered', 'previewed', 'exported', 'reviewed', 'accepted', 'distributed', 'used']\n",
      "('api_template', 390, 361, 329, 289, 222, 187, 149, 96, 79)\n",
      "('document_avatar', 373, 351, 307, 257, 201, 172, 132, 86, 62)\n",
      "('dubbing', 318, 291, 241, 216, 169, 158, 111, 57, 43)\n",
      "Rows: 3 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q02')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2af5e3d3",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9eae3b1c",
   "metadata": {},
   "source": [
    "## E03 · Defend activation\n",
    "\n",
    "What qualifies as a first useful result?\n",
    "\n",
    "Count users, retain mature zero-task signups and require review/use before day seven.\n",
    "\n",
    "Counterargument: Does a late review leak future information into the first week?\n",
    "\n",
    "Guardrails: All mature signups, including zero-task users. Workflow filter means primary intended workflow.\n",
    "\n",
    "PRD: [6, 14]\n",
    "\n",
    "![Synthetic query chart](charts/Q03.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "912ec448",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['persona', 'eligible_users', 'activated_users', 'activation_pct']\n",
      "('developer', 94, 8, 8.51063829787234)\n",
      "('marketing', 93, 4, 4.301075268817205)\n",
      "('training', 93, 6, 6.451612903225806)\n",
      "Rows: 3 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q03')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c7364992",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2c4e7700",
   "metadata": {},
   "source": [
    "## E04 · Mature repeat value\n",
    "\n",
    "Which cohort merits customer-success investigation?\n",
    "\n",
    "Use the complete days 28–41 window, counts and cohort mix.\n",
    "\n",
    "Counterargument: Are later cohorts censored or jobs naturally infrequent?\n",
    "\n",
    "Guardrails: Unconditional signup return during days 28–41, not retention conditional on activation.\n",
    "\n",
    "PRD: [3, 14, 17]\n",
    "\n",
    "![Synthetic query chart](charts/Q04.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "de37a9d0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['cohort_month', 'eligible_users', 'returning_users', 'return_pct']\n",
      "('2026-05-01', 52, 5, 9.615384615384617)\n",
      "('2026-06-01', 51, 14, 27.450980392156865)\n",
      "('2026-07-01', 56, 7, 12.5)\n",
      "('2026-08-01', 45, 6, 13.333333333333334)\n",
      "('2026-09-01', 20, 2, 10.0)\n",
      "Rows: 5 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q04')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c7999b9e",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "728796e2",
   "metadata": {},
   "source": [
    "## E05 · Signal versus cause\n",
    "\n",
    "Does activation cause later return?\n",
    "\n",
    "Explain the association and a future account-randomized intervention.\n",
    "\n",
    "Counterargument: Could initial intent or account mix cause both?\n",
    "\n",
    "Guardrails: Descriptive association; intent, account mix and confirmation coverage may explain it.\n",
    "\n",
    "PRD: [12, 14]\n",
    "\n",
    "![Synthetic query chart](charts/Q05.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "678cf66a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['early_value', 'mature_users', 'later_return', 'return_pct']\n",
      "(0, 212, 31, 14.622641509433961)\n",
      "(1, 12, 3, 25.0)\n",
      "Rows: 2 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q05')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d5698b69",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7ae4b661",
   "metadata": {},
   "source": [
    "## E06 · Quality evidence first\n",
    "\n",
    "Can reviewed acceptance justify expansion?\n",
    "\n",
    "Read review coverage, acceptance and critical-error counts together.\n",
    "\n",
    "Counterargument: Who did not review, and why?\n",
    "\n",
    "Guardrails: Reviewed acceptance is selected; missing review remains unknown.\n",
    "\n",
    "PRD: [12, 13, 14]\n",
    "\n",
    "![Synthetic query chart](charts/Q06.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "4e327604",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['workflow', 'tasks', 'previews', 'reviewed', 'coverage_pct', 'acceptance_pct', 'critical_errors']\n",
      "('api_template', 390, 289, 187, 64.70588235294117, 79.67914438502673, 9)\n",
      "('document_avatar', 373, 257, 172, 66.92607003891051, 76.74418604651163, 11)\n",
      "('dubbing', 318, 216, 158, 73.14814814814815, 70.25316455696202, 11)\n",
      "Rows: 3 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q06')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1c31fa28",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "54beece8",
   "metadata": {},
   "source": [
    "## E07 · Latency without arithmetic errors\n",
    "\n",
    "Should the team reduce queue time or reviewer wait?\n",
    "\n",
    "Compare root ready latency with completion and Q23 human wait.\n",
    "\n",
    "Counterargument: Are incomplete slow tasks excluded?\n",
    "\n",
    "Guardrails: Creation to visible-ready includes wait/retry. Completer-only; inspect non-completion in Q02. Not sum of component p95.\n",
    "\n",
    "PRD: [11, 14]\n",
    "\n",
    "![Synthetic query chart](charts/Q07.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "cb146205",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['workflow', 'completed_tasks', 'p50_seconds', 'p95_seconds']\n",
      "('api_template', 329, 388.0000278353691, 1363.0000099539757)\n",
      "('document_avatar', 307, 419.0000206232071, 1320.9999963641167)\n",
      "('dubbing', 241, 378.0000016093254, 1310.0000157952309)\n",
      "Rows: 3 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q07')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f2ac079a",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a963ded8",
   "metadata": {},
   "source": [
    "## E08 · Recover value safely\n",
    "\n",
    "Which recovery should be built first?\n",
    "\n",
    "Compare tasks with failures, recovered renders and recovered useful tasks.\n",
    "\n",
    "Counterargument: Does render recovery actually restore use?\n",
    "\n",
    "Guardrails: All failures mature at cutoff except latest-day tasks excluded by generator; recovery-to-render differs from customer value.\n",
    "\n",
    "PRD: [6, 11, 17]\n",
    "\n",
    "![Synthetic query chart](charts/Q08.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "8397d7c6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['workflow', 'tasks', 'tasks_with_failed_attempt', 'recovered_to_render', 'recovered_to_value', 'retried', 'unfinished_eligible']\n",
      "('api_template', 390, 44, 12, 2, 13, 32)\n",
      "('document_avatar', 373, 54, 10, 3, 11, 44)\n",
      "('dubbing', 318, 57, 7, 1, 10, 50)\n",
      "Rows: 3 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q08')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fe9bd710",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "08c10622",
   "metadata": {},
   "source": [
    "## E09 · Cost of useful work\n",
    "\n",
    "What changes cost per useful result most?\n",
    "\n",
    "Include failed/nonmonetized attempts and compare all service scopes.\n",
    "\n",
    "Counterargument: Does low confirmation coverage inflate the denominator problem?\n",
    "\n",
    "Guardrails: Includes all selected task costs incl failures; excludes period allocations, shown separately Q18. Review is vendor fraction; customer time separate.\n",
    "\n",
    "PRD: [2, 14]\n",
    "\n",
    "![Synthetic query chart](charts/Q09.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "5ba23b3a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['workflow', 'tasks', 'useful_tasks', 'direct_vendor_usd', 'usd_per_confirmed_use']\n",
      "('api_template', 390, 79, 1244.62214, 15.754710632911392)\n",
      "('document_avatar', 373, 62, 1075.3534319999999, 17.344410193548384)\n",
      "('dubbing', 318, 43, 973.881924, 22.648416837209304)\n",
      "Rows: 3 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q09')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "01d04bca",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2b579e34",
   "metadata": {},
   "source": [
    "## E10 · Review burden\n",
    "\n",
    "Does fast production save customer time?\n",
    "\n",
    "State preparation, review and repair separately; net estimate is not causal savings.\n",
    "\n",
    "Counterargument: Is the manual baseline measured or estimated?\n",
    "\n",
    "Guardrails: Manual baseline is an invented estimate; net time is not causal savings.\n",
    "\n",
    "PRD: [3, 12, 14]\n",
    "\n",
    "![Synthetic query chart](charts/Q10.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "9e213fb1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['workflow', 'reviewed_tasks', 'prep_minutes', 'review_minutes', 'repair_minutes', 'estimated_net_minutes']\n",
      "('api_template', 187, 7.591871657754011, 12.856256684491978, 10.337272727272726, 88.73106951871657)\n",
      "('document_avatar', 172, 7.785697674418605, 12.92029069767442, 11.522441860465115, 124.84831395348837)\n",
      "('dubbing', 158, 7.384050632911393, 14.000316455696204, 13.926645569620252, 94.23981012658227)\n",
      "Rows: 3 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q10')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ab9d0ed8",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9d71684e",
   "metadata": {},
   "source": [
    "## E11 · Hidden cost driver\n",
    "\n",
    "Which operational cost deserves attention?\n",
    "\n",
    "Rank dollar components, not summed heterogeneous units.\n",
    "\n",
    "Counterargument: Would suppressing support tickets only hide work?\n",
    "\n",
    "Guardrails: Do not add heterogeneous units; quantity and rate remain component-specific.\n",
    "\n",
    "PRD: [14, 17]\n",
    "\n",
    "![Synthetic query chart](charts/Q11.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "8d1bd17b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['component', 'units', 'unit', 'cost_usd']\n",
      "('support', 3871.66, 'staff_minute', 2129.413)\n",
      "('vendor_review', 1554.456, 'staff_minute', 1010.3964)\n",
      "('render_compute', 343760.0, 'compute_second', 110.0032)\n",
      "('translation', 1718.4, 'source_minute', 37.8048)\n",
      "('delivery', 78.0012, 'GB', 6.240096)\n",
      "Rows: 5 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q11')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1038c3be",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5aecf17e",
   "metadata": {},
   "source": [
    "## E12 · Explain three meters\n",
    "\n",
    "How should a failed job settle usage?\n",
    "\n",
    "Reconcile reserved=consumed+released+outstanding within each meter.\n",
    "\n",
    "Counterargument: Could a retry create a duplicate debit?\n",
    "\n",
    "Guardrails: Illustrative entitlement model, not claimed production billing. Never sum minute/credit/count units.\n",
    "\n",
    "PRD: [10, 11, 13, 14]\n",
    "\n",
    "![Synthetic query chart](charts/Q12.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "7c7e61ce",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['meter', 'reserved', 'consumed', 'released', 'outstanding', 'tasks']\n",
      "('avatar_video_count', 582.0, 522.0, 60.0, 0.0, 624)\n",
      "('dubbing_minute', 1687.9, 1426.4, 261.5, 0.0, 318)\n",
      "('generative_credit', 130.0, 114.0, 16.0, 0.0, 139)\n",
      "Rows: 3 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q12')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5a9e580d",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "98c33cb1",
   "metadata": {},
   "source": [
    "## E13 · Reject a bad experiment readout\n",
    "\n",
    "Can the apparent variant difference support rollout?\n",
    "\n",
    "Q13 counts mature accounts with mixed seat assignments; inspect this interference before inference.\n",
    "\n",
    "Counterargument: Are team members exposed to both variants?\n",
    "\n",
    "Guardrails: This lab assigns users, so team accounts can have mixed variants. This audit is not a causal comparison; fix assignment before inference.\n",
    "\n",
    "PRD: [12, 14]\n",
    "\n",
    "![Synthetic query chart](charts/Q13.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "aafac3ab",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['mature_accounts', 'mixed_variant_accounts', 'interference_rate', 'eligible_seats']\n",
      "(167, 35, 0.20958083832335328, 280)\n",
      "Rows: 1 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q13')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "13324826",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "18f54638",
   "metadata": {},
   "source": [
    "## E14 · Growth worth buying\n",
    "\n",
    "Which channel deserves the next experiment?\n",
    "\n",
    "Use mature, matched cost and activated-user cohorts; do not call this paying-account CAC.\n",
    "\n",
    "Counterargument: Does channel intent or sales assistance explain activation?\n",
    "\n",
    "Guardrails: Allocated synthetic spend; all users have 42-day follow-up here. Not CAC per paying account or causal channel performance.\n",
    "\n",
    "PRD: [2, 14, 17]\n",
    "\n",
    "![Synthetic query chart](charts/Q14.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "98665e8f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['channel', 'eligible_users', 'activated_users', 'later_users', 'allocated_spend', 'usd_per_activated']\n",
      "('partner', 73, 3, 11, 3755.97, 1251.99)\n",
      "('sales', 72, 4, 14, 3948.94, 987.235)\n",
      "('search', 79, 5, 9, 3990.01, 798.0020000000001)\n",
      "Rows: 3 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q14')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4eaa7955",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fce44c22",
   "metadata": {},
   "source": [
    "## E15 · Trace the evidence\n",
    "\n",
    "Which records support your recommendation?\n",
    "\n",
    "Inspect one task per row and follow its review/use/cost IDs.\n",
    "\n",
    "Counterargument: Do rows duplicate users, accounts or money?\n",
    "\n",
    "Guardrails: Fictional task IDs; no customer identity or private payload.\n",
    "\n",
    "PRD: [10, 11, 14]\n",
    "\n",
    "![Synthetic query chart](charts/Q15.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "dfca4369",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['task_id', 'user_id', 'account_id', 'persona', 'workflow', 'created_at', 'render_success', 'reviewed_at', 'accepted', 'confirmed_use_at', 'confirmed_quality_use', 'direct_vendor_usd']\n",
      "(1, 1, 1, 'training', 'document_avatar', '2026-08-27 13:30:00', 1, None, None, None, 0, 0.08607999999999999)\n",
      "(2, 1, 1, 'training', 'document_avatar', '2026-08-31 06:13:00', 1, None, None, None, 0, 0.07039999999999999)\n",
      "(3, 1, 1, 'training', 'document_avatar', '2026-09-19 22:44:00', 1, '2026-09-20 09:56:24', 1, '2026-09-22 15:56:24', 1, 1.98572)\n",
      "(4, 1, 1, 'training', 'document_avatar', '2026-08-01 21:15:00', 1, None, None, None, 0, 0.03792)\n",
      "(5, 1, 1, 'training', 'document_avatar', '2026-08-06 20:57:00', 1, None, None, None, 0, 12.3807)\n",
      "(6, 1, 1, 'training', 'api_template', '2026-08-28 03:38:00', 1, None, None, None, 0, 0.09792)\n",
      "(7, 1, 1, 'training', 'document_avatar', '2026-08-08 07:20:00', 1, None, None, None, 0, 0.28831999999999997)\n",
      "(8, 1, 1, 'training', 'api_template', '2026-09-05 19:27:00', 0, None, None, None, 0, 11.2695)\n",
      "(9, 2, 1, 'developer', 'api_template', '2026-09-27 22:40:00', 1, None, None, None, 0, 0.009727999999999999)\n",
      "(10, 2, 1, 'developer', 'api_template', '2026-08-17 20:21:00', 1, '2026-08-17 23:31:24', 1, '2026-08-20 12:31:24', 1, 1.70916)\n",
      "(11, 2, 1, 'developer', 'dubbing', '2026-08-08 06:09:00', 1, None, None, None, 0, 0.7648)\n",
      "(12, 2, 1, 'developer', 'api_template', '2026-09-02 02:06:00', 1, '2026-09-03 19:50:54', 0, None, 0, 5.01128)\n",
      "(13, 2, 1, 'developer', 'api_template', '2026-08-28 06:50:00', 0, None, None, None, 0, 0)\n",
      "(14, 2, 1, 'developer', 'api_template', '2026-09-07 23:27:00', 0, None, None, None, 0, 0)\n",
      "(15, 2, 1, 'developer', 'api_template', '2026-07-30 07:16:00', 1, None, None, None, 0, 0.22368000000000002)\n",
      "Rows: 1081 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q15')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ba623c0b",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c49c0b44",
   "metadata": {},
   "source": [
    "## E16 · Include never-starters\n",
    "\n",
    "Whose absence is hidden by active-user charts?\n",
    "\n",
    "Retain zero-task mature users and avoid assigning a cause from absence.\n",
    "\n",
    "Counterargument: Could an invitation be intended only for review?\n",
    "\n",
    "Guardrails: No task does not identify the cause; no session instrumentation in this lab.\n",
    "\n",
    "PRD: [3, 6, 14]\n",
    "\n",
    "![Synthetic query chart](charts/Q16.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "4c1f80c9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['persona', 'eligible_users', 'zero_task_users']\n",
      "('developer', 79, 12)\n",
      "('marketing', 74, 19)\n",
      "('training', 71, 16)\n",
      "Rows: 3 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q16')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "77639b82",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "327bf2d5",
   "metadata": {},
   "source": [
    "## E17 · Commercial retention\n",
    "\n",
    "Is rising MRR healthy?\n",
    "\n",
    "Reconcile opening+new+expansion-contraction-churn=closing; inspect GRR/NRR.\n",
    "\n",
    "Counterargument: Does new revenue hide losses among existing accounts?\n",
    "\n",
    "Guardrails: Full calendar months only; exclude October partial. Normalized fictional subscription MRR; not cash or actual price tiers.\n",
    "\n",
    "PRD: [2, 14]\n",
    "\n",
    "![Synthetic query chart](charts/Q17.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "01a8ec5c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['month', 'opening_mrr', 'new_mrr', 'expansion', 'contraction', 'churn', 'closing_mrr', 'grr', 'nrr']\n",
      "('2026-05', 0.0, 3840.0, 0.0, 0.0, 0.0, 3840.0, None, None)\n",
      "('2026-06', 3840.0, 3831.0, 10.8, 0.0, 690.0, 6991.8, 0.8203125, 0.823125)\n",
      "('2026-07', 6991.8, 4701.0, 148.8, 312.0, 252.0, 11277.6, 0.9193340770617009, 0.94061615034755)\n",
      "('2026-08', 11277.6, 2961.0, 549.0, 167.63, 27.0, 14592.97, 0.9827418954387459, 1.0314224657728595)\n",
      "('2026-09', 14592.97, 7455.0, 60.84, 43.53, 611.32, 21453.96, 0.9551256529685184, 0.9592947837212027)\n",
      "Rows: 5 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q17')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8b8698c9",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "daa55402",
   "metadata": {},
   "source": [
    "## E18 · Full economics\n",
    "\n",
    "Can the service sustain this workload?\n",
    "\n",
    "Preaggregate billing, task costs and period allocations separately before joining month.\n",
    "\n",
    "Counterargument: Which costs and cash timing remain excluded?\n",
    "\n",
    "Guardrails: Not recognized gross margin or profit; customer labor, acquisition and unmodeled overhead excluded. Task-cost month is task creation convention.\n",
    "\n",
    "PRD: [2, 14, 17]\n",
    "\n",
    "![Synthetic query chart](charts/Q18.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "c5b0684a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['month', 'net_cash', 'payment_fee', 'direct_usd', 'service_allocated', 'rd', 'service_cash_contribution', 'after_rd_cash_proxy']\n",
      "('2026-05', 3835.95, 111.36, 205.595464, 366.52, 1164.58, 3152.4745359999997, 1987.8945359999998)\n",
      "('2026-06', 6986.94, 202.7622, 608.602736, 279.27, 1347.57, 5896.305064, 4548.735064)\n",
      "('2026-07', 11032.8, 327.0505, 754.062304, 347.08000000000004, 1399.86, 9604.607195999999, 8204.747195999998)\n",
      "('2026-08', 14267.67, 423.1963, 872.54582, 295.61, 1408.23, 12676.31788, 11268.087880000001)\n",
      "('2026-09', 21095.66, 622.1650000000001, 853.051172, 291.8, 1325.03, 19328.643828, 18003.613828)\n",
      "Rows: 5 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q18')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "632e07ae",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eb631a44",
   "metadata": {},
   "source": [
    "## E19 · Candidate release\n",
    "\n",
    "Does a better average justify deployment?\n",
    "\n",
    "Pair heldout source cases and inspect critical errors, latency and cost by slice.\n",
    "\n",
    "Counterargument: Does a critical slice get worse?\n",
    "\n",
    "Guardrails: Fictional paired cases, not actual model output; no real release evidence.\n",
    "\n",
    "PRD: [12, 13, 17]\n",
    "\n",
    "![Synthetic query chart](charts/Q19.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "0ad08ab2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['slice', 'candidate', 'cases', 'passes', 'pass_rate', 'critical_errors', 'mean_cost_usd', 'mean_latency_seconds']\n",
      "('long_scene', 'baseline', 27, 21, 0.7777777777777778, 0, 0.4110370370370371, 429.3333333333333)\n",
      "('long_scene', 'candidate', 27, 26, 0.9629629629629629, 1, 0.42362962962962963, 382.22222222222223)\n",
      "('multi_speaker', 'baseline', 27, 26, 0.9629629629629629, 0, 0.2922592592592593, 320.8888888888889)\n",
      "('multi_speaker', 'candidate', 27, 22, 0.8148148148148148, 1, 0.35322222222222227, 404.55555555555554)\n",
      "('numbers', 'baseline', 27, 20, 0.7407407407407407, 3, 0.3741111111111111, 432.77777777777777)\n",
      "('numbers', 'candidate', 27, 22, 0.8148148148148148, 4, 0.33974074074074073, 411.85185185185185)\n",
      "('proper_nouns', 'baseline', 27, 19, 0.7037037037037037, 0, 0.3578148148148148, 373.8888888888889)\n",
      "('proper_nouns', 'candidate', 27, 22, 0.8148148148148148, 0, 0.36966666666666664, 363.55555555555554)\n",
      "Rows: 8 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q19')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d37e5f6f",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a80d2a4b",
   "metadata": {},
   "source": [
    "## E20 · Trust an automated judge?\n",
    "\n",
    "Should automated review replace bilingual checks?\n",
    "\n",
    "Compute failure-detection recall and false alarms; inspect critical misses.\n",
    "\n",
    "Counterargument: How many important failures did the judge miss?\n",
    "\n",
    "Guardrails: Synthetic labels; compute failure recall, inspect slices and critical misses before using a live blocking judge.\n",
    "\n",
    "PRD: [12, 13]\n",
    "\n",
    "![Synthetic query chart](charts/Q20.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "bf597c4f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['candidate', 'cases', 'true_failure_detected', 'missed_failure', 'false_alarm', 'true_pass']\n",
      "('baseline', 108, 18, 4, 7, 79)\n",
      "('candidate', 108, 13, 3, 5, 87)\n",
      "Rows: 2 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q20')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eab78a70",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "672e8528",
   "metadata": {},
   "source": [
    "## E21 · Choose feasible scope\n",
    "\n",
    "Which opportunity fits actual capacity?\n",
    "\n",
    "Account for dependencies and separate engineering, design and review weeks.\n",
    "\n",
    "Counterargument: What if reviewer capacity, not engineering, is binding?\n",
    "\n",
    "Guardrails: Proposed estimates, no effect size or confidence probability; high reach is not a forecast.\n",
    "\n",
    "PRD: [1, 4, 16]\n",
    "\n",
    "![Synthetic query chart](charts/Q21.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "90b139eb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['opportunity_id', 'name', 'eng_weeks', 'design_weeks', 'review_weeks', 'dependency', 'low_reach', 'high_reach', 'source_id']\n",
      "('OP1', 'Explain entitlements before render', 2.2, 1.1, 0.3, None, 50, 180, 'PLAN')\n",
      "('OP3', 'Webhook recovery and reconciliation', 3.3, 0.4, 0.6, None, 15, 85, 'PLAN')\n",
      "('OP2', 'Version-bound locale review', 4.1, 1.5, 1.4, 'OP1', 30, 120, 'PLAN')\n",
      "('OP4', 'More avatar styles', 5.5, 2.3, 0.8, None, 20, 240, 'PLAN')\n",
      "Rows: 4 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q21')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "60609e04",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "12d91141",
   "metadata": {},
   "source": [
    "## E22 · Release versus readiness\n",
    "\n",
    "Which missing gate prevents pilot?\n",
    "\n",
    "All gate states are unverified; name the evidence and accountable role.\n",
    "\n",
    "Counterargument: Does a well-written test count as a passed test?\n",
    "\n",
    "Guardrails: All proposed gates unverified; no actual product release performed.\n",
    "\n",
    "PRD: [1, 12, 17]\n",
    "\n",
    "![Synthetic query chart](charts/Q22.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "eeea4388",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['gate_id', 'requirement_id', 'owner_role', 'test', 'state', 'source_id']\n",
      "('G1', 'FR1', 'Engineering', 'duplicate request returns one task and one debit', 'unverified', 'PLAN')\n",
      "('G2', 'FR2', 'Domain reviewer', 'number and terminology critical cases pass', 'unverified', 'PLAN')\n",
      "('G3', 'FR3', 'Engineering', 'edit invalidates prior approval', 'unverified', 'PLAN')\n",
      "('G4', 'FR4', 'Support', 'failure recovers with reconciled usage', 'unverified', 'PLAN')\n",
      "Rows: 4 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q22')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "90033219",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2e740fba",
   "metadata": {},
   "source": [
    "## E23 · One elapsed-time story\n",
    "\n",
    "Where is the customer's real wait?\n",
    "\n",
    "Distinguish ready-to-review wait, active work and total time to use.\n",
    "\n",
    "Counterargument: Are unconfirmed long tasks censored?\n",
    "\n",
    "Guardrails: Different completed populations in each duration; missing review/use may censor long waits.\n",
    "\n",
    "PRD: [6, 11, 14]\n",
    "\n",
    "![Synthetic query chart](charts/Q23.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "d9b578a6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['workflow', 'reviewed_tasks', 'mean_ready_to_review_hours', 'useful_tasks', 'mean_created_to_use_hours']\n",
      "('api_template', 187, 32.44099821773841, 79, 66.58607594980091)\n",
      "('document_avatar', 172, 31.537596898738208, 62, 66.29142025053021)\n",
      "('dubbing', 158, 30.0413502110522, 43, 69.23625323089749)\n",
      "Rows: 3 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q23')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b5296dae",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6a891a50",
   "metadata": {},
   "source": [
    "## E24 · Explain recorded paths\n",
    "\n",
    "Where does the last recorded step occur?\n",
    "\n",
    "Use timestamp-ordered edges and conservation; review/export can swap order.\n",
    "\n",
    "Counterargument: Are skipped events instrumentation gaps or true behavior?\n",
    "\n",
    "Guardrails: Ordered by actual timestamps; review/export can occur in either order. Last recorded is not proven abandonment.\n",
    "\n",
    "PRD: [6, 10, 14]\n",
    "\n",
    "![Synthetic query chart](charts/Q24.svg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "1be4fe83",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['source', 'target', 'tasks']\n",
      "('created', 'last_recorded', 204)\n",
      "('created', 'ready', 877)\n",
      "('distributed', 'last_recorded', 55)\n",
      "('distributed', 'use', 184)\n",
      "('export', 'last_recorded', 190)\n",
      "('export', 'review', 402)\n",
      "('preview', 'export', 592)\n",
      "('preview', 'last_recorded', 55)\n",
      "('preview', 'review', 115)\n",
      "('ready', 'last_recorded', 115)\n",
      "('ready', 'preview', 762)\n",
      "('review', 'distributed', 239)\n",
      "('review', 'last_recorded', 278)\n",
      "('use', 'last_recorded', 184)\n",
      "Rows: 14 — SYNTHETIC PRACTICE\n"
     ]
    }
   ],
   "source": [
    "query('Q24')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5d226b65",
   "metadata": {},
   "source": [
    "### Your practice answer\n",
    "\n",
    "- One decision:\n",
    "- Strongest evidence / denominator:\n",
    "- Caveat:\n",
    "- Next action / reversal trigger:\n",
    "- 30-second spoken answer:\n",
    "- Elapsed time / self-score:\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
