Asko Nõmm

Interface-less Services

As I’ve been working on the CodeScene MCP server, and the upcoming redesign of Invobi that’s leveraging AI as its user interface, a vision has been starting to form for me where I see AI not as this massively overhyped employment killer, but as a sort of interface for interface-less services.

Where currently services exist as these visual systems where you point and click with your mouse, or tap with your finger, to interact with input fields, date pickers, to move things around and so forth, you would instead interact with natural language. You could choose between written or spoken form of natural language, and services would just have AI translate that input into an output format needed for the functioning of said service.

Really AI is just a compiler, in a sense, and we’ve been using compilers to translate higher-level instructions to lower level ones for decades, so now the higher-level instruction could be the end user simply speaking in their natural language. However, programmers trust compilers because they are deterministic, and AI is not, so we can’t trust it to give us reliable output, but I think there’s a way we can make it work.

Small chunks at a time

I find that the smaller the area you trust AI with, the less it can get off course. In the case of Invobi, I’m giving it very specific instructions on what the input is by prepending and appending instructions to the user’s prompt, so that the AI knows what to expect and what to give as output, in very clear and simple language.

Small is key here - whatever instructions I give it cannot be large as it seems to easily get overwhelmed, similar to a human, really. Just asking it to do one thing and only one thing seems to give good results.

Never trust, always verify

No matter how succinct the prompt you give it is, AI can (and most likely will at some point) hallucinate. Instead of having your service break down when it does, you could design your data requirements in a way that there are as many defaults as possible for when data is missing. You needed a username, but AI failed to give one? Auto generate one instead, just to give an example. Your application should be as forgiving as possible.

Additionally have schema validation, so that when the data that absolutely must be there turns out to be missing, or be invalid, not only would it function as a barrier preventing the invalid data from breaking your application, you could use the validation feedback as a iteration loop to give back to the AI, and have it correct itself.


I don’t pretend to be a UX design expert, so I don’t know all the potentially negative ramifications of applications like this, but I do see utility in the convenience. I’m not saying it would (or should) fit every application out there, but for something as simple as invoice generation, I don’t see why shouldn’t I be able to create it by typing a paragraph instead of filling a form? It’s certainly quicker.

There are many applications out there that have a very specific purpose that could make use of this, such as the CodeScene analysis tools that you can interact with in natural language through the CodeScene MCP server, instead of having to learn all its complex metrics and navigate its web app, which people could find intimidating. It makes complex things more approachable, and I think there’s great value in that.