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. |
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 |
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 |
11:00 |
2D CFD Simulation based optimization of airfoils using freecad & openfoam ![]() ![]() 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 |
|
12:00 |
Open Practice AbstractWe will spend some time together practicing the tools, methods, and ideas we have seen at other talks. |
Open Practice 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 |
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 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 |
Open Practice AbstractWe will spend some time together practicing the tools, methods, and ideas we have seen at other talks. |
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 AbstractVarious short talks by conference participants |
19:00 |
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 CFD Simulation based optimization of airfoils using freecad & openfoam


2D CFD Simulation based optimization of airfoils using freecad & openfoam


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
Open Practice
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
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
Open Practice
Open Practice
Abstract
We will spend some time together practicing the tools, methods, and ideas we have seen at other talks.
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
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
Open Practice
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
Lightning Talks
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.