Technical product development · AI engineering

I design, build and improve software products.

Start with an idea. Or bring what you already have.

I build products with founders from the ground floor, improve existing systems, and put the people, infrastructure and AI-assisted development process in place to keep building.

20+
years engineering
10+
years independent
Architecture production
One line of responsibility

Build. Improve. Enable.

Three ways to start, with technical ownership across the whole product lifecycle. An engagement can move between all three.

  1. 01

    BuildStart from the ground floor.

    You bring the idea and domain knowledge. I work with you to turn it into a real product, from the first technical decisions to production.

    Product planning, architecture, hands-on development, cloud infrastructure, CI/CD and integrations. I can assemble the team and lead the work through launch and beyond.

  2. 02

    ImproveBring the system you already have.

    I get inside the product, codebase, infrastructure and team, identify what is holding you back, and work with you to improve it.

    Architecture, reliability, security, performance, technical debt, delivery process and team structure. Stabilise what is fragile; modernise or rewrite where the evidence justifies it.

  3. 03

    EnableBuild your AI-assisted engineering capability.

    Work directly with AI agents, bring your existing developers, or build a team with my help. I set up the development environment around you and provide the technical direction.

    Repositories, permissions, environments, CI/CD, agent workflows, testing and review gates. You can direct implementation through agents such as Codex, with engineering discipline and human control around the work.

Technical direction.
Hands-on delivery.

I can act as your fractional CTO, recruit and lead developers, or work directly in the code. I also integrate AI into products and internal workflows where it is useful. The aim is a product, a team and an engineering system capable of continuing to build.

The engagement can begin almost anywhere.

  1. 01

    You have an idea and need someone to build it with you.

  2. 02

    You have a prototype and need a reliable production system.

  3. 03

    Your product is struggling, and you need to understand why and improve it.

  4. 04

    You have developers but need technical direction and someone to own the whole picture.

  5. 05

    You want to build with AI and need an engineering system you can trust.

  6. 06

    You need to assemble a team and give it the foundations to keep delivering.

Start with a week. Continue as needed.

Products. Teams. The way they work.

A few examples from more than two decades of professional and personal projects. Product engineering, team leadership and day-to-day operations, often within the same engagement. Client and unpublished project details are anonymised where appropriate.

01 Anonymised · SaaS · Build + improve + enable

Building the product and the team.

Situation
A company turning its domain expertise into software needed its first product, a development team and a way to manage delivery.
Úlfur’s responsibility
Design and build the platform, assemble and lead the contractor team, and guide the company through its first software development cycle. Take sole responsibility for DevOps while leading development.
Important decisions
Develop the people and the process alongside the product: mentor a domain specialist into project management, and continually integrate and refine AI-assisted development as the tools and working practices evolve.
Delivered
Self-service onboarding, subscriptions and billing, data collection, third-party integrations, reporting, AI-assisted analysis, web and mobile delivery, and AWS production operation.
Operational state
In production on AWS, with a team of three contract developers and ongoing technical leadership, development and operations.

02 Anonymised · Professional network · Build

A private network, built from the ground up.

Situation
An invitation-only professional community needed a mobile product shaped around its members and industry.
Úlfur’s responsibility
Co-founder, CTO and sole developer, owning the product’s technical design, backend, frontend and AWS operations.
Important decisions
Build the mobile experience with Django, Vue and Capacitor, and take responsibility for the system through deployment and ongoing maintenance.
Delivered
A live invitation-only network with iOS and Android applications, backed by an AWS-hosted platform.
Operational state
Launched as an independent venture, with the live product and its infrastructure under ongoing operation.

03 Anonymised · Unpublished game · Build + enable

An industry veteran’s vision, made playable.

Situation
A veteran games art director and lead concept artist, with more than two decades in the industry, wanted a technical partner for an independent game project.
Úlfur’s responsibility
Provide that technical partnership: architecture, hands-on development, authoring tools, repository and CI setup, and review of AI-assisted implementation. Work together on game design, with the artist shaping the visual world and creative direction.
Important decisions
Build the tools and workflow around the artist’s creative direction. Use AI to help implement and explore ideas, with versioned code, automated checks and technical ownership of review and integration.
Delivered
A playable procedural 2D prototype, authoring tools and an AI-assisted development workflow.
Operational state
Unpublished and in active development. The prototype is used to test both the game and the development approach.

04 Robolobo · Project bootstrap · Enable

An AI-assisted route from brief to production.

Situation
Starting a small web project repeatedly meant reconstructing the repository, architecture, cloud deployment, CI/CD, domain setup and account-safety decisions before useful work could reach production.
Úlfur’s responsibility
Design and implement a reusable brief-to-production workflow combining Codex-assisted implementation with explicit technical direction, CI checks and deployment controls. Prove it by using ulfurk.com as its first real consumer.
Important decisions
Use a small static-site archetype with TypeScript CDK, private S3 and CloudFront Origin Access Control; deploy through GitHub OIDC; and fail closed unless immutable GitHub and AWS account identities match the project configuration.
Delivered
Project initialisation, canonical agent instructions, Codex-assisted development, AWS CDK, GitHub CI/CD, guarded DNS adoption and production smoke checks.
Operational state
ulfurk.com is live as the first consumer, deployed from a private personal GitHub repository into the intended personal AWS account.

These are selected examples from a career spanning games, SaaS, startups, banking, insurance, travel/search, media/streaming and government, alongside independent ventures and personal projects.

A few principles that survive real systems.

  1. 01

    Understand before prescribing.

    Start with the business constraint, the product and the system as it actually behaves—not the fashionable answer.

  2. 02

    Make consequential decisions explicit.

    Record the trade-offs, the assumptions and what would cause the decision to change.

  3. 03

    Let complexity earn its place.

    Prefer the simplest architecture that is genuinely sufficient. Complexity has a permanent operating cost.

  4. 04

    Ship in useful increments.

    Reduce risk by putting coherent, maintainable slices in front of real users and real operating conditions.

  5. 05

    Verify against production behaviour.

    Architecture diagrams are hypotheses. Logs, failure modes and user behaviour are evidence.

  6. 06

    Leave the work easier to operate.

    The system should be safer to change, and the engineers should understand it better, after the engagement.

Still close to the code.

The stack is not the service. It is how decisions get tested and turned into working software.

Python · Django · PostgreSQL · JavaScript · Vue · AWS

APIs · Distributed systems · SaaS · Infrastructure · Production operations

AI integrations · Agent-assisted development · AI product workflows · Evaluation

Python
since 2004
Django
since 2008

I started as an engineer and never stopped being one.

I’m Úlfur Kristjánsson. I’ve spent more than two decades building software through professional engagements, my own ventures and personal projects. My work has grown from engineering into architecture, product decisions, infrastructure and building teams.

I build the product and the people and practices around it. That can mean leading developers, helping a company learn how to deliver software, or evolving its AI workflow while keeping development and operations moving. I take responsibility for the technical decisions and stay close enough to the code to make them work.

I work independently with companies internationally, remotely and on site by arrangement. Consulting services are provided through Robolobo OÜ.

Bring me something worth building.

Tell me what needs to happen.

An idea to build, a product to improve, or a team that needs direction. Send a short outline of where things stand, what needs to change, and your budget and timing. I’ll review the brief and tell you where I can take responsibility. The email link includes a few prompts; you can review it before sending.