Opinion

Generative Intimacy: The Architecture of Synthesized Desire

AI companions did not get better at pictures. They got better at remembering. A guest thesis on the cognitive shift, and the unglamorous engineering that makes it work.

Guest post — CTO, thebestpornai.com. The views are the author’s own and do not represent an endorsement by The Best Blog Ever.

The mainstream debate about AI companions is stuck on the wrong question. Critics and boosters both keep asking whether AI will replace human relationships — a binary that misreads what is actually happening.

AI does not replace. It removes a bottleneck that has constrained imagination for as long as media has existed. From cave paintings to photographs to streaming video, the viewer was always a passive consumer, limited to what an external creator chose to frame. Generative media moves the user from spectator to director. That is a change in the medium, not a substitute for people.

Call the result Generative Intimacy: a synchronous feedback loop in which a synthetic system adapts to, remembers, and reflects a user's emotional and cognitive patterns in real time.

The engineering thesis that follows is the interesting part. Not because the subject matter is provocative, but because building this well requires rejecting most of what the industry assumes about media platforms.

Part One

Memory is the product

A companion that forgets is not a companion. It is a typewriter.

The meaningful breakthrough of the last two years was not image resolution. It was persistence — systems that retain not just the text of a prior conversation but its emotional context, and that surface it appropriately weeks later.

That distinction matters more than it sounds. An interaction that carries forward stops being transactional and becomes narrative. The same shift shows up in every product category that has ever added memory: the tool becomes a relationship with the tool.

This is also where the engineering gets hard, and where most implementations fail. Retrieval over a long conversation history is not a solved problem. Naive approaches stuff everything into context until cost and latency collapse. Better ones summarise aggressively and lose exactly the specific detail that made the memory feel personal. The systems that work treat memory as a ranked, decaying store rather than a transcript.

Part Two

Reject the pipeline you were told to build

Here is where I depart from standard practice.

The default architecture for any video platform is a multi-bitrate adaptive streaming ladder: ingest, transcode to six renditions, webhook orchestration, a segmented delivery layer, a heavyweight player. It is what every reference architecture recommends. For most products it is the wrong call — expensive, slow to ship, and a permanent operational tax.

We threw it out.

Direct object-storage delivery. A single uploaded rendition served straight from Cloudflare R2 behind short-lived signed URLs, with edge caching. No transcode step at all. The tradeoff is real: we cannot adapt bitrate to a degrading connection. In exchange, upload-to-playable is near-instant, the cost curve is flat, and there is no orchestration layer to page someone at 3am.

Client-side metadata capture. Width, height, orientation, and duration are probed on the client at upload time and written directly to Postgres. No server-side re-derivation. This sounds minor and is not — it eliminates an entire class of async job, along with its queue, retries, and failure states.

Native playback. The <video> element with minimal custom controls. No video.js, no hls.js. Every player library you add is a bundle you ship to every visitor to solve a problem most of them do not have.

The principle underneath all three: fewer moving parts wins. Speculative scalability is a tax you pay every day for a problem you may never have.

Part Three

The state model

One architectural invariant governs the client:

  • DATA is an immutable seed catalogue. It is never mutated in place.
  • vstate.live is a mutable overlay — views, likes, moderation state — updated in real time.

Every mutable read checks the overlay first and falls back to the catalogue. That single rule buys a fully real-time UI with no separate cache tier, and it makes the data flow legible: there is exactly one place where mutable truth lives, and one place where it does not.

Most state bugs I have shipped came from blurring that line. Making it an invariant rather than a convention is the difference between a rule and a suggestion.

Part Four

Security is not a later phase

Two things here are worth more than the rest of this article combined.

Row-level security in the database. Unpublished or unmoderated content must be unreachable at the data layer, not merely hidden by the frontend. If your access control lives only in application code, then every frontend bug is a potential disclosure. Enforcing it in Postgres RLS means a client-side mistake produces an empty list rather than a leak. We learned this from a legacy client bug, which is the expensive way to learn it.

The attribute-decoding XSS vector. This one is genuinely under-discussed. Our frontend permits zero inline event handlers — no onclick, no oninput, ever — backed by a strict Content Security Policy. But the subtler issue is string transport through DOM attributes.

Standard HTML entity encoding is insufficient there, because browsers decode attribute values before JavaScript evaluates them. An entity-encoded payload is decoded by the parser and then handed to your JS as live text. The fix is a matched URI-encoding pair applied at the boundary — encode on write into the attribute, decode on read in JS — so the parser never sees anything it can turn back into executable content.

If you take one thing from this piece, take that one. It applies to any application that puts dynamic strings into markup, which is nearly all of them.

Part Five

What the numbers actually say

A caveat on evidence, because this space is full of confident claims with nothing behind them.

There is one frequently-cited data point comparing model families: a StartupHub.ai analysis reporting that platforms built on newer diffusion models show roughly 12 percentage points lower churn and about 80% more sessions per user than those on older ones.

Treat that with the caution it deserves. It is a single vendor-side analysis of 196 users, with no published time period, no methodology, and no significance testing. It is suggestive, not settled. It is also frequently misquoted as "12% better retention," which is a different quantity — a 12-point drop in churn from 40% to 28% is a 30% improvement in retention, not 12%.

The directional claim is plausible and matches what I see in production: visual fidelity affects retention because human perception is unforgiving of small anatomical errors. But "plausible and consistent with my experience" is the honest strength of that claim, and I would rather say so than dress it up.

The Thesis

“Fewer moving parts wins — and memory, not resolution, is what changed the medium.”

The frontier here is not image quality. It is the combination of persistent memory, real-time responsiveness, and an architecture simple enough that a small team can actually operate it.

Most of what I have described is deliberately boring: skip the transcode ladder, push state enforcement into the database, encode strings at the boundary, keep one immutable source of truth. None of it is novel. All of it is the difference between a product that ships and a reference architecture that never does.

The interesting questions in this space are not really about generation at all. They are about memory, consent, and what it means to build systems that people form attachments to. Those deserve more rigor than the discourse currently gives them.

More opinion at The Best Blog Ever, and related coverage across artificial intelligence.

Adam Green

CTO, thebestpornai.com

Guest contributor. Published by The Best Blog Ever; the analysis is the author’s own.

// More OpinionWhat Would Carl Sagan Ask ChatGPT?