The support experience can be usefully thought of as being _part of your product_: users will not always be able to accomplish their goals in-app, and will instead need to interact with your product's support experience, whatever that is. Much like any other product development, the goal isn't strictly to minimize costs, it's to create a compelling and delightful experience that leaves users…
Amidst a rising sea of AI hype, we see LLMs being used in situations where it makes no sense. Instead of describing business processes with regular code, companies encode logic with elaborate Markdown prompts passed to LLMs. This is effectively programming in Markdown, using the world's slowest and least reliable interpreter, an LLM, running at 10,000x the cost and latency and with dramatically…
This post introduces the pervasive problem of prompt-injection in LLMs and walks through three poor solutions for addressing it. Two are security theatre non-solutions that do nothing against a determined attacker, and the third technically works but generally makes the use of LLMs pointless. After covering these, we'll discuss the problem from first principles and introduce the only actual…
This post introduces a new approach to creating LLM-free support bots. In addition to providing a great user experience, these bots are reliable, speedy, hallucination free, and overall cheaper, simpler, and safer to operate than bots based on LLMs. They are immune to prompt-injection attacks and the possibility of leaking personal information to third-party AI model providers. There _are_ no…
NLDs ("Natural Language Disambiguators") can be used in place of LLMs or SLMs when disambiguating among a set of structured commands. They run in milliseconds, fast enough for real-time filtering and autocomplete on the front-end, and are robust to differences in phrasing, reordering of tokens, and extraneous tokens that don't affect semantics. ("I want to return my order", "order return", and "my…
Applications of the future will no longer be limited to static UI hierarchies, but will be dynamically assembled based on context, serving the long tail of user goals that either aren’t well-handled by existing UIs, or which are flat-out impossible. This essay introduces the basic idea and shows a number of examples.