Skip to content

DAC Architecture

The Individual Experience AI Engine is organised as a Distributed Adaptive Control (DAC) system (Verschure, 2016). Four layers, from raw signals up to long-term memory, with a meta-control layer that orchestrates them per request.

Think of the engine as a mind with four levels of response, each slower and more considered than the one below:

  • Somatic: the senses. Raw intake of what the visitor does.
  • Reactive: reflexes. Fast, generic responses that need no history, including a sensible welcome for first-time visitors.
  • Adaptive: learning. Builds a model of this visitor and uses it to personalise.
  • Contextual: long-term memory. Holds rich, durable knowledge of the visitor and the collection.

A meta-control layer sits on top and decides, for each request, how much to lean on each layer: pure reflex for a newcomer, deep personalisation for a returning visitor. Nothing is hard-coded; the balance is learned from how visitors respond.

flowchart TB
    meta["Meta-control<br/>(contextual bandit: tunes weights + mode)"]
    subgraph layers["DAC layers"]
        direction TB
        ctx["Contextual: long-term memory<br/>digital twin · KG · vector DB · goals · narrative"]
        ada["Adaptive: learning<br/>state estimation · preference discovery · fusion"]
        rea["Reactive: reflexes<br/>keyword search · faceted filters · cold-start seeding"]
        som["Somatic: raw intake<br/>clicks · scroll · dwell · context · explicit intents"]
    end
    meta --> ctx & ada & rea & som
    som --> rea --> ada --> ctx
Layer Role Detail
Somatic sensors capture interactions (clicks, scrolls, dwell, observed content), runtime context (app, device, geo, timestamp), and explicit intents ("similar to this", "near me", "save")
Reactive reflexes simple retrieval (keyword search, faceted filters by date/type/geo/author) and cold-start seeding via topic discovery
Adaptive learning user state estimation, preference discovery, and recommendation strategies that fuse content with context (see hybrid scoring)
Contextual long-term memory the user digital twin, Knowledge Graph, vector store, goal alignment (student to educational timelines, researcher to deep archive), and narrative generation

Inputs: user identifier (user_id or anonymous session_id) plus context (application, device, geo, timestamp). Outputs: a ranked recommendation list, brief explanations, and structured logs.

Meta-control. On each request the meta layer orchestrates the DAC layers. It can be powered by a lightweight learning loop (a contextual bandit) that tunes how strongly each strategy contributes and whether to serve single items or a narrative path, improving fit without hard-coding one strategy. See hybrid scoring for the weights it tunes.

This conceptual architecture maps onto the implemented, typed codebase documented under Implementation: the Somatic and Reactive concerns become event capture and normalization, the Adaptive layer becomes signal building and ranking, and the Contextual layer becomes the stores behind the ports.