{
  "generator": "madgettlaw.com/practice-lab",
  "license": "CC0 — take it",
  "method": {
    "vectors": "TF-IDF over article bodies, stopword-filtered, L2-normalised",
    "similarity": "cosine",
    "graph": "k-nearest-neighbour, k=3, undirected, deduplicated",
    "layout": "Fruchterman-Reingold with centroid gravity, deterministic seed",
    "ordering": "agglomerative hierarchical clustering, average linkage"
  },
  "stats": {
    "articles": 41,
    "edges": 81,
    "vocabulary": 6795,
    "meanSimilarity": 0.06177,
    "maxSimilarity": 0.30969,
    "graphDensity": 0.09878,
    "totalWords": 110816
  },
  "articles": [
    {
      "id": "minnesota-stopped-sending-warning-letters",
      "url": "https://www.madgettlaw.com/practice-lab/minnesota-stopped-sending-warning-letters/",
      "title": "Minnesota Stopped Sending Warning Letters",
      "track": "essay",
      "date": "2026-09-05",
      "words": 6833,
      "sections": 13,
      "codeBlocks": 0,
      "sourcesCited": 21,
      "distinctiveTerms": [
        "controller",
        "privacy",
        "profiling",
        "subd",
        "assessment"
      ],
      "nearest": [
        {
          "id": "the-assignment-is-a-lead-not-a-fact",
          "similarity": 0.1355
        },
        {
          "id": "the-discovery-of-your-prompts",
          "similarity": 0.10882
        },
        {
          "id": "the-layer-that-does-not-relocate",
          "similarity": 0.10528
        }
      ]
    },
    {
      "id": "the-layer-that-does-not-relocate",
      "url": "https://www.madgettlaw.com/practice-lab/the-layer-that-does-not-relocate/",
      "title": "The Layer That Does Not Relocate",
      "track": "essay",
      "date": "2026-09-04",
      "words": 5822,
      "sections": 10,
      "codeBlocks": 0,
      "sourcesCited": 21,
      "distinctiveTerms": [
        "austin",
        "sematech",
        "texas",
        "consortium",
        "commerce"
      ],
      "nearest": [
        {
          "id": "the-gap-between-intended-and-proven",
          "similarity": 0.12545
        },
        {
          "id": "the-model-will-be-free",
          "similarity": 0.10732
        },
        {
          "id": "minnesota-stopped-sending-warning-letters",
          "similarity": 0.10528
        }
      ]
    },
    {
      "id": "executable-code-you-are-calling-a-model",
      "url": "https://www.madgettlaw.com/practice-lab/executable-code-you-are-calling-a-model/",
      "title": "Executable Code You Are Calling a Model",
      "track": "essay",
      "date": "2026-09-02",
      "words": 4683,
      "sections": 8,
      "codeBlocks": 0,
      "sourcesCited": 7,
      "distinctiveTerms": [
        "pickle",
        "hugging",
        "safetensors",
        "face",
        "pytorch"
      ],
      "nearest": [
        {
          "id": "the-gap-between-intended-and-proven",
          "similarity": 0.11359
        },
        {
          "id": "protectionism-in-a-safety-costume",
          "similarity": 0.09668
        },
        {
          "id": "your-firm-fits-in-one-folder",
          "similarity": 0.07056
        }
      ]
    },
    {
      "id": "the-gap-between-intended-and-proven",
      "url": "https://www.madgettlaw.com/practice-lab/the-gap-between-intended-and-proven/",
      "title": "The Gap Between Intended and Proven: Ethics Is an Engineering Property",
      "track": "essay",
      "date": "2026-08-31",
      "words": 5788,
      "sections": 9,
      "codeBlocks": 0,
      "sourcesCited": 20,
      "distinctiveTerms": [
        "networks",
        "paperclip",
        "paperclips",
        "salib",
        "goldstein"
      ],
      "nearest": [
        {
          "id": "protectionism-in-a-safety-costume",
          "similarity": 0.15108
        },
        {
          "id": "the-layer-that-does-not-relocate",
          "similarity": 0.12545
        },
        {
          "id": "executable-code-you-are-calling-a-model",
          "similarity": 0.11359
        }
      ]
    },
    {
      "id": "protectionism-in-a-safety-costume",
      "url": "https://www.madgettlaw.com/practice-lab/protectionism-in-a-safety-costume/",
      "title": "Protectionism in a Safety Costume",
      "track": "essay",
      "date": "2026-08-20",
      "words": 2417,
      "sections": 5,
      "codeBlocks": 0,
      "sourcesCited": 8,
      "distinctiveTerms": [
        "frontier",
        "safety",
        "moat",
        "models",
        "ntia"
      ],
      "nearest": [
        {
          "id": "the-model-will-be-free",
          "similarity": 0.30969
        },
        {
          "id": "the-gap-between-intended-and-proven",
          "similarity": 0.15108
        },
        {
          "id": "run-it-yourself-then-let-the-client-choose",
          "similarity": 0.12012
        }
      ]
    },
    {
      "id": "the-agent-drafts-the-human-sends",
      "url": "https://www.madgettlaw.com/practice-lab/the-agent-drafts-the-human-sends/",
      "title": "The Agent Drafts. The Human Sends.",
      "track": "workflow",
      "date": "2026-08-20",
      "words": 3691,
      "sections": 11,
      "codeBlocks": 0,
      "sourcesCited": 9,
      "distinctiveTerms": [
        "checkpoint",
        "garner",
        "measures",
        "petition",
        "reminder"
      ],
      "nearest": [
        {
          "id": "verifying-form-is-not-verifying-truth",
          "similarity": 0.17218
        },
        {
          "id": "the-assignment-is-a-lead-not-a-fact",
          "similarity": 0.11158
        },
        {
          "id": "what-you-owe-the-client-you-automated",
          "similarity": 0.09702
        }
      ]
    },
    {
      "id": "the-assignment-is-a-lead-not-a-fact",
      "url": "https://www.madgettlaw.com/practice-lab/the-assignment-is-a-lead-not-a-fact/",
      "title": "The Assignment Is a Lead, Not a Fact",
      "track": "workflow",
      "date": "2026-08-20",
      "words": 3723,
      "sections": 10,
      "codeBlocks": 0,
      "sourcesCited": 13,
      "distinctiveTerms": [
        "assignment",
        "subordinate",
        "stat",
        "subdivision",
        "boss"
      ],
      "nearest": [
        {
          "id": "the-commons-your-practice-runs-on",
          "similarity": 0.14144
        },
        {
          "id": "minnesota-stopped-sending-warning-letters",
          "similarity": 0.1355
        },
        {
          "id": "verifying-form-is-not-verifying-truth",
          "similarity": 0.12604
        }
      ]
    },
    {
      "id": "the-commons-your-practice-runs-on",
      "url": "https://www.madgettlaw.com/practice-lab/the-commons-your-practice-runs-on/",
      "title": "The Commons Your Practice Runs On",
      "track": "essay",
      "date": "2026-08-20",
      "words": 3923,
      "sections": 8,
      "codeBlocks": 0,
      "sourcesCited": 12,
      "distinctiveTerms": [
        "harvard",
        "volumes",
        "memberships",
        "legislative",
        "courtlistener"
      ],
      "nearest": [
        {
          "id": "the-direction-of-the-integration",
          "similarity": 0.23646
        },
        {
          "id": "the-assignment-is-a-lead-not-a-fact",
          "similarity": 0.14144
        },
        {
          "id": "verifying-form-is-not-verifying-truth",
          "similarity": 0.11231
        }
      ]
    },
    {
      "id": "the-direction-of-the-integration",
      "url": "https://www.madgettlaw.com/practice-lab/the-direction-of-the-integration/",
      "title": "The Direction of the Integration",
      "track": "essay",
      "date": "2026-08-20",
      "words": 2117,
      "sections": 7,
      "codeBlocks": 0,
      "sourcesCited": 4,
      "distinctiveTerms": [
        "environment",
        "assistant",
        "citator",
        "walled",
        "garden"
      ],
      "nearest": [
        {
          "id": "the-commons-your-practice-runs-on",
          "similarity": 0.23646
        },
        {
          "id": "protectionism-in-a-safety-costume",
          "similarity": 0.11612
        },
        {
          "id": "you-can-build-your-own-clio",
          "similarity": 0.09861
        }
      ]
    },
    {
      "id": "written-to-be-retrieved",
      "url": "https://www.madgettlaw.com/practice-lab/written-to-be-retrieved/",
      "title": "Written to Be Retrieved",
      "track": "essay",
      "date": "2026-08-20",
      "words": 3975,
      "sections": 11,
      "codeBlocks": 0,
      "sourcesCited": 9,
      "distinctiveTerms": [
        "microsoft",
        "bing",
        "grounding",
        "indexnow",
        "content"
      ],
      "nearest": [
        {
          "id": "a-firm-wiki-your-ai-can-query",
          "similarity": 0.11754
        },
        {
          "id": "retrieval-is-the-whole-game",
          "similarity": 0.10783
        },
        {
          "id": "the-commons-your-practice-runs-on",
          "similarity": 0.10393
        }
      ]
    },
    {
      "id": "sqlite-is-enough",
      "url": "https://www.madgettlaw.com/practice-lab/sqlite-is-enough/",
      "title": "SQLite Is Enough",
      "track": "tool",
      "date": "2026-07-31",
      "words": 2764,
      "sections": 11,
      "codeBlocks": 14,
      "sourcesCited": 10,
      "distinctiveTerms": [
        "sqlite",
        "database",
        "backup",
        "writer",
        "connection"
      ],
      "nearest": [
        {
          "id": "you-can-build-your-own-clio",
          "similarity": 0.16256
        },
        {
          "id": "your-firm-fits-in-one-folder",
          "similarity": 0.11238
        },
        {
          "id": "a-firm-wiki-your-ai-can-query",
          "similarity": 0.10249
        }
      ]
    },
    {
      "id": "documents-that-actually-open",
      "url": "https://www.madgettlaw.com/practice-lab/documents-that-actually-open/",
      "title": "Documents That Actually Open",
      "track": "workflow",
      "date": "2026-07-30",
      "words": 2544,
      "sections": 9,
      "codeBlocks": 13,
      "sourcesCited": 6,
      "distinctiveTerms": [
        "docx",
        "libreoffice",
        "footer",
        "python",
        "pymupdf"
      ],
      "nearest": [
        {
          "id": "a-check-that-cannot-fail",
          "similarity": 0.12294
        },
        {
          "id": "the-failure-that-says-nothing",
          "similarity": 0.11209
        },
        {
          "id": "ask-for-the-matter-not-the-path",
          "similarity": 0.10701
        }
      ]
    },
    {
      "id": "your-firm-fits-in-one-folder",
      "url": "https://www.madgettlaw.com/practice-lab/your-firm-fits-in-one-folder/",
      "title": "Your Firm Fits in One Folder",
      "track": "essay",
      "date": "2026-07-29",
      "words": 2754,
      "sections": 9,
      "codeBlocks": 0,
      "sourcesCited": 8,
      "distinctiveTerms": [
        "folder",
        "portable",
        "swap",
        "prose",
        "handbook"
      ],
      "nearest": [
        {
          "id": "stop-buying-software-start-describing-it",
          "similarity": 0.17523
        },
        {
          "id": "a-firm-wiki-your-ai-can-query",
          "similarity": 0.16923
        },
        {
          "id": "ask-for-the-matter-not-the-path",
          "similarity": 0.16843
        }
      ]
    },
    {
      "id": "a-check-that-cannot-fail",
      "url": "https://www.madgettlaw.com/practice-lab/a-check-that-cannot-fail/",
      "title": "A Check That Cannot Fail",
      "track": "workflow",
      "date": "2026-07-28",
      "words": 2610,
      "sections": 10,
      "codeBlocks": 18,
      "sourcesCited": 0,
      "distinctiveTerms": [
        "exit",
        "shell",
        "bash",
        "loop",
        "status"
      ],
      "nearest": [
        {
          "id": "the-failure-that-says-nothing",
          "similarity": 0.13695
        },
        {
          "id": "documents-that-actually-open",
          "similarity": 0.12294
        },
        {
          "id": "the-agent-drafts-the-human-sends",
          "similarity": 0.093
        }
      ]
    },
    {
      "id": "run-it-yourself-then-let-the-client-choose",
      "url": "https://www.madgettlaw.com/practice-lab/run-it-yourself-then-let-the-client-choose/",
      "title": "Run It Yourself, Then Let the Client Choose",
      "track": "tool",
      "date": "2026-07-27",
      "words": 2387,
      "sections": 12,
      "codeBlocks": 0,
      "sourcesCited": 8,
      "distinctiveTerms": [
        "qwen",
        "tier",
        "election",
        "ollama",
        "apple"
      ],
      "nearest": [
        {
          "id": "running-models-on-your-own-hardware",
          "similarity": 0.21368
        },
        {
          "id": "what-you-owe-the-client-you-automated",
          "similarity": 0.12577
        },
        {
          "id": "protectionism-in-a-safety-costume",
          "similarity": 0.12012
        }
      ]
    },
    {
      "id": "the-model-will-be-free",
      "url": "https://www.madgettlaw.com/practice-lab/the-model-will-be-free/",
      "title": "The Model Will Be Free. The Electricity Won't.",
      "track": "essay",
      "date": "2026-07-27",
      "words": 2265,
      "sections": 8,
      "codeBlocks": 0,
      "sourcesCited": 3,
      "distinctiveTerms": [
        "compute",
        "moat",
        "buildout",
        "frontier",
        "interchangeable"
      ],
      "nearest": [
        {
          "id": "protectionism-in-a-safety-costume",
          "similarity": 0.30969
        },
        {
          "id": "the-practice-of-law-in-2035",
          "similarity": 0.14057
        },
        {
          "id": "your-firm-fits-in-one-folder",
          "similarity": 0.12834
        }
      ]
    },
    {
      "id": "you-can-build-your-own-clio",
      "url": "https://www.madgettlaw.com/practice-lab/you-can-build-your-own-clio/",
      "title": "Clio Was the Best Thing to Happen to Small Firms. You Can Now Build Your Own.",
      "track": "essay",
      "date": "2026-07-24",
      "words": 2258,
      "sections": 7,
      "codeBlocks": 0,
      "sourcesCited": 6,
      "distinctiveTerms": [
        "commercial",
        "database",
        "clio",
        "schema",
        "ledger"
      ],
      "nearest": [
        {
          "id": "stop-buying-software-start-describing-it",
          "similarity": 0.20565
        },
        {
          "id": "connecting-claude-to-clio",
          "similarity": 0.2022
        },
        {
          "id": "sqlite-is-enough",
          "similarity": 0.16256
        }
      ]
    },
    {
      "id": "stop-buying-software-start-describing-it",
      "url": "https://www.madgettlaw.com/practice-lab/stop-buying-software-start-describing-it/",
      "title": "Stop Buying Software. Start Describing It.",
      "track": "essay",
      "date": "2026-07-22",
      "words": 2700,
      "sections": 9,
      "codeBlocks": 0,
      "sourcesCited": 4,
      "distinctiveTerms": [
        "didn",
        "data",
        "software",
        "presentation",
        "logic"
      ],
      "nearest": [
        {
          "id": "you-can-build-your-own-clio",
          "similarity": 0.20565
        },
        {
          "id": "your-firm-fits-in-one-folder",
          "similarity": 0.17523
        },
        {
          "id": "the-mental-load-of-running-six-conversations",
          "similarity": 0.11799
        }
      ]
    },
    {
      "id": "the-quote-that-ends-too-early",
      "url": "https://www.madgettlaw.com/practice-lab/the-quote-that-ends-too-early/",
      "title": "The Quote That Ends Too Early",
      "track": "workflow",
      "date": "2026-07-21",
      "words": 1983,
      "sections": 12,
      "codeBlocks": 9,
      "sourcesCited": 2,
      "distinctiveTerms": [
        "dissociated",
        "detector",
        "quotation",
        "member",
        "sentence"
      ],
      "nearest": [
        {
          "id": "verifying-form-is-not-verifying-truth",
          "similarity": 0.18136
        },
        {
          "id": "parsing-primary-law-without-a-summarizer",
          "similarity": 0.11344
        },
        {
          "id": "the-assignment-is-a-lead-not-a-fact",
          "similarity": 0.10515
        }
      ]
    },
    {
      "id": "the-practice-of-law-in-2035",
      "url": "https://www.madgettlaw.com/practice-lab/the-practice-of-law-in-2035/",
      "title": "The Practice of Law in 2035: Predictions, With Failure Conditions",
      "track": "essay",
      "date": "2026-07-20",
      "words": 2563,
      "sections": 15,
      "codeBlocks": 0,
      "sourcesCited": 5,
      "distinctiveTerms": [
        "prediction",
        "falsify",
        "insurers",
        "mechanism",
        "arizona"
      ],
      "nearest": [
        {
          "id": "the-perfect-is-the-enemy-of-the-good",
          "similarity": 0.21397
        },
        {
          "id": "the-model-will-be-free",
          "similarity": 0.14057
        },
        {
          "id": "the-discovery-of-your-prompts",
          "similarity": 0.12499
        }
      ]
    },
    {
      "id": "parsing-primary-law-without-a-summarizer",
      "url": "https://www.madgettlaw.com/practice-lab/parsing-primary-law-without-a-summarizer/",
      "title": "Parsing Primary Law Without a Summarizer",
      "track": "tool",
      "date": "2026-07-14",
      "words": 2351,
      "sections": 9,
      "codeBlocks": 18,
      "sourcesCited": 4,
      "distinctiveTerms": [
        "liable",
        "fault",
        "chapters",
        "jointly",
        "cache"
      ],
      "nearest": [
        {
          "id": "the-quote-that-ends-too-early",
          "similarity": 0.11344
        },
        {
          "id": "the-assignment-is-a-lead-not-a-fact",
          "similarity": 0.08451
        },
        {
          "id": "the-commons-your-practice-runs-on",
          "similarity": 0.0812
        }
      ]
    },
    {
      "id": "how-do-you-know-it-works",
      "url": "https://www.madgettlaw.com/practice-lab/how-do-you-know-it-works/",
      "title": "How Do You Know It Works? Evaluating an AI Legal Workflow",
      "track": "tool",
      "date": "2026-07-13",
      "words": 1940,
      "sections": 12,
      "codeBlocks": 1,
      "sourcesCited": 0,
      "distinctiveTerms": [
        "metric",
        "score",
        "recall",
        "preference",
        "regression"
      ],
      "nearest": [
        {
          "id": "running-models-on-your-own-hardware",
          "similarity": 0.13175
        },
        {
          "id": "retrieval-is-the-whole-game",
          "similarity": 0.11201
        },
        {
          "id": "an-unattributed-entry-is-honest",
          "similarity": 0.11037
        }
      ]
    },
    {
      "id": "a-currency-for-access",
      "url": "https://www.madgettlaw.com/practice-lab/a-currency-for-access/",
      "title": "Legal Aid Turns Away Half the People Who Ask. Here Is a Market That Would Change That.",
      "track": "essay",
      "date": "2026-07-06",
      "words": 2935,
      "sections": 17,
      "codeBlocks": 0,
      "sourcesCited": 5,
      "distinctiveTerms": [
        "commitment",
        "escrow",
        "delivery",
        "money",
        "commitments"
      ],
      "nearest": [
        {
          "id": "the-perfect-is-the-enemy-of-the-good",
          "similarity": 0.11342
        },
        {
          "id": "the-practice-of-law-in-2035",
          "similarity": 0.10511
        },
        {
          "id": "the-commons-your-practice-runs-on",
          "similarity": 0.09003
        }
      ]
    },
    {
      "id": "retrieval-is-the-whole-game",
      "url": "https://www.madgettlaw.com/practice-lab/retrieval-is-the-whole-game/",
      "title": "Retrieval Is the Whole Game",
      "track": "tool",
      "date": "2026-06-29",
      "words": 2000,
      "sections": 8,
      "codeBlocks": 0,
      "sourcesCited": 1,
      "distinctiveTerms": [
        "chunk",
        "embeddings",
        "retrieval",
        "candidates",
        "chunking"
      ],
      "nearest": [
        {
          "id": "how-do-you-know-it-works",
          "similarity": 0.11201
        },
        {
          "id": "written-to-be-retrieved",
          "similarity": 0.10783
        },
        {
          "id": "the-quote-that-ends-too-early",
          "similarity": 0.09753
        }
      ]
    },
    {
      "id": "an-unattributed-entry-is-honest",
      "url": "https://www.madgettlaw.com/practice-lab/an-unattributed-entry-is-honest/",
      "title": "An Unattributed Entry Is Honest. A Confidently Wrong One Bills the Wrong Client.",
      "track": "essay",
      "date": "2026-06-22",
      "words": 1824,
      "sections": 7,
      "codeBlocks": 0,
      "sourcesCited": 0,
      "distinctiveTerms": [
        "unreasonable",
        "surname",
        "folder",
        "attribution",
        "events"
      ],
      "nearest": [
        {
          "id": "the-mental-load-of-running-six-conversations",
          "similarity": 0.17414
        },
        {
          "id": "from-the-scanner-to-the-calendar",
          "similarity": 0.16884
        },
        {
          "id": "the-work-you-did-and-never-billed",
          "similarity": 0.15164
        }
      ]
    },
    {
      "id": "inbound-is-an-attention-problem",
      "url": "https://www.madgettlaw.com/practice-lab/inbound-is-an-attention-problem/",
      "title": "Inbound Is an Attention Problem, Not a Volume Problem",
      "track": "workflow",
      "date": "2026-06-15",
      "words": 1750,
      "sections": 8,
      "codeBlocks": 0,
      "sourcesCited": 0,
      "distinctiveTerms": [
        "feed",
        "channel",
        "portal",
        "inbound",
        "suppression"
      ],
      "nearest": [
        {
          "id": "how-do-you-know-it-works",
          "similarity": 0.10031
        },
        {
          "id": "stop-buying-software-start-describing-it",
          "similarity": 0.08413
        },
        {
          "id": "you-can-build-your-own-clio",
          "similarity": 0.07789
        }
      ]
    },
    {
      "id": "running-models-on-your-own-hardware",
      "url": "https://www.madgettlaw.com/practice-lab/running-models-on-your-own-hardware/",
      "title": "Running Models on Your Own Hardware: When It's Worth It",
      "track": "tool",
      "date": "2026-06-08",
      "words": 1543,
      "sections": 7,
      "codeBlocks": 0,
      "sourcesCited": 1,
      "distinctiveTerms": [
        "local",
        "provider",
        "hardware",
        "cloud",
        "locally"
      ],
      "nearest": [
        {
          "id": "run-it-yourself-then-let-the-client-choose",
          "similarity": 0.21368
        },
        {
          "id": "your-firm-fits-in-one-folder",
          "similarity": 0.15335
        },
        {
          "id": "how-do-you-know-it-works",
          "similarity": 0.13175
        }
      ]
    },
    {
      "id": "the-work-you-did-and-never-billed",
      "url": "https://www.madgettlaw.com/practice-lab/the-work-you-did-and-never-billed/",
      "title": "The Work You Did and Never Billed",
      "track": "workflow",
      "date": "2026-06-01",
      "words": 1791,
      "sections": 9,
      "codeBlocks": 0,
      "sourcesCited": 2,
      "distinctiveTerms": [
        "billed",
        "hours",
        "contingency",
        "reconstruction",
        "timesheet"
      ],
      "nearest": [
        {
          "id": "an-unattributed-entry-is-honest",
          "similarity": 0.15164
        },
        {
          "id": "what-you-owe-the-client-you-automated",
          "similarity": 0.14546
        },
        {
          "id": "the-mental-load-of-running-six-conversations",
          "similarity": 0.12635
        }
      ]
    },
    {
      "id": "the-failure-that-says-nothing",
      "url": "https://www.madgettlaw.com/practice-lab/the-failure-that-says-nothing/",
      "title": "The Failure That Says Nothing",
      "track": "essay",
      "date": "2026-05-25",
      "words": 1665,
      "sections": 5,
      "codeBlocks": 0,
      "sourcesCited": 0,
      "distinctiveTerms": [
        "fallback",
        "permission",
        "empty",
        "calendar",
        "scheduled"
      ],
      "nearest": [
        {
          "id": "a-check-that-cannot-fail",
          "similarity": 0.13695
        },
        {
          "id": "ask-for-the-matter-not-the-path",
          "similarity": 0.12344
        },
        {
          "id": "documents-that-actually-open",
          "similarity": 0.11209
        }
      ]
    },
    {
      "id": "from-the-scanner-to-the-calendar",
      "url": "https://www.madgettlaw.com/practice-lab/from-the-scanner-to-the-calendar/",
      "title": "From the Scanner to the Calendar: A Document Intake Pipeline",
      "track": "workflow",
      "date": "2026-05-18",
      "words": 1738,
      "sections": 10,
      "codeBlocks": 0,
      "sourcesCited": 0,
      "distinctiveTerms": [
        "automatic",
        "significance",
        "pipeline",
        "proposed",
        "surnames"
      ],
      "nearest": [
        {
          "id": "an-unattributed-entry-is-honest",
          "similarity": 0.16884
        },
        {
          "id": "the-mental-load-of-running-six-conversations",
          "similarity": 0.12219
        },
        {
          "id": "never-compute-a-deadline-from-memory",
          "similarity": 0.11605
        }
      ]
    },
    {
      "id": "the-discovery-of-your-prompts",
      "url": "https://www.madgettlaw.com/practice-lab/the-discovery-of-your-prompts/",
      "title": "The Discovery of Your Prompts",
      "track": "essay",
      "date": "2026-05-11",
      "words": 1768,
      "sections": 11,
      "codeBlocks": 0,
      "sourcesCited": 3,
      "distinctiveTerms": [
        "retention",
        "impressions",
        "mental",
        "prepared",
        "litigation"
      ],
      "nearest": [
        {
          "id": "the-practice-of-law-in-2035",
          "similarity": 0.12499
        },
        {
          "id": "running-models-on-your-own-hardware",
          "similarity": 0.10932
        },
        {
          "id": "minnesota-stopped-sending-warning-letters",
          "similarity": 0.10882
        }
      ]
    },
    {
      "id": "connecting-claude-to-clio",
      "url": "https://www.madgettlaw.com/practice-lab/connecting-claude-to-clio/",
      "title": "Connecting Claude to Clio — and Why I Had to Build It Myself",
      "track": "tool",
      "date": "2026-05-04",
      "words": 2613,
      "sections": 14,
      "codeBlocks": 1,
      "sourcesCited": 4,
      "distinctiveTerms": [
        "clio",
        "allowlist",
        "token",
        "connector",
        "refresh"
      ],
      "nearest": [
        {
          "id": "you-can-build-your-own-clio",
          "similarity": 0.2022
        },
        {
          "id": "stop-buying-software-start-describing-it",
          "similarity": 0.10835
        },
        {
          "id": "the-work-you-did-and-never-billed",
          "similarity": 0.10398
        }
      ]
    },
    {
      "id": "ask-for-the-matter-not-the-path",
      "url": "https://www.madgettlaw.com/practice-lab/ask-for-the-matter-not-the-path/",
      "title": "Ask for the Matter, Not the Path",
      "track": "workflow",
      "date": "2026-04-27",
      "words": 1547,
      "sections": 7,
      "codeBlocks": 0,
      "sourcesCited": 0,
      "distinctiveTerms": [
        "paths",
        "folder",
        "directory",
        "chooser",
        "finder"
      ],
      "nearest": [
        {
          "id": "your-firm-fits-in-one-folder",
          "similarity": 0.16843
        },
        {
          "id": "the-failure-that-says-nothing",
          "similarity": 0.12344
        },
        {
          "id": "an-unattributed-entry-is-honest",
          "similarity": 0.12219
        }
      ]
    },
    {
      "id": "a-firm-wiki-your-ai-can-query",
      "url": "https://www.madgettlaw.com/practice-lab/a-firm-wiki-your-ai-can-query/",
      "title": "Build a Firm Wiki Your AI Can Query",
      "track": "workflow",
      "date": "2026-04-20",
      "words": 2282,
      "sections": 10,
      "codeBlocks": 2,
      "sourcesCited": 4,
      "distinctiveTerms": [
        "vault",
        "obsidian",
        "frontmatter",
        "base",
        "page"
      ],
      "nearest": [
        {
          "id": "your-firm-fits-in-one-folder",
          "similarity": 0.16923
        },
        {
          "id": "you-can-build-your-own-clio",
          "similarity": 0.12206
        },
        {
          "id": "written-to-be-retrieved",
          "similarity": 0.11754
        }
      ]
    },
    {
      "id": "what-you-owe-the-client-you-automated",
      "url": "https://www.madgettlaw.com/practice-lab/what-you-owe-the-client-you-automated/",
      "title": "What You Owe the Client You Automated",
      "track": "essay",
      "date": "2026-04-13",
      "words": 1580,
      "sections": 6,
      "codeBlocks": 0,
      "sourcesCited": 4,
      "distinctiveTerms": [
        "informed",
        "consent",
        "disclosure",
        "bill",
        "uncomfortable"
      ],
      "nearest": [
        {
          "id": "the-work-you-did-and-never-billed",
          "similarity": 0.14546
        },
        {
          "id": "run-it-yourself-then-let-the-client-choose",
          "similarity": 0.12577
        },
        {
          "id": "the-practice-of-law-in-2035",
          "similarity": 0.12441
        }
      ]
    },
    {
      "id": "never-compute-a-deadline-from-memory",
      "url": "https://www.madgettlaw.com/practice-lab/never-compute-a-deadline-from-memory/",
      "title": "Never Compute a Deadline From Memory",
      "track": "workflow",
      "date": "2026-04-06",
      "words": 1589,
      "sections": 7,
      "codeBlocks": 0,
      "sourcesCited": 2,
      "distinctiveTerms": [
        "mail",
        "certain",
        "confident",
        "prescribed",
        "curve"
      ],
      "nearest": [
        {
          "id": "verifying-form-is-not-verifying-truth",
          "similarity": 0.12706
        },
        {
          "id": "from-the-scanner-to-the-calendar",
          "similarity": 0.11605
        },
        {
          "id": "your-templates-are-your-knowledge-base",
          "similarity": 0.11401
        }
      ]
    },
    {
      "id": "verifying-form-is-not-verifying-truth",
      "url": "https://www.madgettlaw.com/practice-lab/verifying-form-is-not-verifying-truth/",
      "title": "Verifying Form Is Not Verifying Truth: Building a Citation Gate",
      "track": "workflow",
      "date": "2026-03-23",
      "words": 1843,
      "sections": 7,
      "codeBlocks": 0,
      "sourcesCited": 1,
      "distinctiveTerms": [
        "proposition",
        "inquiry",
        "pass",
        "citation",
        "castel"
      ],
      "nearest": [
        {
          "id": "the-quote-that-ends-too-early",
          "similarity": 0.18136
        },
        {
          "id": "the-agent-drafts-the-human-sends",
          "similarity": 0.17218
        },
        {
          "id": "hire-specialists-not-an-assistant",
          "similarity": 0.15852
        }
      ]
    },
    {
      "id": "hire-specialists-not-an-assistant",
      "url": "https://www.madgettlaw.com/practice-lab/hire-specialists-not-an-assistant/",
      "title": "Hire Specialists, Not an Assistant",
      "track": "workflow",
      "date": "2026-03-09",
      "words": 1640,
      "sections": 7,
      "codeBlocks": 1,
      "sourcesCited": 2,
      "distinctiveTerms": [
        "specialist",
        "clerk",
        "handoff",
        "formatting",
        "brief"
      ],
      "nearest": [
        {
          "id": "the-mental-load-of-running-six-conversations",
          "similarity": 0.23428
        },
        {
          "id": "verifying-form-is-not-verifying-truth",
          "similarity": 0.15852
        },
        {
          "id": "your-templates-are-your-knowledge-base",
          "similarity": 0.15032
        }
      ]
    },
    {
      "id": "your-templates-are-your-knowledge-base",
      "url": "https://www.madgettlaw.com/practice-lab/your-templates-are-your-knowledge-base/",
      "title": "Your Templates Are Your Real Knowledge Base",
      "track": "workflow",
      "date": "2026-03-02",
      "words": 1406,
      "sections": 5,
      "codeBlocks": 0,
      "sourcesCited": 0,
      "distinctiveTerms": [
        "template",
        "formatting",
        "populate",
        "certificate",
        "updates"
      ],
      "nearest": [
        {
          "id": "hire-specialists-not-an-assistant",
          "similarity": 0.15032
        },
        {
          "id": "never-compute-a-deadline-from-memory",
          "similarity": 0.11401
        },
        {
          "id": "verifying-form-is-not-verifying-truth",
          "similarity": 0.10234
        }
      ]
    },
    {
      "id": "the-perfect-is-the-enemy-of-the-good",
      "url": "https://www.madgettlaw.com/practice-lab/the-perfect-is-the-enemy-of-the-good/",
      "title": "The Perfect Is the Enemy of the Good: How Lawyer Regulation Prices People Out of Justice",
      "track": "essay",
      "date": "2026-02-23",
      "words": 3433,
      "sections": 9,
      "codeBlocks": 0,
      "sourcesCited": 6,
      "distinctiveTerms": [
        "percent",
        "lawyers",
        "misconduct",
        "licensed",
        "disciplinary"
      ],
      "nearest": [
        {
          "id": "the-practice-of-law-in-2035",
          "similarity": 0.21397
        },
        {
          "id": "a-currency-for-access",
          "similarity": 0.11342
        },
        {
          "id": "minnesota-stopped-sending-warning-letters",
          "similarity": 0.10341
        }
      ]
    },
    {
      "id": "the-mental-load-of-running-six-conversations",
      "url": "https://www.madgettlaw.com/practice-lab/the-mental-load-of-running-six-conversations/",
      "title": "Six Windows: The Hidden Cost of Practicing Law With AI",
      "track": "essay",
      "date": "2026-02-09",
      "words": 3778,
      "sections": 9,
      "codeBlocks": 0,
      "sourcesCited": 0,
      "distinctiveTerms": [
        "board",
        "figcaption",
        "card",
        "mlaw",
        "session"
      ],
      "nearest": [
        {
          "id": "hire-specialists-not-an-assistant",
          "similarity": 0.23428
        },
        {
          "id": "an-unattributed-entry-is-honest",
          "similarity": 0.17414
        },
        {
          "id": "your-firm-fits-in-one-folder",
          "similarity": 0.13933
        }
      ]
    }
  ],
  "edges": [
    {
      "source": "minnesota-stopped-sending-warning-letters",
      "target": "the-assignment-is-a-lead-not-a-fact",
      "weight": 0.1355
    },
    {
      "source": "minnesota-stopped-sending-warning-letters",
      "target": "the-discovery-of-your-prompts",
      "weight": 0.10882
    },
    {
      "source": "minnesota-stopped-sending-warning-letters",
      "target": "the-layer-that-does-not-relocate",
      "weight": 0.10528
    },
    {
      "source": "the-layer-that-does-not-relocate",
      "target": "the-gap-between-intended-and-proven",
      "weight": 0.12545
    },
    {
      "source": "the-layer-that-does-not-relocate",
      "target": "the-model-will-be-free",
      "weight": 0.10732
    },
    {
      "source": "executable-code-you-are-calling-a-model",
      "target": "the-gap-between-intended-and-proven",
      "weight": 0.11359
    },
    {
      "source": "executable-code-you-are-calling-a-model",
      "target": "protectionism-in-a-safety-costume",
      "weight": 0.09668
    },
    {
      "source": "executable-code-you-are-calling-a-model",
      "target": "your-firm-fits-in-one-folder",
      "weight": 0.07056
    },
    {
      "source": "the-gap-between-intended-and-proven",
      "target": "protectionism-in-a-safety-costume",
      "weight": 0.15108
    },
    {
      "source": "protectionism-in-a-safety-costume",
      "target": "the-model-will-be-free",
      "weight": 0.30969
    },
    {
      "source": "protectionism-in-a-safety-costume",
      "target": "run-it-yourself-then-let-the-client-choose",
      "weight": 0.12012
    },
    {
      "source": "the-agent-drafts-the-human-sends",
      "target": "verifying-form-is-not-verifying-truth",
      "weight": 0.17218
    },
    {
      "source": "the-agent-drafts-the-human-sends",
      "target": "the-assignment-is-a-lead-not-a-fact",
      "weight": 0.11158
    },
    {
      "source": "the-agent-drafts-the-human-sends",
      "target": "what-you-owe-the-client-you-automated",
      "weight": 0.09702
    },
    {
      "source": "the-assignment-is-a-lead-not-a-fact",
      "target": "the-commons-your-practice-runs-on",
      "weight": 0.14144
    },
    {
      "source": "the-assignment-is-a-lead-not-a-fact",
      "target": "verifying-form-is-not-verifying-truth",
      "weight": 0.12604
    },
    {
      "source": "the-commons-your-practice-runs-on",
      "target": "the-direction-of-the-integration",
      "weight": 0.23646
    },
    {
      "source": "the-commons-your-practice-runs-on",
      "target": "verifying-form-is-not-verifying-truth",
      "weight": 0.11231
    },
    {
      "source": "protectionism-in-a-safety-costume",
      "target": "the-direction-of-the-integration",
      "weight": 0.11612
    },
    {
      "source": "the-direction-of-the-integration",
      "target": "you-can-build-your-own-clio",
      "weight": 0.09861
    },
    {
      "source": "written-to-be-retrieved",
      "target": "a-firm-wiki-your-ai-can-query",
      "weight": 0.11754
    },
    {
      "source": "written-to-be-retrieved",
      "target": "retrieval-is-the-whole-game",
      "weight": 0.10783
    },
    {
      "source": "the-commons-your-practice-runs-on",
      "target": "written-to-be-retrieved",
      "weight": 0.10393
    },
    {
      "source": "sqlite-is-enough",
      "target": "you-can-build-your-own-clio",
      "weight": 0.16256
    },
    {
      "source": "sqlite-is-enough",
      "target": "your-firm-fits-in-one-folder",
      "weight": 0.11238
    },
    {
      "source": "sqlite-is-enough",
      "target": "a-firm-wiki-your-ai-can-query",
      "weight": 0.10249
    },
    {
      "source": "documents-that-actually-open",
      "target": "a-check-that-cannot-fail",
      "weight": 0.12294
    },
    {
      "source": "documents-that-actually-open",
      "target": "the-failure-that-says-nothing",
      "weight": 0.11209
    },
    {
      "source": "documents-that-actually-open",
      "target": "ask-for-the-matter-not-the-path",
      "weight": 0.10701
    },
    {
      "source": "your-firm-fits-in-one-folder",
      "target": "stop-buying-software-start-describing-it",
      "weight": 0.17523
    },
    {
      "source": "your-firm-fits-in-one-folder",
      "target": "a-firm-wiki-your-ai-can-query",
      "weight": 0.16923
    },
    {
      "source": "your-firm-fits-in-one-folder",
      "target": "ask-for-the-matter-not-the-path",
      "weight": 0.16843
    },
    {
      "source": "a-check-that-cannot-fail",
      "target": "the-failure-that-says-nothing",
      "weight": 0.13695
    },
    {
      "source": "the-agent-drafts-the-human-sends",
      "target": "a-check-that-cannot-fail",
      "weight": 0.093
    },
    {
      "source": "run-it-yourself-then-let-the-client-choose",
      "target": "running-models-on-your-own-hardware",
      "weight": 0.21368
    },
    {
      "source": "run-it-yourself-then-let-the-client-choose",
      "target": "what-you-owe-the-client-you-automated",
      "weight": 0.12577
    },
    {
      "source": "the-model-will-be-free",
      "target": "the-practice-of-law-in-2035",
      "weight": 0.14057
    },
    {
      "source": "your-firm-fits-in-one-folder",
      "target": "the-model-will-be-free",
      "weight": 0.12834
    },
    {
      "source": "you-can-build-your-own-clio",
      "target": "stop-buying-software-start-describing-it",
      "weight": 0.20565
    },
    {
      "source": "you-can-build-your-own-clio",
      "target": "connecting-claude-to-clio",
      "weight": 0.2022
    },
    {
      "source": "stop-buying-software-start-describing-it",
      "target": "the-mental-load-of-running-six-conversations",
      "weight": 0.11799
    },
    {
      "source": "the-quote-that-ends-too-early",
      "target": "verifying-form-is-not-verifying-truth",
      "weight": 0.18136
    },
    {
      "source": "the-quote-that-ends-too-early",
      "target": "parsing-primary-law-without-a-summarizer",
      "weight": 0.11344
    },
    {
      "source": "the-assignment-is-a-lead-not-a-fact",
      "target": "the-quote-that-ends-too-early",
      "weight": 0.10515
    },
    {
      "source": "the-practice-of-law-in-2035",
      "target": "the-perfect-is-the-enemy-of-the-good",
      "weight": 0.21397
    },
    {
      "source": "the-practice-of-law-in-2035",
      "target": "the-discovery-of-your-prompts",
      "weight": 0.12499
    },
    {
      "source": "the-assignment-is-a-lead-not-a-fact",
      "target": "parsing-primary-law-without-a-summarizer",
      "weight": 0.08451
    },
    {
      "source": "the-commons-your-practice-runs-on",
      "target": "parsing-primary-law-without-a-summarizer",
      "weight": 0.0812
    },
    {
      "source": "how-do-you-know-it-works",
      "target": "running-models-on-your-own-hardware",
      "weight": 0.13175
    },
    {
      "source": "how-do-you-know-it-works",
      "target": "retrieval-is-the-whole-game",
      "weight": 0.11201
    },
    {
      "source": "how-do-you-know-it-works",
      "target": "an-unattributed-entry-is-honest",
      "weight": 0.11037
    },
    {
      "source": "a-currency-for-access",
      "target": "the-perfect-is-the-enemy-of-the-good",
      "weight": 0.11342
    },
    {
      "source": "the-practice-of-law-in-2035",
      "target": "a-currency-for-access",
      "weight": 0.10511
    },
    {
      "source": "the-commons-your-practice-runs-on",
      "target": "a-currency-for-access",
      "weight": 0.09003
    },
    {
      "source": "the-quote-that-ends-too-early",
      "target": "retrieval-is-the-whole-game",
      "weight": 0.09753
    },
    {
      "source": "an-unattributed-entry-is-honest",
      "target": "the-mental-load-of-running-six-conversations",
      "weight": 0.17414
    },
    {
      "source": "an-unattributed-entry-is-honest",
      "target": "from-the-scanner-to-the-calendar",
      "weight": 0.16884
    },
    {
      "source": "an-unattributed-entry-is-honest",
      "target": "the-work-you-did-and-never-billed",
      "weight": 0.15164
    },
    {
      "source": "how-do-you-know-it-works",
      "target": "inbound-is-an-attention-problem",
      "weight": 0.10031
    },
    {
      "source": "stop-buying-software-start-describing-it",
      "target": "inbound-is-an-attention-problem",
      "weight": 0.08413
    },
    {
      "source": "you-can-build-your-own-clio",
      "target": "inbound-is-an-attention-problem",
      "weight": 0.07789
    },
    {
      "source": "your-firm-fits-in-one-folder",
      "target": "running-models-on-your-own-hardware",
      "weight": 0.15335
    },
    {
      "source": "the-work-you-did-and-never-billed",
      "target": "what-you-owe-the-client-you-automated",
      "weight": 0.14546
    },
    {
      "source": "the-work-you-did-and-never-billed",
      "target": "the-mental-load-of-running-six-conversations",
      "weight": 0.12635
    },
    {
      "source": "the-failure-that-says-nothing",
      "target": "ask-for-the-matter-not-the-path",
      "weight": 0.12344
    },
    {
      "source": "from-the-scanner-to-the-calendar",
      "target": "the-mental-load-of-running-six-conversations",
      "weight": 0.12219
    },
    {
      "source": "from-the-scanner-to-the-calendar",
      "target": "never-compute-a-deadline-from-memory",
      "weight": 0.11605
    },
    {
      "source": "running-models-on-your-own-hardware",
      "target": "the-discovery-of-your-prompts",
      "weight": 0.10932
    },
    {
      "source": "stop-buying-software-start-describing-it",
      "target": "connecting-claude-to-clio",
      "weight": 0.10835
    },
    {
      "source": "the-work-you-did-and-never-billed",
      "target": "connecting-claude-to-clio",
      "weight": 0.10398
    },
    {
      "source": "an-unattributed-entry-is-honest",
      "target": "ask-for-the-matter-not-the-path",
      "weight": 0.12219
    },
    {
      "source": "you-can-build-your-own-clio",
      "target": "a-firm-wiki-your-ai-can-query",
      "weight": 0.12206
    },
    {
      "source": "the-practice-of-law-in-2035",
      "target": "what-you-owe-the-client-you-automated",
      "weight": 0.12441
    },
    {
      "source": "never-compute-a-deadline-from-memory",
      "target": "verifying-form-is-not-verifying-truth",
      "weight": 0.12706
    },
    {
      "source": "never-compute-a-deadline-from-memory",
      "target": "your-templates-are-your-knowledge-base",
      "weight": 0.11401
    },
    {
      "source": "verifying-form-is-not-verifying-truth",
      "target": "hire-specialists-not-an-assistant",
      "weight": 0.15852
    },
    {
      "source": "hire-specialists-not-an-assistant",
      "target": "the-mental-load-of-running-six-conversations",
      "weight": 0.23428
    },
    {
      "source": "hire-specialists-not-an-assistant",
      "target": "your-templates-are-your-knowledge-base",
      "weight": 0.15032
    },
    {
      "source": "verifying-form-is-not-verifying-truth",
      "target": "your-templates-are-your-knowledge-base",
      "weight": 0.10234
    },
    {
      "source": "minnesota-stopped-sending-warning-letters",
      "target": "the-perfect-is-the-enemy-of-the-good",
      "weight": 0.10341
    },
    {
      "source": "your-firm-fits-in-one-folder",
      "target": "the-mental-load-of-running-six-conversations",
      "weight": 0.13933
    }
  ]
}