Musing and Rambling
tales of fevered imagineering.
  • Home
  • About
  • Contact
RSS
corpus christi

programming chat, privacy, llm, self-hosting

corpus christi

darqlaird ⋅ June 7, 2026

Lemme spoil the lede: I have been running a language model over years of chat logs with my wife. Not to generate fake apologies this time (that was the Markov boyfriend incident, and we do not talk about it). To see what a machine could tell us about us that we were not able to see ourselves.

It started, as most of my terrible ideas do, with a question I could not shake.

Back in 2018 I cobbled together a self-hosted chat app because my wife and I needed a better way to coordinate groceries and childcare. The DIY Trinity in action: easy, frugal, better. What I did not appreciate at the time was that every "pick up milk" and "you forgot the thing" was also a data point.

After seven years of messages I had something I never set out to build: a longitudinal corpus of two humans communicating under the conditions of domestic partnership. Arguments about thermostat settings. Flirty check-ins at 2pm. The slow accretion of inside jokes. The occasional nuclear exchange at 11pm on a Tuesday.

Not the kind of data you share on HuggingFace. But a local LLM can read it, thoroughly and privately, without sending a single byte to a cloud server that will later try to sell me ads for couples counseling.

Point a local model at years of chat logs and ask it to do what a therapist does: look for patterns. Nobody needs an AI auditing whether you actually bought the oat milk. What matters is how people talk.

Who starts conversations, who ends them, how that shifts week to week. Tone drift, are messages getting warmer or colder over time, is there a seasonal pattern. (There is. December is rough.) After a tense exchange, how long until someone breaks the ice, and who does it first. Gottmanesque bid-tracking, except the corpus does not lie or get tired or charge by the hour. Each person has a vocabulary, a cadence, a set of tells. The model maps these. The slow gradient of affection, frustration, humor, and withdrawal across months and years, not a simple happy/sad binary but something more like a weather map. That is the output. Not a grade.

Relationship data is maybe the most sensitive data a person has. Uploading seven years of marital chat to OpenAI or Anthropic, even with their enterprise-privacy promises: non-starter. Not that I distrust their engineers. I distrust incentives. A company offering a free API for your marriage logs is already monetizing the whole arrangement.

So the whole pipeline runs locally. A quantized model on my own hardware. No network egress, no telemetry, the corpus never leaves the house, which is the point. The chat app was self-hosted because I wanted ownership of the data. The analysis layer is self-hosted for the same reason. Consistency is a virtue when the stakes are this specific.

When you have enough text from a person, and I mean enough, like hundreds of thousands of messages across multiple years and contexts, a local LLM can generate a personality profile that is uncomfortably precise. Not horoscope-tier. Therapist-tier, and a little unsettling about it.

It notices things like conflict style: do you escalate, withdraw, intellectualize? I had a working theory I was over-intellectualizing. My wife said I stonewall. The corpus, annoyingly, said we were both right. It notices affection language, not the Love Languages pop-psych version, but the actual behavioral patterns, when affection shows up and in what form: humor, logistics, a quiet gesture that means something. Stress markers: vocabulary shifts that correlate with external pressure, sentence length changes, emoji frequency dropping off. The machine sees the dead canary before you do. Conversational dominance: who talks more, who responds first after a fight, who controls topic transitions.

None of this is new science. Computational linguists have been doing discourse analysis for decades. What seems new, and I might be wrong about this, is that a sufficiently capable local model can run it on personal data without a funding grant or a fancy degree. You need the conversation history, the hardware, and the willingness to look.

What I keep coming back to: a rolling, multidimensional read on the state of a partnership, derived not from self-report (unreliable, as I know) or observation (biased, as I know) but from an unflinching look at the actual communication record. Something like a fitness tracker, but for the thing that actually matters.

Your Oura ring tells you HRV is down. The corpus analysis tells you repair-to-conflict ratio has dropped 15% over the last month. One of these is probably more actionable.

The model does not judge. It will not tell you to text more or tell you your wife is unhappy. It produces data, patterns, trends. The interpretation is still human work, and it should be, because the stakes are too high to outsource the meaning-making. But having the data at all is the thing.

Some of what the model surfaced was hard to look at. Patterns I would rather not have named. Asymmetries I had ignored. That gap between how I thought I showed up and how the text said I actually showed up.

Which is the whole point of self-hosting this kind of analysis. Not performing for a therapist, not feeding an algorithm that will reduce the marriage to an engagement metric. Raw signal, private and honest, so I can decide what to do with it.

The DIY Trinity applies here too. Easy: running on my metal, on my time. Frugal: no subscription, no per-query cost, no venture-backed relationship startup inserting itself between me and the truth. Better: ...

(The model does not get a vote on date night locations. We tried that. Once.)

The chat app started as a grocery list with a login screen. The Markov boyfriend was a dumb joke that turned out to have legs. And now this: a local AI pipeline that reads years of marital communication and produces something that feels like actual self-knowledge.

Whether it is or not is something I will have to get back to you on.

Corpus Christi: the feast of the Body. Two becoming one, made tangible. Turns out seven years of "did you take out the recycling?" is a kind of communion too. Less wine, more resentment, same basic structure.

All of it built on the same instinct: can I, though?

The answer, increasingly, is yes. Whether you should is a question for you and your corpus to work out between yourselves.

Trust me, I am a software engineer.

« reverse september Home » no look bread

↑