Talking with an inventor through his archive.
Museums and archives are starting to let visitors talk to AI versions of real people. Mort is built to answer only from the archive, and my research checks whether it does.
The Immersive Archive is a project at the USC Mobile & Environmental Media Lab, led by Scott Fisher, that preserves the history of virtual reality. The lab rebuilds early devices as simulations people can step into in VR, such as Morton Heilig's Sensorama and Ivan Sutherland's head-mounted display.
Heilig's papers came to USC in 2017, twenty years after his death, and are held in the USC Hugh M. Hefner Moving Image Archive. The collection fills eight boxes. Among them are the Idea Books he kept from 1943 into the 1980s and recordings of his lectures.

- The collection
- Eight boxes
- The Idea Books
- 1943 to the 1980s
- At USC since
- 2017
The lab is now extending the archive from the devices to the ideas behind them. Mort is an agent that answers visitors' questions as Heilig, from his own papers, and points to the item in the archive each answer comes from. Heilig's family approved the project. The aim is to let people explore the history of VR by using the early machines and by asking the person who imagined them.
The knowledge base behind Mort, and checking his answers.
Mort is the work of the whole lab, and connecting the parts into one agent was done by the lab together. My part is the pipeline that turns the archive into Mort's knowledge base, from transcribing the manuscripts to the retrieval Mort answers from. I also worked on Mort's first-person voice, and on how he declines questions, with other researchers on the team. The VR reconstructions and the MetaHuman character are made by others in the lab.
Building Mort led to the topic I now study: how to check an agent that speaks as a real person. I check it on two axes. Archive fidelity is whether an answer agrees with Heilig's archive. Character fidelity is whether it sounds and reasons like him. I designed the evaluation for both and am writing it up as a paper, Faithful to the Record, Faithful to the Person? Archive and Character Fidelity in a Conversational Agent of Morton Heilig, now in preparation.

From Heilig's papers to Mort's answers.
Mort is built around a knowledge base. An ingestion workflow I built in Dify fills it from the archive. When a visitor talks to Mort, the conversation runs on Estuary, the lab's open-source framework for real-time conversational agents, which calls the knowledge base whenever a question needs the archive. Connecting the knowledge base to Estuary was joint work across the lab.
From the archive to the knowledge base
The lab's archivist digitizes each item and catalogues it with a six-digit item number and its file type. The workflow then routes each item by its format. A vision model transcribes the handwritten notebooks and scanned pages, and describes the photographs. Typed documents have their text extracted, and audio recordings are transcribed from speech. Video is never described by a model: the archivist writes a description and a link for each video.
Every passage that comes out of a branch carries its item number and a link to the source file. This is what lets Mort cite the archive, and what lets anyone check an answer against the page it came from. The knowledge base uses multimodal embedding, so the image of each original page is stored next to its transcription and retrieval can return the page itself.
Done by a modelDone by peopleAutomated, no model
Heilig's handwriting is the hardest material. Multimodal language models do most of the reading here, and they bring problems of their own. A model sometimes refuses a page because of its content filter, which is why refused pages go to a fallback model. Their output also always reads fluently, so a misread word looks as convincing as a correct one and is hard to catch in proofreading.
From a question to an answer
A visitor's question first reaches Estuary, which holds Mort's character profile and the memory of the conversation. When the question needs the archive, it is rewritten into a search query, and the knowledge base returns the four passages that look most relevant, ranked by similarity. Mort answers from those passages in the first person and cites their item numbers. When the passages do not support an answer, he says the archive is silent instead of filling the gap.
A question that does not need the archive, such as a greeting, is answered from the profile and the memory alone. Only answers that go through the knowledge base can be traced to the archive. Mort's knowledge ends in May 1997, when Heilig died, and output guardrails check each reply before the visitor sees it.
No archive needed: answered from character and memory
Archive fidelity and character fidelity.
The research is practice-based. The problems below came up while building and refining Mort, and the evaluation grew out of them.
Speaking for someone who cannot answer back
Mort speaks in the first person as a man who died in 1997 and cannot correct him. The limits on what he says are part of the design for that reason. Heilig's family approved the project and will read the character transcripts, so the people closest to him have a say in what he is made to sound like. His knowledge ends in May 1997, so he is not made to comment on what came after. When the papers have no answer he says so, because a visitor has no way to tell a filled gap from a real one. Every answer that comes from the archive carries its item number, so the visitor is not asked to take Mort's word for it. The case the evaluation cares about most, an answer that sounds like Heilig and departs from the record, is the one that misleads a visitor most easily, and it puts in Heilig's mouth a view he may never have held.
Two axes
Each answer is checked on two axes. Archive fidelity asks whether it agrees with Heilig's archive as it is on the original pages. It is judged claim by claim, since one answer can mix supported and unsupported claims. When the archive has no answer, Mort keeps archive fidelity by saying so, and when the archive gives different accounts at different times, by reporting both. Character fidelity asks whether the answer sounds and reasons like Heilig as he comes across in his own writing.
Crossing the two axes gives four cases. The one a visitor is least likely to notice sounds like Heilig and departs from the record, because it is convincing.
Character fidelity
Sounds like Heilig, but departs from the archive.
Faithful to the archive, and sounds like Heilig.
The archive itself can be wrong. Those answers are flagged separately.
Knowledge Heilig could not have had, from the language model.
Faithful to the archive, but not how Heilig would say it.
Archive fidelity
A faithful answer that is still false
In a 1994 lecture, Heilig said that a hundred thousand people died in the bombing of Bremen. Published records give a far lower number. In archival terms the lecture is authentic but not reliable on this fact. Mort, faithful to the record, repeats the figure in Heilig's voice, so the answer is right on both axes and still false. Answers like this are flagged as a problem of the source and kept apart from Mort's failures, following the distinction between faithfulness to a source and factual accuracy.
Tracing a failure to its source
To find where a failure comes from, each answer is traced along a chain from the original page to Mort's reply, and the failure is assigned to the earliest link where it goes wrong. Common RAG evaluations check whether the retrieved passages are relevant and whether the answer follows them. They take the knowledge base as given, so failures in coverage and transcription fall outside them.
Testing Mort
Mort is tested on a fixed set of questions, each with a gold answer tied to archive item numbers. The questions range from facts in a single document to answers that need several documents, and include questions the archive cannot answer. Each answer is scored for faithfulness to the gold answer, correct citations, correct refusal and knowledge leakage, and a second rater will score a subset.
Questions the archive cannot answer are not all alike, and each kind calls for a different response.
The record is silentThe archive has no record of it.
Say that the archive is silent.
UnderspecifiedThe question does not say which year or which notebook.
Ask which one is meant.
SubjectiveWhat he felt about people or events.
Offer more than one reading, or say whose view it is.
False premiseThe visitor asks about work he never did.
Correct the premise first.
Refusal is tested in two versions on the same questions. A cold refusal says it does not know and closes the exchange. An in-character refusal says the record is silent, points to what the archive holds nearby, and stays in Heilig's register.
For character, Mort is interviewed in character and the sessions are recorded word for word. The review is planned with a psychologist and with Heilig's family, who read the fixed transcripts against a written protocol adapted from InCharacter. The report will state how many reviewers there were, since the sample is small.
The transcriptions in the knowledge base are being proofread first, and results will be reported after that.
A scripted demo.
A scripted playback of how Mort is designed to behave, based on Heilig's patents and his 1955 essay, all public documents. For each question the documents are checked, and the agent either answers and shows its evidence, corrects the question, or declines and says why.
Disclaimer. This is a scripted demonstration written for this page. It is not connected to the Immersive Archive, to Dify, to Estuary or to any lab data, and no language model runs here. The answers are fixed text that paraphrases public documents. They illustrate the intended behaviour; they are not Morton Heilig's words and not output of the real agent.
Ask
Pick a question
Some can be answered from the documents and some cannot.
Sources checked
Documents: Heilig, M. L. (1955) The Cinema of the Future, Espacios; US Patents 2,955,156 (1960), 3,050,870 (1962) and 3,469,837 (1969). Answers paraphrase those documents and nothing else.
Mort in VR, with a voice.
Mort answers in text today. In a prototype on Slack, he can already bring up archival images and video during a conversation. The lab is building him as a MetaHuman character in VR with real-time voice, so that visitors can speak with him.
The larger goal is a Mort who guides visitors through his own archive in a headset, as an immersive documentary, with each answer traceable to the page it came from.
Outputs so far
- A working prototype of Mort in the lab.
- A paper on archive fidelity and character fidelity in Mort, in preparation.
- The same approach to building a knowledge base from an archive carries over to Memory Space: Chinatown AR, where I contribute to the knowledge base and the language model.
Technical appendix: retrieval tests and the validation cycle
Retrieval tests
Retrieval is checked before answers are scored, since a wrong passage spoils everything after it. The planned tests:
- Whether the right item comes back, and how much of what comes back is needed.
- Moving the correct passage to different positions in the list, to see whether the drop in accuracy for passages in the middle reported by Liu et al. (2024) holds on this archive.
- Raising the number of passages while tracking recall and answer quality together.
- Running the same settings on a second archive, to separate the model from this collection.
Similarity search has no sense of how good a source is. A patent and a note written twenty years later can look the same to the retriever, so the plan is to label items by source type and let a patent outrank a late recollection.
Character review
The review scores linguistic style, knowledge, personality and way of thinking, the dimensions used for role-playing agents, and adds two for a historical figure built from an archive: how Mort handles disagreement, and what he does when the archive runs out. The interview method comes from InCharacter, which was validated on fictional characters with crowd-sourced personality labels. For Heilig the reference is his own writing and the judgement of people who knew him: stronger evidence, from a much smaller sample.
One validation cycle
- Freeze a build, with every setting pinned.
- Run the fixed question set, with both versions of refusal.
- Label every answer on both axes.
- Trace each failure to its link in the chain.
- Log the settings, scores, failure tags and reviewer notes with the build.
Then change one variable and start the next cycle, so the difference between two runs has a single cause.
Transcription
Models from different providers transcribe the same page differently, which is one more reason every page is proofread against the original.