Building with AI
TypeFox offers services around its core strengths: building a deep understanding of our clients’ domains and helping domain experts solve technical challenges they face. We provide the right tools tailored to our clients’ needs and find the right abstractions to simplify their work.
Two ways to apply AI
AI fits well into what we do, and we see two major fields of application. Starting with the classical viewpoint, AI enables us to enrich existing systems or processes with tools for solving domain-specific requirements that were hard to formalize a few years ago. This approach sits on the conservative side: we hand over precisely specified tasks to AI with clear expectations about the outcome. To a certain extent, we also have automatic verification routines at hand that allow us to separate valid results from AI slop.
Here, AI systems are defined as systems with language models involved in computations, e.g. wrapped by static AI workflows or autonomous agent loops. The latter leads to the second major field of application: autonomous AI systems, a new approach that emerged in the AI era. I would classify this approach as radical, going to the root (radix) of possibilities, challenging the foundations, not just improving on what exists.
Such AI systems act proactively, with human operators filling the gaps that AI, in its current state, cannot solve on its own. Our expectation is that these gaps will gradually close. There is a vision that AI might operate fully autonomously in the future. This is where the industry sees great potential, but at the same time there is an awareness that the greater the reward, the higher the risk that things will go wrong.
Some of the core questions are: Which tasks do we hand over to AI? How do we make AI more accessible to humans, across different application areas? And how do we ensure that AI outcomes always meet our expectations?
Shared foundations
From the technical viewpoint, both major fields of application fall into the same problem class. Using AI as a building block for existing systems and building autonomous AI systems largely share the same engineering concerns: enriching context with facts, storing and retrieving facts, dividing certain tasks and combining intermediate results, interacting with the environment, performing checks and validating results.
Sounds a bit like AI is starting to do the work for us, right? For sure, there are a lot of opportunities to offload certain tasks without people being involved. Solving one problem in a class makes it likely we can solve the entire class. More specifically, if we create an AI system that solves programming tasks, we can apply that knowledge to any domain under similar conditions, such as the presence of evaluations. It is up to us to shape that future.
Present reality
What inspires me most in AI is the ability to explore the space of possibilities. We currently have systems that make predictions using a limited amount of memory. Not more, not less. No working mind, no self-awareness, not even on the horizon. That does not mean we have failed so far; on the contrary, we have built something useful.
Sometimes the current state of affairs feels a bit unsatisfactory. We are kept in shortage, always waiting for the next, hopefully better, language model that solves existing problems. We perceive that model performance sometimes declines, while we are caught on an upgrade treadmill, and an optimism bias leads us to overstate how good the future will be. It sells.
If we free ourselves from these undesired psychological effects, we can focus on building reliable systems on top of present AI technology. It is worth the effort to take a close and unbiased look at what is already present and reuse building blocks that have been proven to work as part of solutions for real-world problems.
Engineering, not magic
Building AI systems is an act of software engineering. There is no single AI solution that can be integrated in a plug-and-play fashion, nor does a generic one-size-fits-all AI tooling platform exist. Anxiety and hype need to be swept away. It is necessary to understand all parts of an AI system that are relevant in the context of a certain application. These topics are very diverse and range from the underlying mathematical principles to the design of user interfaces for next-generation AI. It depends on the specific use case.
No matter which path we take, one of the main goals will always be to get the most out of a language model, to find the right abstractions for the domain at hand, and to rely on well-defined techniques, like working directly with language models, defining static workflows, or enhancing AI agents with capabilities tailored to an underlying domain.
I’d love to take you along on our journey to learn about building with AI. Part of that will involve sharing a mental model—a solid framework that will guide us throughout the series.
What’s next
I hope the first post of the Building with AI series piqued your interest. In this post, you read about how AI fits into TypeFox’s domain expertise, two major ways to apply it, the shared technical problem class behind both approaches, and why building AI systems remains software engineering.
The upcoming posts in the Building with AI series will focus more on the technical aspects of AI systems. Looking forward to having you back!
About the Author
Daniel Dietrich
Daniel co-leads TypeFox with a strong background in software engineering and architecture. His guiding principle: client needs drive innovation, and innovation elevates the client experience.


