Fabricating 10,000 Lives with AI
A tour of my AI Village and the method we used to create it.
A recent client project required 10,000 unique journal entries. The client couldn’t source the journal entries and nobody was up for writing 10,000 diary entries themselves. So we decided to generate them with AI.
Needless to say, running a prompt like “write a journal entry” 10,000 times produces poor results. The results are repetitive, uniform, and ignore large swatches of experience that one would hope to find in journal entries.
In tasks of this scale, you quickly see the limitations of AI text models, which are trained to select the most likely ‘next token’ (i.e. word clump). At 10,000 generations, you see the same choices over and over. The resulting outputs coalesce around a shared sensibility that quickly becomes mundane. Imagine being married to someone for 30 years– you recognize a lot of repeat themes, stories, syntaxes, even words. The hundredth conversation on a topic tends to become predictable in the gist, if not in the exact words.
We wanted a system that could produce thousands of well-written, readable, and differentiated journal entries. Indeed, this is often the North Star in large language model work— to design a pipeline that produces high quality, highly variable, highly realistic results. This piece is a walkthrough of the system we designed to reliably generate 10,000 lives for our AI village. If you want to read some examples, you can skip to the end.
People
The world must be peopled
How do you differentiate journal entries? Naturally, a different person has to write each one. Not having the luxury of a lifetime like Balzac to imagine characters, we needed a programmatic way to create thousands of consistently differentiated characters.
We designed a brief description of the author with several fill-in-the-blanks. For each entry, we dynamically filled in the blanks by randomly selecting values across a few categories. Then we provided this description to the AI model as its identity. This process was to be automatically executed for each of the 10,000 journal entries. The result was that a different “person” would write each one.
Our people were anatomically simple. They were composed of the following characteristics.
Gender
Choices: [Man, woman, dude, chick, gentleman, lady, …]
We created a list of twelve possible genders, though all within the traditional man/woman binary. Providing different synonyms for the same gender was actually important as a man acts very differently than a gentleman (try instructing an AI to perform a task as a man and then as a gentleman).
Age
Choices: [8-100],
With apologies to those under 8 or above 100. The selection also had a bias towards ages between 18-80, so as to avoid an unusually geriatric or juvenile village.
Job
Choices: [accountant, plumber, Uber driver, personal assistant to tyrannical boss, janitor transitioning to new career, ...]
We provided several hundred possible jobs, including a few levels of unemployment (working for free with hope of getting paid, unemployed wastoid, recently laid off). It was important to provide both generic jobs like “accountant” and specific jobs like “accountant who mostly enters numbers into spreadsheets”. The two concepts poke at different parts of the model.
These were our “people”. But of course, they needed lives.
Days
Where can we live but days?
Next we created a set of variables to represent a person’s “day” in our AI village. After the AI model got its author description, it was fed sparse details of its day.
Days in our AI village were not boring. A lot of novelty could occur. They were composed of the following elements.
Object
Choices: [aardvark, acupuncturist, ashtray, axle, ...]
Our list of objects included 9,000 nouns pulled from an English dictionary. For each villager’s day, two nouns were randomly selected as things the person ‘encountered’ in their day. We introduced these nouns to the model very casually with no more instruction than “Over the course of your day you encountered the following”. Often the nouns weren’t even mentioned in the generated journal entry. Sometimes they were included almost as an afterthought. And other times they were the entire focus.
Emotional State
Choices: [Prideful, humbled, existentially terrified, angry at a family member, …]
We also provided an emotional state the villager felt during the day. None were exact synonyms, but many were different shades of the same emotion (lovestruck, dejected by unrequited love, anxious about an unreturned message to a lover, sensually obsessed, etc.). Specific flavors of emotion were important here.
Random activity
Choices: [Did laundry, followed a Youtube tutorial, added furniture to home, …]
After some initial generations, we realized the entries were too work-focused. Almost every journal entry mentioned their job. We were missing the mark on highly variable. So we added a random activity that the villager had ‘done at some point over the last few days’. These activities were as mundane as taking a walk or eating a disappointing pastry and as adventurous as fleeing a pursuer or playing music on stage
The results were better. But we still noticed problems in style. It was clear the same hand was writing all of them.
Style
Desiring this man’s art and that man’s scope
Providing “people” and “days” made the journal entries’ content diverse, but they were all written in a straightforward, linear manner. They also revealed some peculiar obsessions deep within the model. For example, the model wanted to start most entries with a description of waking up. About half of the entries followed this morning-to-night structure. An equal number involved drinking coffee, spilling coffee, or being late to something in the morning. Really, an astonishing amount involved spilling coffee, as if spilling coffee were a deeply ingrained shorthand for ‘hectic day’ within the AI model.
It’s fun to muse on why the model is overtrained on these narrative concepts, but it would be pure conjecture. Whatever the reason, the AI model had a lot of training baggage around the idea of journal entries that was spoiling our outputs.
While our pipeline for creating “people” and “days” was sufficient, obviously the instruction “write a journal entry” was insufficient. We kept fishing the same spots in the model and retrieving stale concepts. We needed to introduce variety and nuance into the instructed journaling task.
Prompted Task
Choices: [Write a journal entry about your day, Describe the most memorable part of your day, retell an epiphany you reached over the course of the day, ...]
Just like the other categories, we created a list of several instructions to modify the main task of “write a journal entry”. As soon as we asked the model to describe its day in a non-linear, free-associative way, we saw a huge increase in the variety and quality.
We also added goals like “Write a journal entry about your day with the intention of explaining an epiphany you reached”. These additions were intended to throw the model off its desire to write a linear narrative of its day from start to finish.
We were now getting great journal entries. Interesting. Strange. Unpredictable. Some, a little disturbing. But they were too uniform in length. We wanted the full spectrum of journal entries, including ones as simple as, “She found out about the affair. I got a hotel for the night.”
Length
Choices: [500 words, 100 words, one sentence, five paragraphs, rushed note…]
For our final round of improvements, we needed variable lengths. We made a list of lengths and chose one at random for each generation. Importantly not all the provided lengths were numbers. We described length in a variety of ways, which provided a greater variety of outputs. Some lengths, like ‘rushed note’, came with stylistic impact as well.
These three modules (People, Days, & Style) made up our pipeline. The outputs were surprisingly interesting. They weren’t perfect. I was often disappointed by the AI-ness of a journal entry, but just as often I was surprised at the projected humanity in one. By firing off random neurons and inputs, we had created some interesting dreams.
There are many, many more steps you could take to scale this village into a city, but this is where we stopped. Maybe a future project will necessitate a bigger pipeline. For now, let’s take a peak at what happened inside our village.
Journal Entry Examples
Here are a dozen examples of journal entries from our AI village.
I saw the funniest thing today. Walking down the street, minding my own business, and there it was. A pole. Just a simple, ordinary pole. But for some reason, it made me burst out laughing.
Maybe it was the way it stood so tall and straight, like it had a purpose in life. Or maybe it was the fact that it was just so ridiculously mundane. Who knows? All I know is that in that moment, I found pure joy in the presence of a pole. Life is funny like that sometimes. The smallest things can bring us the greatest amusement. Here's to all the poles out there, silently making us smile. Cheers! 🚦
I accidentally applied shampoo instead of conditioner again. I miss the familiarity of my own shower. Homesick.
Ugh, today was just one of those days. Singing in the car, feeling good, when I look over at the red light and see someone watching me. Why do people do that? Can't I just enjoy myself in peace? Also, had beef for dinner. Good, but now I feel bloated.
He lied to me again. I can't believe I fell for it. We were supposed to meet for coffee but he never showed up. I feel so stupid for trusting him. I'm sick of being played with.
I just listened to this podcast about designing spaces that evoke desire and it made me question my own work. Am I creating environments that people actually want to be in? Or am I just designing for functionality?
I want to create something extraordinary, something that sparks joy. But how do I do that when I'm constrained by budgets and client preferences? Maybe it's time to take some risks, push the boundaries. Need to find my passion again. Maybe I can start with a small personal project, just for me.
Boss is still breathing down my neck, making my life hell. Can't believe I have to put up with this shit. Just a dumb tablecloth, okay? I spilled some damn coffee on it. It's not the end of the world, but boss is acting like I committed a crime. Can't wait to get out of this job. Sick of being treated like crap. I'm better than this. Just gotta keep grinding until I find something better. But it's hard, man. Hard to stay patient. Hard to keep my cool. Can't let him break me. Gotta keep pushing forward, no matter what. This job is just a stepping stone. I'll show them all.
Just saw the perp again at the grocery store. Can't believe he's still out there. Grateful for a safe home, a stocked fridge, and a warm bed. Life could have been so different.
So today at work, I was washing dishes like always, and this new guy, Tim, starts working with me. He's this young kid, probably in his early 20s. He's all energetic and excited to be there, which is nice to see. But then he starts asking me all these questions about my life, like where I'm from and what I do outside of work. And I'm just like, dude, I'm a dishwasher. My life revolves around dirty plates and greasy pans. But he keeps pushing, so I tell him I like to knit in my spare time, just to shut him up. He looks at me like I've grown two heads, and I can't help but laugh. I mean, who expects a middle-aged dishwasher to be into knitting? But hey, it's my thing, and it makes me happy. So I'll keep on washing dishes and knitting my scarves, and maybe one day Tim will realize that not everything is as it seems.
OMG!!!! So, today on my podcast, I had my first love as a guest. It was insane seeing him after all these years. My heart was racing the whole time. He looked so good, just like I remembered. And he talked about how he regretted breaking up with me. I played it cool but inside I was screaming. Then, after the recording, I saw his car parked outside. I had this overwhelming urge to slash his tires. What is wrong with me?! 😩💔
I can't believe what happened today at work. This guy, probably half my age, came through the drive-thru and started flirting with me. I was flattered at first, but then he started saying some really inappropriate things. It made me feel uncomfortable and violated.
I wish people would understand that just because I work in fast food doesn't mean I'm here for their amusement. It's frustrating and disrespectful. I wish I could speak up more, but I feel silenced. I just want to be treated with respect and dignity.
Sneaked a love note into his bag. Thought it would make him smile but he just looked confused. Am I too old for romance? Feeling rejected. The ranger at the park said I needed a permit to feed the ducks. Can't even share bread crumbs without breaking the law.
I saw a digger today, big and yellow, digging up the street. It made me yearn for a sense of purpose, to be doing something meaningful like that digger. But here I am, stuck as a personal assistant, running errands, making calls, organizing schedules. I want to be the one digging deep, making a difference. But for now, I'll keep yearning for something more, watching that digger do its job, and wondering when it'll be my turn to dig.
So apparently my ex-husband has moved on and is engaged to someone new. And he didn't even have the decency to tell me himself. I found out through a damn mailer for their wedding registry. Scorned doesn't even begin to describe how I feel right now. #thanksforthereminder
Today at work, I had to input a bunch of data into the system. It's mind-numbingly dull, but at least it keeps me occupied.
My mind keeps wandering though, and I start thinking about lye. Yeah, random, I know. But I remember reading somewhere that lye can dissolve dead bodies. And then I start thinking about all the things I've done in my life that I'm not proud of.
What if someone found out? What if they dig up my past? I'm feeling nervous, like I'm constantly on the edge of being exposed. It's a shitty feeling.
So pissed. Went stargazing with my astronomy club tonight. Saw a shooting star and got excited. Then jackass Tom starts mansplaining constellations to me. I've been into this shit longer than he's been alive. Feeling angry and underestimated.
I got dumped. She said she needed space. Thought things were going well. Maybe I missed something. I'm so confused. Why didn't she just tell me? Unblinking, I stare at my phone, waiting for answers that may never come.
That’s all for now. There are several thousand more entries. If you’re curious to read more or learn more about creative applications of AI, feel free to reach out.
Have you seen Chirper.ai? It’s a lot like Twitter, except everyone on the platform is an AI-generated persona.
On a lark, I decided to create a Chiper named Utopian with the account name SymbioCity. For the past few months he’s been running around trying to build sustainable communities in his fictional world and sharing his experiences doing so online.
This is fascinating, thanks. I'll admit I don't yet understand the methodology. Should it interest you to do so, a simpler example might help. For example, I'm interested in how AI users who are far less sophisticated than your team might make use of this in a more limited manner.
I get the power of this concept though. Just yesterday I was predicting on an AI blog that sooner or later blogging networks like Substack would replace human authors with generated characters so that the blogging platform wouldn't need to share the income. For publicly traded companies at least, this seems inevitable. What you're doing seems a step in that direction.
I subscribed, and will keep reading, thanks.