This blog post was inspired by a paper presented at ICAIL 2025 by Josephine Dik and Réka Markovich, called “Judicial Discretion as Normative Reasoning: Deontic Characterization of Judicial Decision Making with Answer Set Programming”. It describes the use of the clingo Answer Set Programming (ASP) solver to weigh various considerations in a hypothetical child custody case and to prescribe a…
At the 2025 International Conference on Artificial Intelligence and Law, I was very impressed by a demonstration of CATLEX, which includes LLM-assisted extraction of legal doctrines, and a flowchart-like view that diagrams a court’s legal reasoning process in resolving a legal issue.
I tried out the CollateX Python library to see if it seems useful for visualizing similar text passages about legal doctrines, especially caselaw. I used a very simple example dataset consisting of a holding from Loper Bright Enterprises v. Raimondo (the opinion that abolished Chevron deference) and two passages from later opinions restating the holding of Raimondo (Tennessee v. Becerra and United…
In June I was lucky enough to be sent to Braga, Portugal to represent Cornell Legal Information Institute at the 19th ICAIL conference (International Conference on Artificial Intelligence and Law). The core of this conference is an academic community rooted in knowledge-heavy AI approaches, many of them with lineage extending back at least to the 1980s. I’ve been reading work by many of these…
I’ve released version 0.9 of AuthoritySpoke. In my last blog post about AuthoritySpoke, I wrote that I had decided not to migrate all its data serialization code to Pydantic. In this post, I’ll explain why I changed my mind and did just that.
The Caselaw Access Project is one of the two best resources for free programmatic access to American caselaw data (along with CourtListener). It has a great, user-friendly website, and thoughtful documentation aimed as several different audiences. And it has a more dramatic story than most legal tech projects, in which archivists at Harvard’s law library cut the spines off of every book in an…
Creating a data schema for legal analysis involves plunging into abstraction. How deeply abstract the schema becomes probably depends more than we want to admit on the temperament of the person creating the schema. The more abstraction, the more powerful and expressive the schema can be, but also the greater the risk the schema will crumple under the pressure of the analyst’s assumptions or…
AuthoritySpoke version 0.7 is available on PyPI, bringing with it a new data input format using YAML files. For documentation on that feature, check out the just-published user guide or the API documentation. With this blog post I’ll go more into my reasoning in making the changes, and where I see AuthoritySpoke going next.
Around the beginning of 2021, the Free Law Project extracted the code that it’s been using to link case citations within CourtListener, and released it as a new open source Python package called Eyecite. I think Eyecite could become the most widely useful open source legal analysis tool to be released by anyone so far. It seems to have incredible potential for citation network analysis, and for…
One of the most difficult AuthoritySpoke features for users to understand has been the ability for the Factors of legal rules to have “generic context” affecting how the rules can be compared to one another. This article will try to make that concept a little clearer, and also describe how to use contexts with comparison methods like .means(), .implies(), and .contradicts().