# People

> What is lastingly true about someone, what is going on now, and what to read before talking to them.

Geniffy files what it learns under the people and things it is about. Three calls read it back that way:
`profile()` for what is true about someone, `brief()` for what to read before dealing with them, and
`graph()` for what connects to what.

## profile: what is true about someone

```python
card = mem.profile("Priya Nair")
for trait in card["lasting"]:
    print(trait["statement"])
```

```ts
const card = await mem.profile("Priya Nair");
for (const trait of card.lasting) console.log(trait.statement);
```

`lasting` holds what stays true about them, and `current` what is going on just now. Each item has the
sentence it rests on (`statement`), what it is about (`topic`, such as `employer` or `job_title`), the
group it falls in (`bucket`, such as `work` or `preferences`), since when it has held, and `clash` when two
memories disagree about it. `grouped` lists the memory ids under each bucket, and `memories` counts them.

```json
{
  "subject": "priya nair",
  "lasting": [
    { "fact_id": 115, "topic": "employer", "bucket": "work", "value": "Lumen Labs",
      "statement": "Priya Nair works at Lumen Labs.", "since": "2026-10-05T03:50:55+00:00",
      "until": null, "clash": false, "inference": false, "corroborations": 1 }
  ],
  "current": [],
  "grouped": { "work": [115, 114, 111], "preferences": [113] },
  "memories": 4
}
```

## brief: what to read first

```python
brief = mem.brief("Priya Nair", limit=20)
```

```ts
const brief = await mem.brief("Priya Nair", { limit: 20 });
```

The memories about someone, newest and most load-bearing first, each with where it came from, up to
`limit` (1 to 200, default 60). `total` counts them, and `summary` is a short paragraph about them when
there is enough to write one, or `null`.

## graph: what connects to what

```python
g = mem.graph()
```

```ts
const g = await mem.graph();
```

`nodes` are the people and things the memory holds, each with how many memories are about it. `edges`
connect two of them, and every edge carries the ids of the memories that connect them, so nothing in the
graph is there without a memory behind it.

```json
{ "from": "lumen renewal", "to": "priya nair", "label": "Details", "memory_ids": [111] }
```

All three read one memory: yours, or the space the client is bound to.

Source: https://docs.geniffy.com/people
