Macroexpand-Deep - the first Clojure AI conference
📅 October 24-25, 2025 | Online Conference
The Macroexpand-Deep conference focuses on the development of research and practical applications around AI systems in Clojure. As the first dedicated Clojure AI conference, we’re bringing together pioneers exploring how Clojure’s unique strengths can advance AI development. This conference is one of the Macroexpand 2025 pair of conferences organized by Scicloj.
About the Conference
A two-day online event exploring AI systems in Clojure - from LLMs and neural networks to symbolic AI and hybrid approaches. Share production applications, research insights, and novel techniques that leverage Clojure’s unique strengths for AI development. For Clojure programmers at all levels and AI practitioners curious about functional approaches.
Tentative Schedule
| Time | Friday, October 24 | Saturday, October 25 |
|---|---|---|
| 09:00 |
Opening & Welcome AbstractWe will just spend some time together and discuss what is coming for the day. |
|
| 10:00 |
A Clojure-based Portfolio Analysis Tool based on LLM Integration ![]() ![]()
AbstractThis research paper / talk presents the design and implementation of a Portfolio Analysis Program built almost entirely in Clojure for The University of Hong Kong's Center for Investment Management. The program enables users to construct custom portfolios from individual stocks or asset classes, evaluate performance using key financial metrics, and visualize results interactively. What sets this tool apart is its integration of financial market narratives through a Large Language Model (LLM), which contextualizes portfolio performances using real-time financial news. Speakers |
Opening & Welcome AbstractWe will just spend some time together and discuss what is coming for the day. |
| 11:00 |
2D Airfoil Optimization with LLM empowered Genetic Algorithm ![]()
AbstractThis talk presents a 2D airfoil optimization approach using FluidX3D for CFD simulation and genetic algorithms, implemented in Clojure. The presentation covers the architecture, showing how FluidX3D evaluates airfoil fitness by computing aerodynamic properties, and how the genetic algorithm encodes airfoil geometries using parametric representations. LLMs are integrated at various stages of the optimization pipeline to guide mutation strategies, suggest promising crossover operations, and analyze population diversity. Speakers |
Bridging Worlds: Building Graph Neural Networks with Clojure and Python Interoperability (+ Practice)
AbstractDiscover how to build Graph Neural Networks by combining Clojure's functional elegance with Python's ML ecosystem. This talk demonstrates practical interoperability using libpython-clj to call PyTorch Geometric from Clojure, creating powerful GNN solutions while maintaining REPL-driven development workflows. We'll live-code a complete Graph Convolutional Network, from data ingestion to visualization, showing how Clojure's immutability and Python's deep learning capabilities create a useful combination for modern AI development. After the talk and discussion, we will practice some things in the REPL together: using PyTorch from Clojure, and maybe more. Speaker |
| 12:00 |
Open Practice 3 AbstractWe will spend some time together practicing the tools, methods, and ideas we have seen at other talks. |
Open Practice 5 AbstractWe will spend some time together practicing the tools, methods, and ideas we have seen at other talks. |
| 13:00 |
Building QClojure with AI assistance
AbstractQClojure is a functional quantum computing library for Clojure with backend protocols, simulation backends and visualizations. It has been built with AI assistance right from the beginning. Four months into the implementation, I have gained some experience with AI assisted coding, which I'd like to share in this talk. First I like to give an overview of QClojure to set the stage. I will show the tools and the workflow for AI assisted coding, including some prompts. Then we look at the actual process of working with the AI. Finally I will give you some of my best practices and summarize with the lessons learned. Speaker |
Building Dynamic Entity Extraction with Bosquet
AbstractEvery text processing application needs to answer a question: what is this text about? Named entity extraction is one part of the answer to this. It identifies and links words to real-world entities—turning "Macroexpand 2025" into structured data about a specific technology conference happening in a specific year. This extraction process involves multiple steps that can be implemented using LLMs. This presentation demonstrates how Bosquet, an LLM orchestration library, can help with building entity extraction pipelines. Speaker |
| 14:00 |
Panel: AI assistants ![]() ![]()
AbstractWe will have a conversation with a few of the toolmakers behind Clojure's main AI assistants. Speakers |
Panel: broader implications of AI ![]() ![]() ![]() ![]()
AbstractWe will discuss the broader implications of the AI rush, a few of the ways it affects our lives, and what we might be able to do about it. Speakers |
| 15:00 | ||
| 16:00 |
Open Practice 4 AbstractWe will spend some time together practicing the tools, methods, and ideas we have seen at other talks. |
Building Realtime Voice AI Agents with Clojure - Best Practices
AbstractExploring how to build reliable voice AI agents in a functional data-driven way with Clojure. This talk will go over all of the pieces involved in voice ai from best models to use, turn detection, context management to scripting and instruction following to hosting and scaling. By the end you will better understand what it takes to build highly reliable voice AI agents with Clojure Speaker |
| 17:00 |
Architecting reliability in LLM systems
AbstractLarge Language Models have captured the imagination of developers worldwide, yet many LLM-powered systems fail in production despite impressive demos. The root cause is often not technical incompetence, but rather an over-optimistic faith in LLM capabilities without accounting for their fundamental limitations. Just as an engineer hanging a heavy shelf wouldn't rely solely on manufacturer specifications without safety margins, building reliable LLM systems requires a "Murphy's Law" mindset that anticipates failure modes. Through our experience building StartCheck, a production document analysis platform, we've learned that true reliability comes from understanding and designing around core LLM limitations: input quality sensitivity, task complexity degradation, reasoning constraints, output length trade-offs, hallucinations, and consistency challenges. Speaker |
Building Event Sourced Agentic Applications with Grain
AbstractLearn how ObneyAI uses its open source Clojure framework called Grain to build Event Sourced applications with first-class agentic workflows that blend the best of the Clojure and Python ecosystems. Speaker |
| 18:00 |
Experimenting with LLM Subliminal Learning in Clojure
AbstractI read the paper "Subliminal Learning: Language models transmit behavioral traits via hidden signals in data" and wanted to explore these concepts myself. In this talk I replicate some of the results from the paper interactively in a live coding demo. Specifically, we will look at running multiple interdependent batch processing jobs from a Clojure REPL. Speaker |
Lightning Talks 2 AbstractVarious short talks by conference participants |
| 19:00 |
Compiling Probabilistic Programs to Neural Networks
AbstractWe will take a look at how one can write a stochastic simulator for a simple business model, how embeddings and a graph neural network architecture for the compute graph of the simulator can be constructed, and how this neural network can be trained to provide fast inference over unknown variables of the simulator to guide the business process in real-time. We will then discuss the underlying methodology of probabilistic programming more systematically through the Daphne compiler, and how it provides different ways to compile a subset of Clojure simulator programs to neural network architectures, and as of lately also CUDA. The goal of this discussion is to provide understanding of both the methodology and applications of probabilistic programming, as well as to gather more feedback from the Clojure community to render Daphne not only an academic platform, but also more practical. One such potential practical integration we will discuss is with LLMs that can help with the simulator construction. Speaker |
Jank & Torch: Native Deep Learning in Clojure ![]() ![]()
AbstractIn the field of AI, Python is the current reigning champ. But the Python ecosystem's dirty secret is that most of the libraries holding the system together are wrappers around C/C++ libraries that do most of the important work. Jank is the native Clojure dialect built on compiler technologies like LLVM, giving it access into the same native libraries powering the Python ecosystem. As Jank heads towards its first alpha release, its most highly anticipated feature, seamless C++ interop is already capable of wrapping and using native C++ libraries for machine learning and artificial intelligence. In this talk, we will show how to leverage Jank's C++ interop to wrap the most popular deep learning library in usage right now, libtorch, which most would have known through its Python frontend, PyTorch. As a proof of concept, we will display an implementation of GPT-2, the LLM released in 2019 using our Torch wrapper. This talk will give Clojure practitioners interested in using Clojure for ML/AI a glimpse into the future of how important C++ libraries can be utilized with Jank. Speakers |
| 20:00 |
Conclusion AbstractWe will spend some time together with closing thoughts. |
Friday, October 24
Opening & Welcome
Opening & Welcome
Abstract
We will just spend some time together and discuss what is coming for the day.
A Clojure-based Portfolio Analysis Tool based on LLM Integration



A Clojure-based Portfolio Analysis Tool based on LLM Integration



Abstract
This research paper / talk presents the design and implementation of a Portfolio Analysis Program built almost entirely in Clojure for The University of Hong Kong's Center for Investment Management.
The program enables users to construct custom portfolios from individual stocks or asset classes, evaluate performance using key financial metrics, and visualize results interactively.
What sets this tool apart is its integration of financial market narratives through a Large Language Model (LLM), which contextualizes portfolio performances using real-time financial news.
Speakers
2D Airfoil Optimization with LLM empowered Genetic Algorithm


2D Airfoil Optimization with LLM empowered Genetic Algorithm


Abstract
This talk presents a 2D airfoil optimization approach using FluidX3D for CFD simulation and genetic algorithms, implemented in Clojure. The presentation covers the architecture, showing how FluidX3D evaluates airfoil fitness by computing aerodynamic properties, and how the genetic algorithm encodes airfoil geometries using parametric representations. LLMs are integrated at various stages of the optimization pipeline to guide mutation strategies, suggest promising crossover operations, and analyze population diversity.
Speakers
Open Practice 3
Open Practice 3
Abstract
We will spend some time together practicing the tools, methods, and ideas we have seen at other talks.
Building QClojure with AI assistance

Building QClojure with AI assistance

Abstract
QClojure is a functional quantum computing library for Clojure with backend protocols, simulation backends and visualizations. It has been built with AI assistance right from the beginning. Four months into the implementation, I have gained some experience with AI assisted coding, which I'd like to share in this talk.
First I like to give an overview of QClojure to set the stage. I will show the tools and the workflow for AI assisted coding, including some prompts. Then we look at the actual process of working with the AI. Finally I will give you some of my best practices and summarize with the lessons learned.
Speaker
Panel: AI assistants



Panel: AI assistants



Abstract
We will have a conversation with a few of the toolmakers behind Clojure's main AI assistants.
Speakers
Open Practice 4
Open Practice 4
Abstract
We will spend some time together practicing the tools, methods, and ideas we have seen at other talks.
Architecting reliability in LLM systems

Architecting reliability in LLM systems

Abstract
Large Language Models have captured the imagination of developers worldwide, yet many LLM-powered systems fail in production despite impressive demos. The root cause is often not technical incompetence, but rather an over-optimistic faith in LLM capabilities without accounting for their fundamental limitations. Just as an engineer hanging a heavy shelf wouldn't rely solely on manufacturer specifications without safety margins, building reliable LLM systems requires a "Murphy's Law" mindset that anticipates failure modes. Through our experience building StartCheck, a production document analysis platform, we've learned that true reliability comes from understanding and designing around core LLM limitations: input quality sensitivity, task complexity degradation, reasoning constraints, output length trade-offs, hallucinations, and consistency challenges.
Speaker
Experimenting with LLM Subliminal Learning in Clojure

Experimenting with LLM Subliminal Learning in Clojure

Abstract
I read the paper "Subliminal Learning: Language models transmit behavioral traits via hidden signals in data" and wanted to explore these concepts myself. In this talk I replicate some of the results from the paper interactively in a live coding demo. Specifically, we will look at running multiple interdependent batch processing jobs from a Clojure REPL.
Speaker
Compiling Probabilistic Programs to Neural Networks

Compiling Probabilistic Programs to Neural Networks

Abstract
We will take a look at how one can write a stochastic simulator for a simple business model, how embeddings and a graph neural network architecture for the compute graph of the simulator can be constructed, and how this neural network can be trained to provide fast inference over unknown variables of the simulator to guide the business process in real-time. We will then discuss the underlying methodology of probabilistic programming more systematically through the Daphne compiler, and how it provides different ways to compile a subset of Clojure simulator programs to neural network architectures, and as of lately also CUDA. The goal of this discussion is to provide understanding of both the methodology and applications of probabilistic programming, as well as to gather more feedback from the Clojure community to render Daphne not only an academic platform, but also more practical. One such potential practical integration we will discuss is with LLMs that can help with the simulator construction.
Speaker
Saturday, October 25
Opening & Welcome
Opening & Welcome
Abstract
We will just spend some time together and discuss what is coming for the day.
Bridging Worlds: Building Graph Neural Networks with Clojure and Python Interoperability (+ Practice)

Bridging Worlds: Building Graph Neural Networks with Clojure and Python Interoperability (+ Practice)

Abstract
Discover how to build Graph Neural Networks by combining Clojure's functional elegance with Python's ML ecosystem. This talk demonstrates practical interoperability using libpython-clj to call PyTorch Geometric from Clojure, creating powerful GNN solutions while maintaining REPL-driven development workflows. We'll live-code a complete Graph Convolutional Network, from data ingestion to visualization, showing how Clojure's immutability and Python's deep learning capabilities create a useful combination for modern AI development. After the talk and discussion, we will practice some things in the REPL together: using PyTorch from Clojure, and maybe more.
Speaker
Open Practice 5
Open Practice 5
Abstract
We will spend some time together practicing the tools, methods, and ideas we have seen at other talks.
Building Dynamic Entity Extraction with Bosquet

Building Dynamic Entity Extraction with Bosquet

Abstract
Every text processing application needs to answer a question: what is this text about? Named entity extraction is one part of the answer to this. It identifies and links words to real-world entities—turning "Macroexpand 2025" into structured data about a specific technology conference happening in a specific year.
This extraction process involves multiple steps that can be implemented using LLMs. This presentation demonstrates how Bosquet, an LLM orchestration library, can help with building entity extraction pipelines.
Speaker
Panel: broader implications of AI





Panel: broader implications of AI





Abstract
We will discuss the broader implications of the AI rush, a few of the ways it affects our lives, and what we might be able to do about it.
Speakers
Building Realtime Voice AI Agents with Clojure - Best Practices

Building Realtime Voice AI Agents with Clojure - Best Practices

Abstract
Exploring how to build reliable voice AI agents in a functional data-driven way with Clojure. This talk will go over all of the pieces involved in voice ai from best models to use, turn detection, context management to scripting and instruction following to hosting and scaling. By the end you will better understand what it takes to build highly reliable voice AI agents with Clojure
Speaker
Building Event Sourced Agentic Applications with Grain

Building Event Sourced Agentic Applications with Grain

Abstract
Learn how ObneyAI uses its open source Clojure framework called Grain to build Event Sourced applications with first-class agentic workflows that blend the best of the Clojure and Python ecosystems.
Speaker
Lightning Talks 2
Lightning Talks 2
Abstract
Various short talks by conference participants
Jank & Torch: Native Deep Learning in Clojure



Jank & Torch: Native Deep Learning in Clojure



Abstract
In the field of AI, Python is the current reigning champ. But the Python ecosystem's dirty secret is that most of the libraries holding the system together are wrappers around C/C++ libraries that do most of the important work. Jank is the native Clojure dialect built on compiler technologies like LLVM, giving it access into the same native libraries powering the Python ecosystem. As Jank heads towards its first alpha release, its most highly anticipated feature, seamless C++ interop is already capable of wrapping and using native C++ libraries for machine learning and artificial intelligence. In this talk, we will show how to leverage Jank's C++ interop to wrap the most popular deep learning library in usage right now, libtorch, which most would have known through its Python frontend, PyTorch. As a proof of concept, we will display an implementation of GPT-2, the LLM released in 2019 using our Torch wrapper. This talk will give Clojure practitioners interested in using Clojure for ML/AI a glimpse into the future of how important C++ libraries can be utilized with Jank.
Speakers
Conclusion
Conclusion
Abstract
We will spend some time together with closing thoughts.
Detecting your timezone...
* Schedule is subject to change. Final schedule with confirmed speakers will be published closer to the conference date.
Connect & Discuss
Join the conversation at the Clojurians Zulip chat where we discuss AI projects and help each other explore this exciting frontier.