
THE SMARTER PROJECT
My primary project, and my first large open source work as a solo author
Smarter is an open source platform for building and running LLM applications. Its own site explains what it does; this page is about building it.
It started in March 2023, while I was teaching AI to non-programmers at University of British Columbia, as a small experiment with the OpenAI API that I put online as openai.lawrencemcdaniel.com. It kept growing into a platform. The first MVP shipped in October 2025, and since January 2026 Smarter has run in production at UBC, where students use it in AI courses. The origin story is on smarter.sh.

A public test of my work
I’ve worked in open source since 2010, but Smarter is the first large codebase that I designed and wrote on my own: about half a million lines across the smarter-sh repositories. That covers a Django and Celery platform, a React web console, a Go command line tool, SDKs in Python, Node.js and Go, a VS Code extension, chat plugins for WordPress, Drupal and Shopify, the documentation, and the Kubernetes infrastructure on AWS that runs it all.
That makes it a fair test of what I can do as a full stack developer and architect. The architecture and design decisions are mine, from the data model to the release pipeline, and they are written down in more than thirty decision records. The code is public, so anyone can check it.
Ideas that started here
A few of Smarter’s solutions are my own. Each one has a full write-up on the blog, in the docs and in the code, so here is just enough to show what it is.

class Secret(MetaDataWithOwnershipModel):
...
Secret.objects
.with_read_permission_for(user)
Secret.objects
.with_ownership_permission_for(user)
Pydantic manifests and the broker model
Every AI resource is declared in a Kubernetes-style YAML manifest, validated by Pydantic models. A broker for each kind turns manifests into Django records and back, so the command line, the REST API and the web console share one path for apply, get, describe and delete.

Ask Sam about the code
Sam, the Smarter Developer Guide, is a Smarter chatbot running in production on UBC’s Smarter platform. It knows the project’s code and documentation, so it can explain hard technical questions about any of the ideas above, and show where they live in the code.
It is declared in one YAML manifest, and embedded in this page with Smarter Chat, the project’s React chat component.
- How do I add a new SAM resource kind to Smarter?
- How does @cache_results() know when to invalidate a cached result?
- How does Django hand a page’s context to its React app?
