Design, Technology

Building an AI companion - Part 1

2024

/

5 min.

by

Rafe Johnson

Share Article

Building an AI companion part 1 - Project intro


I find two recurring issues in my life: decision making and placing my attention in the right places. When I was a kid, I was closely exposed to the reality of our mortality, birthing a strong awareness of the finite nature of our existence. This realisation helped me become more aware of the limits of our time, yay! But then it makes me stress about the limits of our time, not yay! I know I am not alone in this worry; modern technology has made everyone very aware of all the different things we could be doing with our time, but the result of this is not us using our time well. Instead, we scroll endlessly watching others seemingly spending their time well. But it's not just our finitude of time; it's perhaps even more importantly the limits of our attention that is our most valuable resource, which big tech knows all too well. It feels as if we have lost some agency on where our attention goes. I recently carved some time out in my life to go a little deeper on one project, and so I wanted to explore building a prototype to address this problem.

I started with the plan of building a centralised space where you can see and be reminded of the things in life you actually WANT to spend your time and attention on. I also think this current AI renaissance gives birth to a new type of computing in which these computers can intelligently assist us with what's most important to us. How can we leverage these very powerful systems to work in our interests rather than against them? So the question was: how could I combine modern AI systems with a tool/interface that helps you stay focused?

The project started with 3 goals:

Develop a companion that has memory and evolving communication with an expressive body

Create a fluid user interface that helps you manage what you want to focus on

Marry the two systems to work beautifully together

So I started working on this prototype which I soon named Enso. Enso, apart from feeling like a fitting name for a little character, is a Japanese word, which represents the concept of zen mind. In Japanese, "ensō" (円相) means "circular form" and is a Zen symbol, often translated as "Zen circle," representing enlightenment, emptiness, freedom. I chose this name as it represents the underlying goal of Enso, to be a presence for developing clarity of mind. I wanted to subtly express this concept in Enso's body design.

Evolution of Enso body design


The core of the UI design concept was to build an intuitive, organic-feeling UI that more closely represents the way we think rather than lists and folders that we so often see in apps like this.

Some early sketches of the ui concepts


I arrived on the UI being composed of these circular bubbles called focuses; these are high-level what you're focusing on. They're like categories or folders, and inside them goals/tasks exist to mark off as you complete them. Outside are free goals/tasks that don't belong in any category but can be moved inside if needed. You drag these around, and they scale proportionally to the number of goals and the priorities inside them. Enso can help create these and has knowledge of these when planning ideas, connecting the dots between them. It was important that Enso remains present in all UI screens; it's a constant presence through the app and has context of what you're doing inside the app, floating around and transitioning beautifully across screen states

Current prototype ui Home Screen


On the other side of development was a lot of work on Enso’s brain. Heres the major things Enso had to do:

- Have a memory, both of conversations but also building a model of the user

- Evolve its communication style based on its understanding of the users preferred communication style, subtle mimicking and so on

- Enso have awareness of all relevant data in the app so it can consider this context in its responses.

- Enso can call functions e.g create goals, or modify goals etc

Now I won’t go into extreme detail of how the memory system works but the core principle is inside Enso’s brain lives other sub agents with very strict tasks, review what should be stored in memory, review what styles of communication the user best responds to and then store this information. This all then gets brought together by a context provider, which feeds Enso’s primary LLM with the most useful context per response. It took a ton of tweaking to get this feeling good but this is the strongest element of this prototype, and once fully refined might be the magic sauce that makes this project go somewhere. Heres some examples of Enso’s responses.




**Whats working**

So after some months of building, I got Enso to a basic MVP state that could be tested. Here's what it included:

A companion with a complex context system that evolves its communication over time, remembers you and your conversations, and has awareness of all assets in the app

Fluid UI system with goals and focuses, notes and goal archives, and of course chat screen with Enso

A backend to store all useful app data across sessions

What was most interesting was how much I used the app for the development of itself, leading to many interesting meta conversations with Enso. I was finding it was actually the use case in which I was using the app most for, developing itself. While I was intending the app to be used most for general life, I was using it by far most for creative projects, having conversations about design direction and project direction and some motivation along the way. Here are some of my favourite responses I got from Enso.

So with the MVP complete, here is the feedback:

What worked well:

- Playful ai companion that remembers your was compelling

- Having a ui screen that has the high level things you want to work on

- Fluidity of the ui design

- Enso’s general charm

What didn’t work well:

- Difficulty understanding the concept - this is probably the biggest issue I discovered from testing

- Ui not feeling intuitive in some areas

- no on cared about notes screen

- Some voiced worries about privacy and data security

The testing revealed promising results; there's clearly potential in this concept, though transforming it into a genuinely useful product remains challenging. One significant obstacle is measuring effectiveness—unlike other applications where success can be quantified through clear metrics, improvements in attention and time management are largely subjective. Beyond user testimonials stating that Enso helped them use their attention better, it's difficult to establish concrete measurements of success in this domain.

So to make it easier, the concept should be focused down, find what's most interesting and get this working beautifully. So what's the strategy?

**Strategy going forward**

Okay, so we got Enso to MVP - got it tested and built out the core features I had in my head. However, the problems of managing attention and focus are a little esoteric, and if I actually want people to use the product, the why and how of the concept needs to be clearer. There are 2 strategies I see going forward:

- Focus it down and make the value very precise and clear; this is wise for getting some initial interest and users. Then once some people are using it, expand it outwards to explore some of the areas I found more interesting.

- Option 2 is to keep it broad, allow users to really frame it how they want to frame it and use it in their own way.

I actually like this approach, but I think it's much harder to design for and potentially runs into more problems and leaves me going slightly mad and running around in design circles. So the plan is to design an Enso V2 over the coming 3 months, likely on with focus on a desktop application with a more focused use case and value prop, and see if I can get some interest there.

**Outro**

So the brainstorming continues; I now know that a companion that knows you and engages with you in a playful way is interesting and has potential, but how to apply that to meaningful problems is still to be fully figured out.

Thanks for reading, this is just part 1 introducing the project, but I'll be sharing more about developments, how I built certain elements in the project and more. Stay tuned!


Building an AI companion part 1 - Project intro


I find two recurring issues in my life: decision making and placing my attention in the right places. When I was a kid, I was closely exposed to the reality of our mortality, birthing a strong awareness of the finite nature of our existence. This realisation helped me become more aware of the limits of our time, yay! But then it makes me stress about the limits of our time, not yay! I know I am not alone in this worry; modern technology has made everyone very aware of all the different things we could be doing with our time, but the result of this is not us using our time well. Instead, we scroll endlessly watching others seemingly spending their time well. But it's not just our finitude of time; it's perhaps even more importantly the limits of our attention that is our most valuable resource, which big tech knows all too well. It feels as if we have lost some agency on where our attention goes. I recently carved some time out in my life to go a little deeper on one project, and so I wanted to explore building a prototype to address this problem.

I started with the plan of building a centralised space where you can see and be reminded of the things in life you actually WANT to spend your time and attention on. I also think this current AI renaissance gives birth to a new type of computing in which these computers can intelligently assist us with what's most important to us. How can we leverage these very powerful systems to work in our interests rather than against them? So the question was: how could I combine modern AI systems with a tool/interface that helps you stay focused?

The project started with 3 goals:

Develop a companion that has memory and evolving communication with an expressive body

Create a fluid user interface that helps you manage what you want to focus on

Marry the two systems to work beautifully together

So I started working on this prototype which I soon named Enso. Enso, apart from feeling like a fitting name for a little character, is a Japanese word, which represents the concept of zen mind. In Japanese, "ensō" (円相) means "circular form" and is a Zen symbol, often translated as "Zen circle," representing enlightenment, emptiness, freedom. I chose this name as it represents the underlying goal of Enso, to be a presence for developing clarity of mind. I wanted to subtly express this concept in Enso's body design.

Evolution of Enso body design


The core of the UI design concept was to build an intuitive, organic-feeling UI that more closely represents the way we think rather than lists and folders that we so often see in apps like this.

Some early sketches of the ui concepts


I arrived on the UI being composed of these circular bubbles called focuses; these are high-level what you're focusing on. They're like categories or folders, and inside them goals/tasks exist to mark off as you complete them. Outside are free goals/tasks that don't belong in any category but can be moved inside if needed. You drag these around, and they scale proportionally to the number of goals and the priorities inside them. Enso can help create these and has knowledge of these when planning ideas, connecting the dots between them. It was important that Enso remains present in all UI screens; it's a constant presence through the app and has context of what you're doing inside the app, floating around and transitioning beautifully across screen states

Current prototype ui Home Screen


On the other side of development was a lot of work on Enso’s brain. Heres the major things Enso had to do:

- Have a memory, both of conversations but also building a model of the user

- Evolve its communication style based on its understanding of the users preferred communication style, subtle mimicking and so on

- Enso have awareness of all relevant data in the app so it can consider this context in its responses.

- Enso can call functions e.g create goals, or modify goals etc

Now I won’t go into extreme detail of how the memory system works but the core principle is inside Enso’s brain lives other sub agents with very strict tasks, review what should be stored in memory, review what styles of communication the user best responds to and then store this information. This all then gets brought together by a context provider, which feeds Enso’s primary LLM with the most useful context per response. It took a ton of tweaking to get this feeling good but this is the strongest element of this prototype, and once fully refined might be the magic sauce that makes this project go somewhere. Heres some examples of Enso’s responses.




**Whats working**

So after some months of building, I got Enso to a basic MVP state that could be tested. Here's what it included:

A companion with a complex context system that evolves its communication over time, remembers you and your conversations, and has awareness of all assets in the app

Fluid UI system with goals and focuses, notes and goal archives, and of course chat screen with Enso

A backend to store all useful app data across sessions

What was most interesting was how much I used the app for the development of itself, leading to many interesting meta conversations with Enso. I was finding it was actually the use case in which I was using the app most for, developing itself. While I was intending the app to be used most for general life, I was using it by far most for creative projects, having conversations about design direction and project direction and some motivation along the way. Here are some of my favourite responses I got from Enso.

So with the MVP complete, here is the feedback:

What worked well:

- Playful ai companion that remembers your was compelling

- Having a ui screen that has the high level things you want to work on

- Fluidity of the ui design

- Enso’s general charm

What didn’t work well:

- Difficulty understanding the concept - this is probably the biggest issue I discovered from testing

- Ui not feeling intuitive in some areas

- no on cared about notes screen

- Some voiced worries about privacy and data security

The testing revealed promising results; there's clearly potential in this concept, though transforming it into a genuinely useful product remains challenging. One significant obstacle is measuring effectiveness—unlike other applications where success can be quantified through clear metrics, improvements in attention and time management are largely subjective. Beyond user testimonials stating that Enso helped them use their attention better, it's difficult to establish concrete measurements of success in this domain.

So to make it easier, the concept should be focused down, find what's most interesting and get this working beautifully. So what's the strategy?

**Strategy going forward**

Okay, so we got Enso to MVP - got it tested and built out the core features I had in my head. However, the problems of managing attention and focus are a little esoteric, and if I actually want people to use the product, the why and how of the concept needs to be clearer. There are 2 strategies I see going forward:

- Focus it down and make the value very precise and clear; this is wise for getting some initial interest and users. Then once some people are using it, expand it outwards to explore some of the areas I found more interesting.

- Option 2 is to keep it broad, allow users to really frame it how they want to frame it and use it in their own way.

I actually like this approach, but I think it's much harder to design for and potentially runs into more problems and leaves me going slightly mad and running around in design circles. So the plan is to design an Enso V2 over the coming 3 months, likely on with focus on a desktop application with a more focused use case and value prop, and see if I can get some interest there.

**Outro**

So the brainstorming continues; I now know that a companion that knows you and engages with you in a playful way is interesting and has potential, but how to apply that to meaningful problems is still to be fully figured out.

Thanks for reading, this is just part 1 introducing the project, but I'll be sharing more about developments, how I built certain elements in the project and more. Stay tuned!


Building an AI companion part 1 - Project intro


I find two recurring issues in my life: decision making and placing my attention in the right places. When I was a kid, I was closely exposed to the reality of our mortality, birthing a strong awareness of the finite nature of our existence. This realisation helped me become more aware of the limits of our time, yay! But then it makes me stress about the limits of our time, not yay! I know I am not alone in this worry; modern technology has made everyone very aware of all the different things we could be doing with our time, but the result of this is not us using our time well. Instead, we scroll endlessly watching others seemingly spending their time well. But it's not just our finitude of time; it's perhaps even more importantly the limits of our attention that is our most valuable resource, which big tech knows all too well. It feels as if we have lost some agency on where our attention goes. I recently carved some time out in my life to go a little deeper on one project, and so I wanted to explore building a prototype to address this problem.

I started with the plan of building a centralised space where you can see and be reminded of the things in life you actually WANT to spend your time and attention on. I also think this current AI renaissance gives birth to a new type of computing in which these computers can intelligently assist us with what's most important to us. How can we leverage these very powerful systems to work in our interests rather than against them? So the question was: how could I combine modern AI systems with a tool/interface that helps you stay focused?

The project started with 3 goals:

Develop a companion that has memory and evolving communication with an expressive body

Create a fluid user interface that helps you manage what you want to focus on

Marry the two systems to work beautifully together

So I started working on this prototype which I soon named Enso. Enso, apart from feeling like a fitting name for a little character, is a Japanese word, which represents the concept of zen mind. In Japanese, "ensō" (円相) means "circular form" and is a Zen symbol, often translated as "Zen circle," representing enlightenment, emptiness, freedom. I chose this name as it represents the underlying goal of Enso, to be a presence for developing clarity of mind. I wanted to subtly express this concept in Enso's body design.

Evolution of Enso body design


The core of the UI design concept was to build an intuitive, organic-feeling UI that more closely represents the way we think rather than lists and folders that we so often see in apps like this.

Some early sketches of the ui concepts


I arrived on the UI being composed of these circular bubbles called focuses; these are high-level what you're focusing on. They're like categories or folders, and inside them goals/tasks exist to mark off as you complete them. Outside are free goals/tasks that don't belong in any category but can be moved inside if needed. You drag these around, and they scale proportionally to the number of goals and the priorities inside them. Enso can help create these and has knowledge of these when planning ideas, connecting the dots between them. It was important that Enso remains present in all UI screens; it's a constant presence through the app and has context of what you're doing inside the app, floating around and transitioning beautifully across screen states

Current prototype ui Home Screen


On the other side of development was a lot of work on Enso’s brain. Heres the major things Enso had to do:

- Have a memory, both of conversations but also building a model of the user

- Evolve its communication style based on its understanding of the users preferred communication style, subtle mimicking and so on

- Enso have awareness of all relevant data in the app so it can consider this context in its responses.

- Enso can call functions e.g create goals, or modify goals etc

Now I won’t go into extreme detail of how the memory system works but the core principle is inside Enso’s brain lives other sub agents with very strict tasks, review what should be stored in memory, review what styles of communication the user best responds to and then store this information. This all then gets brought together by a context provider, which feeds Enso’s primary LLM with the most useful context per response. It took a ton of tweaking to get this feeling good but this is the strongest element of this prototype, and once fully refined might be the magic sauce that makes this project go somewhere. Heres some examples of Enso’s responses.




**Whats working**

So after some months of building, I got Enso to a basic MVP state that could be tested. Here's what it included:

A companion with a complex context system that evolves its communication over time, remembers you and your conversations, and has awareness of all assets in the app

Fluid UI system with goals and focuses, notes and goal archives, and of course chat screen with Enso

A backend to store all useful app data across sessions

What was most interesting was how much I used the app for the development of itself, leading to many interesting meta conversations with Enso. I was finding it was actually the use case in which I was using the app most for, developing itself. While I was intending the app to be used most for general life, I was using it by far most for creative projects, having conversations about design direction and project direction and some motivation along the way. Here are some of my favourite responses I got from Enso.

So with the MVP complete, here is the feedback:

What worked well:

- Playful ai companion that remembers your was compelling

- Having a ui screen that has the high level things you want to work on

- Fluidity of the ui design

- Enso’s general charm

What didn’t work well:

- Difficulty understanding the concept - this is probably the biggest issue I discovered from testing

- Ui not feeling intuitive in some areas

- no on cared about notes screen

- Some voiced worries about privacy and data security

The testing revealed promising results; there's clearly potential in this concept, though transforming it into a genuinely useful product remains challenging. One significant obstacle is measuring effectiveness—unlike other applications where success can be quantified through clear metrics, improvements in attention and time management are largely subjective. Beyond user testimonials stating that Enso helped them use their attention better, it's difficult to establish concrete measurements of success in this domain.

So to make it easier, the concept should be focused down, find what's most interesting and get this working beautifully. So what's the strategy?

**Strategy going forward**

Okay, so we got Enso to MVP - got it tested and built out the core features I had in my head. However, the problems of managing attention and focus are a little esoteric, and if I actually want people to use the product, the why and how of the concept needs to be clearer. There are 2 strategies I see going forward:

- Focus it down and make the value very precise and clear; this is wise for getting some initial interest and users. Then once some people are using it, expand it outwards to explore some of the areas I found more interesting.

- Option 2 is to keep it broad, allow users to really frame it how they want to frame it and use it in their own way.

I actually like this approach, but I think it's much harder to design for and potentially runs into more problems and leaves me going slightly mad and running around in design circles. So the plan is to design an Enso V2 over the coming 3 months, likely on with focus on a desktop application with a more focused use case and value prop, and see if I can get some interest there.

**Outro**

So the brainstorming continues; I now know that a companion that knows you and engages with you in a playful way is interesting and has potential, but how to apply that to meaningful problems is still to be fully figured out.

Thanks for reading, this is just part 1 introducing the project, but I'll be sharing more about developments, how I built certain elements in the project and more. Stay tuned!


Other Articles

More to read