AI & LLMs
AI, LLMs & generative UI
Building AI-powered products with LLMs and agents, generative UI, and AI-assisted development, from an engineer running an agent-based product in production.
I use AI in two ways: as a builder of AI-powered products, and as an engineer who uses AI tools every day without handing over judgement.
Building with LLMs
At Settio, an AI-powered platform that helps newcomers settle in Sweden, I design and run an agent-based architecture end to end: language models, the tools and data they use, and the web product around them.
What I focus on when building with LLMs:
- Clear contracts. Models return structured output that the application validates before using it, just like any untrusted input.
- Grounding. Answers are only as good as the information behind them, so retrieval and up-to-date sources matter more than prompt tricks.
- Fallbacks. Models fail, time out and change. The product needs sensible defaults and graceful degradation.
- Latency and cost. Streaming, caching and choosing the right model for each step.
- Observability. Logging what the model received and returned, so quality can be measured and improved.
Generative UI
I'm especially interested in generative UI (GenUI): letting a model compose interfaces from a catalog of safe, designed components instead of answering with text. Flutter's widget model is a natural fit. I wrote about it in GenUI: when AI generates the interface, not just the text.
AI-assisted development
I use AI assistants daily for boilerplate, tests, exploring unfamiliar code and first drafts of documentation. I stay in charge of architecture, security-sensitive code and anything I can't fully review. More in How to be an efficient software engineer.
Where AI fits, and where it doesn't
AI is great for the long tail of situations nobody had time to design for. For core flows that must be fast, predictable and safe, a designed interface and deterministic code are still the right choice. The engineering skill is knowing the difference.