Lintel.

Personal AI system · in daily use

Twelve AI specialists, one memory, and nothing forgotten between sessions.

Most AI assistants forget everything when you close the window. Lintel doesn't. It runs a household's paperwork, plans and projects through specialist agents that share a single written memory, so any session, on any device, starts exactly where the last one stopped.

The short version

What it is, in plain words

Think of a small office where every desk has an expert: money, legal paperwork, the car, school, the next career step, software projects. They never talk over each other, they all write in the same notebook, and nobody is allowed to say "done" until an independent checker has seen the proof.

Lintel is that office, built from AI agents. You talk to it in normal language, from a desktop, from a phone, or over Telegram. It decides which expert should answer, that expert reads the notebook first, and whatever matters is written down before the conversation ends. Come back a week later, ask "where were we?", and you get the exact next step.

48 daysin real daily use, not a demo
1,000+versioned changes to the shared memory
200decisions on record, each with its reason
100+independent QA verdicts in 12 days, about 4 in 10 a FAIL
81automated tests across 15 suites
0remote repositories or sync services holding the memory

Counted from the system's own history on 14 Oct 2026. The page is updated as the system grows.

What it actually does

Picks up where you left off

Every task has a written "next step". A new session loads the live state automatically, so there is no re-explaining and no "remind me what we decided".

Sends you to the right expert

"A warning light came on" goes to the vehicle specialist. An official letter goes to legal first, because it has a deadline, then to finance for the cost.

Watches the school portal

Twice a day it reads the school portal the way a parent would, read-only, and sends one short digest: new homework, exam results, schedule changes. Attachments are downloaded; nothing is printed until a parent asks.

Turns bills into a calendar

One payment table is the only source. A script turns it into colour-coded calendar feeds the family subscribes to, so a due date is never a surprise.

Serves the whole household over Telegram

One system, one shared memory, more than one person. Each person in the house reaches it from their own Telegram account and is routed to their own entry point, with their own privacy scope. Agents never message anyone directly; they leave a question in an inbox and collect the answer later.

Refuses to call unproven work "done"

A separate QA agent checks every "fixed" or "ready to ship". If there is no test that fails without the fix, the answer is FAIL, however confident the developer sounds.

The specialists

Who sits at which desk

Each specialist is an agent with a narrow job, its own instructions and exactly one memory file it is allowed to write. The router hands work to them; it never edits their files.

Career & learning
Study plan, publishing pipeline, portfolio. Asks for numbers, not impressions.
Finance
Statements, household budget, payment schedule. Decides the order of payments and explains the knock-on effect.
Legal
Contracts, official paperwork, deadlines. Shared by the whole family.
Strategy
Weighs new ideas and timing, says go or no-go, and hands approved work on.
Software portfolio
Which project gets the evening, what gets paused or killed, what ships next.
QA
Independent verification. Never writes code. PASS, FAIL or UNPROVEN.
Vehicle
Maintenance log, mileage, insurance and inspection dates, repair quotes.
Home
Housing search and moving logistics. Also shared by the whole family.
Household member's assistant
Another adult in the house has their own assistant on Telegram, with its own scoped access to the shared memory.
School
School portal, homework, exam results, long-range study plan.
Early years
Routines and development notes for the youngest member of the house.
Wellbeing
Stress, sleep, focus and the weight of a busy week. Listens first, then suggests one small, concrete step.

For engineers

Architecture

Five layers: entry points, a router, specialists, a verification gate, and one shared memory underneath, with plain deterministic tools doing everything that must not depend on a model's mood.

Drawn from scratch for this page. No names, files or screenshots from the real system appear here.

1 · Routing: a table, not a guess

The router is the main session itself. An instruction file that loads in every session, in every working directory, holds the routing table: each specialist with its topics and the everyday phrases that should reach it even when the topic word never comes up. "Which job should I take" is career; "the light came on" is the car.

Two rules keep it predictable. When a request touches two domains, the one carrying a legal or payment deadline goes first. And the router never writes a specialist's memory file. It can read anything; it may only write the shared state.

2 · Memory and continuity across sessions

Memory is a folder of Markdown files in git. Every project, area and long-running thread is one file with machine-readable front matter: status, priority, revenue, last_touched, next_step. The project board is generated from those fields and never edited by hand, so it cannot drift from its sources.

A session-start hook injects the live-state file into the model's context before the first word. It is capped in size and fails silently: a broken memory must never break a session. Anything older than 21 days and still "active" is flagged as stale.

The one rule the whole system enforces: if it wasn't written down, it didn't happen. Decisions go into a log with their reasoning the moment they are made, not at the end. A session closes with a fixed sequence: journal entry, update every touched file's next_step, update live state, commit. That is how desktop sessions, remote sessions from a phone and background jobs all share one memory without a database or a sync service.

3 · Bridges that don't care about the channel

More than one person in the house uses the system through Telegram, so it is multi-user in practice. Each person's Telegram account is routed to their own entry point, either a full assistant with its own file scope and its own conversation, or the AI-free notes inbox, and all of them sit on one shared memory. Telegram was chosen because the family already lives there; the interesting part is the contract in front of it: an inbox with three verbs.

VerbWhat happens
askAny agent leaves a question, optionally urgent, optionally with a delivery time. With no time given it goes out within about a minute.
inboxThe asking agent collects answered items addressed to it.
closeOnce the answer is processed, the item leaves the inbox.

No agent needs channel credentials, and swapping the channel means rewriting one adapter, not twelve agents. If the assistant judges a moment wrong for a question, the item is retried 30 minutes later instead of being dropped. Messages longer than one short sentence are sent as a Markdown attachment, a rule enforced in one shared module.

The assistant behind that channel runs with the least privilege that works: a fixed allowlist of files it may read, a single file it may write per shared specialist, no shell, none of the owner's settings, hooks or plugins loaded, and only messages from one known account are processed. The owner's own notes bot goes further and has no AI at all. It appends what it receives to a file and replies "noted"; the next session processes the notes. A chat account that can only write into a queue has nothing to leak.

4 · Verification: the QA gate

The QA agent exists because of a specific failure. In a mobile project a memory leak was "fixed", the check reported zero, and the app still died on the device for two more builds. The test double didn't behave like the real library, so the test was testing itself.

So the gate is independent of the session that wrote the code, and it works to fixed rules:

  • A fix is proven by a failing test. In a throwaway git worktree the fix is reverted, the test is run, and it must fail. A test that never fails is blind, and blind means FAIL.
  • Read the real thing behind every stub. A mock has to model the library code it replaces, not the library's function names.
  • Run the tests yourself. "Tests pass" from the developer session is a claim, not evidence.
  • Hardware-only evidence gets an honest verdict. When proof needs a hand on a device (touch, sound, a purchase), the gate writes one precise test scenario for a human and records UNPROVEN until the result comes back.
PASSFAILUNPROVEN

In its first 12 days the gate logged more than 100 verdicts across apps, sites and the system's own scripts. About 4 in 10 were FAIL and another 2 in 10 UNPROVEN. That ratio is the point: a gate that always says PASS is decoration.

5 · Privacy as a design constraint

The memory holds a family's real life, so privacy is architecture, not a setting.

  • No remote. The git repository has none, by rule. Backup is a full git bundle, verified, then AES-256 encrypted with file names hidden, written to an external disk. The last six are kept. The password is never written anywhere the system can read.
  • No secrets in memory. Passwords, keys and card numbers never enter the vault. A reference file records only where a secret lives, never its value.
  • Least privilege per agent. Each specialist writes one file. Shared specialists reach another household member's assistant through scoped sub-agents with their own allowlists.
  • Read-only automation. The school-portal watcher drives a headless browser like a parent would and listens to the JSON the pages already load. It never opens a message, because opening leaves a "seen" mark. It compares the unread count before and after every run and raises an alarm if the count drops.
  • Narrow egress. Children's data never goes into a web query. Outbound news alerts carry public headlines only. No API keys anywhere in the system: agents run on a consumer subscription through the official CLI.

6 · Model for judgment, code for everything else

A recurring line through the system: if a step must be identical every time, it is code. The daily news scan lets the model do one thing, search and return JSON; deduplication, file writes and notifications are deterministic Python. The portal watcher and the statement parsers use no model at all. Where behaviour is a policy rather than logic, the rule lives in Markdown that the specialist owns and the script reads at run time, so changing a rule never means changing code.

Design decisions

What was chosen, and what it costs

DecisionWhyThe price
Markdown in git, not a database or vector storeHumans and models read the same file. Every change is a diff with a message. No server to run.Files grow. One specialist's memory has already outgrown a single read and needs sectioned reads; summarising and archiving is next.
One writer per memory fileAgents never overwrite each other, and every line has an owner who can be asked why it is there.Cross-domain facts are duplicated or linked, never edited in place by someone else.
Specialists instead of one big promptNarrow instructions stay short and testable, and each domain keeps its own rules and tone.One more hop per request, and a routing table that has to be maintained by hand.
An independent QA agentThe writer of a change is the worst judge of it. Separation turns "looks done" into evidence.Slower: 4 in 10 claims bounce. That cost is accepted on purpose.
Inbox contract in front of chat channelsAgents stay channel-agnostic and never hold credentials.Answers are asynchronous; an agent has to come back for them.
Local first, no cloud syncA family's records stay on hardware the family owns.One machine is a single point of failure, covered by encrypted offline backups rather than by replication.
Built for one householdReal users, real stakes, daily feedback.No SSO, no role-based access or audit-grade logging. A company deployment would need all three.

Built with

Stack

Claude Code (sub-agents, session hooks, slash commands) on a consumer subscription · Markdown and YAML front matter · git · Python, mostly standard library, about 14k lines including tests · Playwright, headless · OS task scheduler · Telegram Bot API as today's chat channel · iCalendar feeds.

What's new

Changelog

Lintel keeps growing, so this page does too. Newest first.

  1. Published.This page went live at lintel.kenanislamoglu.com: a public, anonymised write-up of the architecture, updated as features land.
  2. Bridge delivery on the sender's clock.Questions go out immediately unless a time is given; a "not now" from the assistant means a retry in 30 minutes, not a lost item. Covered by its own test suite.
  3. Shared specialists.The second household member's assistant can consult the legal and housing specialists through scoped sub-agents, each with its own read allowlist and a single writable file.
  4. School-portal watcher.Read-only, twice a day, one digest per run, unread-count alarm. Its first version was failed by the QA gate the same day and passed after the fix.
  5. Chat bridges and the notes bot.Inbox contract (ask, collect, close), an AI-free notes bot for the owner, long messages as Markdown attachments, and a daily news scan where the model only searches.
  6. QA gate and software-portfolio specialist.Nothing is called done without an independent verdict.
  7. Encrypted offline backup.Full git bundle, verified, AES-256, six generations kept.
  8. Calendar feeds.One payment table becomes colour-coded subscriptions.
  9. First specialist agent.Career and learning, with its own memory file.
  10. Day one.The shared memory, the session protocol, the session-start hook and the generated project board.