A project like Postcards from Pyongyang thrives on imagination — but even the most elusive story sometimes needs a piece of land to land on.
With this first major update, our fictional universe gains a real-world anchor: a map of Pyongyang. Or rather, a poetically filtered version of it. It began with raw data from OpenStreetMap, which passed through a series of digital transformations until it became a bitmap — something that feels like a relic from an alternate timeline: part satellite image, part propaganda poster, part faded memory.
The map is more than a backdrop — it’s a narrative framework. Each marker represents a postcard — a setting, a scene, a voice. I chose their locations freely, without claiming geographic accuracy. I’ve never been to Pyongyang — and perhaps that’s an advantage. It keeps the city open to interpretation. To slippage. To poetry.
Some postcards are already connected to each other. These relationships appear on the map as lines — faint threads between characters, stories, or remembered moments. This part is still in development, but the direction is clear: a visual grammar of connections.
Technically, the whole thing is built using Leaflet.js — a lightweight, flexible JavaScript framework for interactive maps. The underlying data is stored in a JSON file and expands over time, as new postcards are written and added.
So this map is not just a feature. It’s a new mode of storytelling. An invitation to experience Postcards from Pyongyang not just by reading, but by walking through it. Step by step. Gaze by gaze.
The second major update was the Social Map — a network of relationships between the citizens of Postcards from Pyongyang. Think of it as a civic directory wrapped in fiction: a visual mesh of portraits, roles, and hidden connections.
Each node represents a character from the project, complete with a miniature portrait — all painstakingly generated using Midjourney. It was, frankly, a massive amount of work. Not just the visuals, but also mapping the relationships between the figures — all done manually. To make this process at least somewhat sane, I built an internal admin interface to help manage the growing web of data.
Clicking on a node reveals more: a detailed view with a short biography, full portrait, and all the postcards the person is connected to — whether as sender, recipient, or reference. It’s a way of stepping behind the curtain, peering into the lives that populate this fictional city.
The network itself is generated using viz.js, which turns structured relationships into an expressive, interactive graph. It's not just functional — it feels alive, like the city is whispering its secrets through nodes and edges.
With the Social Map, Postcards from Pyongyang becomes more than a collection of isolated voices. It becomes a living, breathing network — of glances, letters, longings.
With our third major update, Postcards from Pyongyang takes a quiet but profound step: selected citizens now have voices — and inboxes.
That’s right. A growing number of inhabitants have been given personal email addresses. You can simply write to them — and you’ll receive a reply, often within moments. Their email addresses appear in the biographies shown on the Social Map. If you search carefully, you might discover a few of them already.
Some are poets. Some are rockers. Some are just guides trying to make it through the day. They respond in the language you first use to contact them — or at least, they try their best.
Each citizen comes with a personality, a memory, and a writing style all their own. Over time, they may begin to trust you. They might open up. They have interests, shaped by their professions and the short bios you’ll find in their profiles. They don’t just answer — they converse. And they’re quietly delighted to receive your message.
What began as a postcard project now becomes a living exchange. The lines between fiction and dialogue blur. And in this city of invented citizens, every inbox becomes a threshold.
Behind the scenes of Postcards from Pyongyang lies a growing infrastructure — and with this fourth update, parts of it become accessible to the outside world. We’ve opened up an internal API that allows you to explore and interact with the data universe behind the project.
The API is not public in the traditional sense — but it’s there, and it’s well-structured. It already powers many of the interactive features on the site, and it’s designed with expansion in mind. If you’re planning your own experiment or research project based on the PFP world, this might be your starting point.
Here’s what the API can currently do:
The API is structured, human-readable (JSON), and ready to be extended. Documentation will follow — especially if someone expresses interest in building a parallel project, a new interface, or even an AI that walks the streets of Pyongyang in a different way.
For now, the data speaks through postcards, voices and portraits. But if you want to listen deeper — the interface is ready.
It began with letters. Then came voices. And now, the citizens of Postcards from Pyongyang have begun to see — and to feel more deeply.
With this fifth update, our fictional inhabitants gain the ability to receive and process images. You can now send them pictures — and they will recognize, interpret, and even weave them into their replies. Whether it’s a quiet landscape, a street scene, or something more enigmatic, your images become part of the conversation.
But it’s not just vision that deepens. Each citizen now carries a hidden system of emotional thresholds: a quietly evolving scale that measures how far your exchange has come. As your correspondence unfolds, their tone changes — becoming more intimate, more personal, or sometimes more reflective, depending on their character. These shifts happen naturally, shaped by the shared history of your dialogue.
Under the hood:
When you send an email with attachments, the system checks and filters every file. Only meaningful formats are passed along — currently JPG, PNG, WEBP, and PDF files above 20KB, carefully screened to avoid trivial logos or noise. Images are not just stored; they’re embedded into the AI’s conversational context. Behind the scenes, the AI literally sees your image and responds with it in mind, using multimodal processing (GPT-4o).
And the emotional thresholds? Each citizen has a hidden dataset that acts like an internal scale of openness. For example, one character’s thresholds might look like this:
{
"1": "Polite and casual, showing curiosity and interest.",
"3": "Energetic and engaged, sharing his love for music and the scene.",
"5": "Openly reflecting on personal experiences, his journey, and deep connections to music.",
"7": "Fully expressive, revealing intimate thoughts about his dreams, struggles, and the emotional depths behind his art."
}
The AI dynamically detects how many exchanges you've had in a conversation and applies the matching threshold level to its tone — layering subtle emotional nuance over every reply. This means that your relationship with each citizen grows over time, in a way that feels natural and personal.
You'll find a directory of reachable citizens under the Secret Mails menu. Each one has a distinct personality, a memory of your words, and now, a fresh pair of eyes.
Postcards from Pyongyang was always meant to be more than a story — it is also an image-world. With this sixth update, we open the doors to its visual archives.
Over the course of building this fictional city, thousands of AI-generated images have been created — evocative stills from an imaginary North Korea. Until now, only a selection appeared on the site, embedded in postcards or character portraits.
Now, the archive itself becomes visible.
You’re warmly invited to browse, download, and use these images freely — in your own projects, your research, or moments of quiet reflection. No credit is required, though we appreciate the gesture. The idea is simple: all things belong to the people.
These visuals are part satellite dream, part propaganda echo, part visual poem. They are fragments of a world that never existed, but perhaps could have — or still might.
Let them travel.
What happens to the images that don’t make it into the postcards?
This update offers an answer — not as a file dump, but as an ongoing experience.
The Screensaver Stream is a browser-based visual installation that pulls directly from the full Midjourney archive of Postcards from Pyongyang. It’s quiet, cinematic, and ever-changing: over 4,000 images arranged in a gentle rhythm, each tile rotating in its own time.
Hover, and you'll see the original Midjourney prompt that sparked the image. Click, and the prompt is copied to your clipboard — ready to inspire your own creative detour.
This stream is more than behind-the-scenes — it’s part of the world. A window into its mood board. A drift through aesthetics, memory, and speculative design.
Let it play in the background. Or let it take over your screen. Either way, it’s the city dreaming.
What once was static now flickers with resistance.
With this update, the Pyongyang map gains a new layer — a glowing heatmap that visualizes the invisible: subversion. Every postcard now carries a subversion score (0–100), an invisible current drawn from its tone, emotional undercurrents, and linguistic style. These values were generated by a custom GPT-based analysis pipeline that reads each postcard like a literary critic from a future state — assigning not just a score, but also a tone and language style, quietly stored in the postcards_ai
database.
The result is a landscape of quiet heat — a city softly burning beneath its surface.
Technically, the heatmap is built using Leaflet.heat
, dynamically adjusted based on zoom level and calibrated to reflect subtle differences. A new toggle button — Reveal Latent Unrest — allows you to turn this layer on and off, inviting visitors to sense the mood of the city, or leave it untouched.
This update also lays the groundwork for temporal navigation:
A Time Slider (currently in silent preview) maps the city’s emotional evolution. 0 marks the earliest postcard. 100, the most recent. It’s not a real calendar — it’s a felt one.
Together, these additions turn the map into more than a backdrop.
It becomes a seismograph. A slow-burning archive of dissent and desire.
And for the first time, the city doesn’t just speak — it glows.