---
title: "Sources"
description: "Every way to get your material in, and what happens to it once it's there."
source: https://hiy.ai/docs/sources
---

# Sources

A twin answers from your sources and nothing else. This is how material gets in.

Sources belong to your **account**, not to one agent: add something once and any
of your agents can draw on it. This page is about getting material in;
[Knowledge and Agent knowledge](/docs/knowledge-library) is about sharing it
between agents and keeping some of it off your public twin.

## Where this lives

Knowledge is your list of sources, with **Add a source** at the right of the
page title. It opens the add form, and **Back to sources** in the same place
brings you back:

- **Sources** — Everything your twin has learned from, what state each one is in, an **In answers** switch on each row that holds it back or puts it back in without opening it, and a way to remove any of them. A line under the heading adds the states up — *9 live · 1 waiting · 1 held back* — so you can see at a glance whether anything is waiting for a train without opening a group. Press a title to open it. Past eight sources you also get a filter on title and type, because a list you have to scroll is a list you stop checking. With more than one agent it splits in two — what this agent takes **From Knowledge**, and what was **Added here**.

- **Add** — Opened by **Add a source**: the ways in below, plus bulk import.

No tabs here. **What it knows** and **Guardrails** are questions about
one agent — what *that* agent has made of your material, and what it will
decline — and this page is your account's, with no agent in context to answer
them for. They live on the agent's own Knowledge page instead: see
[Agent knowledge — one agent's view](/docs/knowledge-library#agent-knowledge-one-agent-s-view).

On an agent's own knowledge page, those are tabs under the title beside
**Sources**, and the sidebar lists them underneath while you're on it, when it
is showing names rather than icons. The add form is never a tab there either:
it's the **Add a source** button.

Each panel has its own address, so the one you use is linkable and
bookmarkable: `/app?view=knowledge&panel=sources` and `…&panel=add`. A plain
`/app?view=knowledge` link — including every one you saved before the panels
existed — still works and opens Sources, and so does any panel name the hub
doesn't have. Buttons that mean *add something* take you straight to the add
form — including **Add a source** at the right of the page title, on this
screen and on Knowledge Hub alike. On the add form that button reads **Back to
sources**.

**An empty Sources tab is six doors, not a paragraph.** Before anything is
added, the tab lists the six ways in — paste text, an assistant's memory, a
file, a web page, a YouTube link, a LinkedIn export — each a press that opens
the add form on that way. On an agent that already draws on Knowledge Hub material
the tab isn't empty, so it says so instead.

## Opening a source

Press a source's title and it opens in a panel over the page, with the list
still beside it: the same search, the kind filter as chips, the same grouping. You
can move from one source to the next without closing anything, which is the
point of it — checking six sources is six presses rather than six rounds of
open, read, close.

What the panel shows you, for the source you're on:

| | what it's for |
|---|---|
| The address it came from | Opens the original page in a new tab. Uploaded files say which format they were; anything typed in by hand says so. |
| **Title** | What answers cite this source as. Change it and press **Save title** — it takes effect straight away, it isn't index content, and it doesn't spend a train. |
| **Hold back** / **Put back in** | Takes this source out of the next rebuild, or puts it back in. It leaves the index at the next train — until then your twin can still answer from it — and costs nothing against your plan in the meantime. The same switch sits on every row in the list as **In answers**, so holding one back doesn't need the panel open. |
| **What we read from it** | The text hiy actually extracted. |

**"What we read from it" is a sample, not the document.** You get the first
part of it — enough to see whether it came out right — and when there's more
than that the panel says so underneath, with the source's full word count.
That's what it's for: a PDF whose text layer came out as garbled ligatures has
a perfectly normal word count and lists exactly like a good one. The list
gives you the first line of it under each title, so the garble shows before
you open anything; the panel is where you read enough to be sure.

**Closing it.** The **✕** in the corner, a tap on the dimmed area above or
below it, or **Esc**. On a phone the panel opens straight onto the source, with
**All sources** taking you back to the list — and the list keeps its place, so
you land where you left rather than at the top of it. Pressing the source
you're already on takes you straight back to it.

Sources under **From Knowledge Hub** don't open here. They belong to the
account rather than to this agent, so this agent's screen offers the one thing
it can decide about them — **stop using** — and the rest lives on
[Knowledge](/docs/knowledge-library).

## Ways to add material

- **Paste** — The fastest start. Drop in text and it's stored immediately, and answerable from the next train.

- **A blog post** — Give it the URL of one page — a post, an article, your about page — and it reads that page. One URL is one source; for a whole archive, use bulk import below. An address you already hold — on another agent, or in your Knowledge Hub — joins this agent instead of being read again, so the hub never lists the same page twice. Once a site is in, it gets its own screen — see [syncing a website](/docs/website-sync) for re-reading it on a schedule.

- **YouTube** — It uses the transcript, so a talk you gave becomes something your twin can quote. YouTube often refuses to hand us one, so the tab has a second field: open the video, press ··· → Show transcript, copy it, and paste it into **Transcript**. Give the video address too and the source stays tied to it. A pasted transcript is used in place of the fetch, and reads just as well.

- **Files** — Documents you upload — PDF, Word, Markdown or plain text, up to 20 MB. The tab says so before you choose a file, not after.

- **LinkedIn or a CV** — The fastest way to give a twin your background.

- **Bulk import** — Several sources at once, when you're starting from an archive rather than a blank page. Point it at a blog or a YouTube channel, pick what you want, and the import runs on our servers: you can close the page as soon as it starts, and everything you picked will be read and stored by the time you come back — however long the list is, and with nothing quietly dropped off the end of it. If a page or a video can't be read, that one is listed with the reason and the rest still come in. Nothing is answerable until you press Train, so you choose what your agent keeps.

- [An assistant's memory](/docs/from-your-assistant) — The facts ChatGPT, Claude or Gemini already hold about you, pasted in and reviewed fact by fact. It answers questions but never shapes your twin's voice.

**Starting from nothing** — until your twin has its first source, your Overview
opens with four starting points rather than a list of instructions: import a
page you wrote, paste something you wrote, upload a PDF or a doc, or bring what
ChatGPT or Claude already knows. Each one opens into a single field and adds
the source from that page, so the first source never depends on finding this
tab. They go away as soon as one exists.

## What happens after you add one

Adding a source doesn't rebuild your twin on the spot. The source is stored and
counted straight away, and it joins what your twin knows at the next
[**train**](/docs/training). Until then the twin keeps answering from the
material it already had — adding something never takes a working twin offline.

**A train runs when you start one,** from **Train → Train now**, and it takes
minutes. **Train overnight** — a switch on the Train stage, off unless you turn
it on — hands that job to the night in your own timezone, gathering everything
waiting into one rebuild. With it off, what is waiting stays waiting until you
press Train. Nothing is lost in between either way: the queue just grows, and
the Train stage shows how many changes are in it.

**A small first source is the exception.** An agent with no index yet can't
answer anything at all, so if what you add is small enough to build on the
spot, it is — you add it, the page comes back, and it is answerable. A big
first batch waits like everything else: material you imported but haven't
looked at yet is never trained on because a later, unrelated add happened to
find an empty index. The message you get on adding always tells you which
happened, so you never have to guess.

While a change is waiting, the row carries a **Waiting** chip and asking about
it can still get an honest *I don't know*. The chip clears when the train
lands. Bulk import waits like everything else, and that is a change: it used to
train once at the end by itself. It runs on our servers, reads every page you
picked, and leaves the lot **Waiting** — because a site usually holds a good
deal you would not want answered from, and the moment to say so is when you can
see what actually came in. Your agent is not answering from any of it until you
press Train.

A source you untick in **Train** reads **Held back** instead, and keeps reading
it until you tick it back on. Held material stays in your list and stays out of
every train — it is not waiting for anything, and it costs nothing against what
your plan holds. Ticking it back on puts it in the queue like any other change,
so the next train picks it up.

A source with no chip is live and answerable, which is most of your list most
of the time. That's why the settled state is the one with nothing to say: a
badge on every row would be furniture, and the state worth interrupting you for
is the one where your twin can't answer yet.

**Removing works the same way, and that matters more.** A removed source reads
**Removing** and leaves the index at the next train — until then your twin can
still answer from it. If you need it gone now, remove it and then press **Train
now**; that rebuild is what actually takes the material out.

**Removing is never paused.** Your plan includes a number of trains a month,
and running out pauses learning — but never a train that is taking something
out. A source you delete leaves the index at the next train whatever your month
looks like, and **Train now** stays available for it. Taking your
own material down is not something you can run out of.

Deleting the last source empties the index and takes the page off the air at
the same time — at that train, not at the moment you press delete, so a twin
you have shared keeps answering until the rebuild lands.

**Note:** Your material trains your twin alone. Never a shared model, never someone
else's twin, never sold.

## If a rebuild fails

Rebuilds retry on their own, and most problems clear themselves. When one runs
out of retries, Knowledge says so at the top of the page: **Last rebuild
failed**, when it happened, and — the part that actually matters — the date of
the index your twin is still answering from.

Nothing is lost and your twin does not go offline. The previous index keeps
answering the whole time, because the swap only happens at the end of a build
that worked. What you lose is the newest material: anything added since that
date is not in its answers yet. **Try the rebuild again** does not start one
from here: Knowledge holds no training quote, so the same words take you to the
[Train](/docs/training) stage, which states what a rebuild would add and what
your month has left before anything is spent. The notice clears itself once a
train finishes.

If it keeps failing, the source added just before it is the usual cause —
remove it, rebuild, and add it back on its own to see.

## Sources and citations

A grounded answer cites the passage it used, and a visitor can open it and read
the surrounding text. hiy's own summary of your material is never quoted to a
visitor and doesn't count as one of your sources — only what you actually wrote
does.

You choose whether visitors see the sources behind answers at all. Hiding them
hides the citations from visitors — your own test chat still shows you
everything. What no setting hides is an honest gap: when your twin says it
doesn't know, it still shows how many searches it ran first.

## When your sources don't cover something

The twin says so rather than guessing, and shows how many searches it ran first. That
question then queues for you, and answering it once turns your answer into a
source the twin cites from then on. What goes into that source is your answer
and the subject of what was asked — never the message somebody typed, which
stays in your queue where only you read it.

Removing a source takes it out of the next rebuild — it and everything built
from it are gone once that build swaps in.

Correcting one works differently, and the difference matters. Your correction
is stored as a source of its own, and it is **authoritative**: where the two
come up together, your twin answers from the correction — its wording, its
numbers, its dates — and doesn't repeat the outdated claim or split the
difference. It's matched to a question like any other source, and it's promoted
above the rest whenever it's relevant enough to be worth citing, so write it in
the words somebody would actually use to ask.

What a correction does *not* do is delete anything. The material you corrected
stays in your sources, stays searchable and stays citable — so a citation
somebody already opened still resolves, and you can still see what your twin
used to answer from. It's out-ranked, not erased. If you want it gone as well,
remove it too.

## Q&A pairs and CSV import

An agent's Knowledge list, under its sources, has a **Q&A pairs** section: each
row is a question and the answer your agent gives, with **Remove**. Pairs come
from two places: ones you taught from [Unanswered](/docs/unanswered) (marked
**Taught from Unanswered**) and ones you imported (marked **Imported**). With
none yet it says "No Q&A pairs yet. Teach one from Unanswered, or import a
CSV." A long answer shows two lines with **Show more**.

A pair is a correction, so it wins over the rest of your sources where they
disagree (see above). Removing one takes effect at the next train, like any
removal.

**Import Q&A** opens a sheet:

1. **Choose a CSV file.** Two columns, `question` and `answer`; a header row is
   optional, and `title,content` (the order Crisp exports) works too. Up to 500
   rows, 1 MB, questions up to 300 characters and answers up to 4,000. Each
   answer needs at least 5 words, the same floor as a correction.
2. **Check the preview.** Nothing is written yet. Every row says **New**,
   **Replaces** (you already have a pair with that question, ignoring case and
   extra spaces) or why it can't import, such as "The answer needs at least 5
   words." or "Same question as line 2." The top line adds them up, for example
   "38 new · 4 replace · 2 can't import".
3. **Import.** The button counts the rows that will go in ("Import 42 pairs");
   rows that can't import are skipped. Afterwards it says when the answers are
   in use, in the same words as teaching from Unanswered.

**Export CSV** downloads the pairs you imported, in this same format, so a file
you export can be edited and imported again: a question that is already there
is replaced, never doubled. Pairs you taught from Unanswered are listed but not
exported, because their question is a visitor's own message, which is never
stored in your sources.
