> ## Documentation Index
> Fetch the complete documentation index at: https://docs.unpod.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Personal assistant

> Illustrative: an assistant where the agent is the interface and it remembers each user. What runs today, and what it waits on.

**Illustrative.** An assistant where the agent is the interface: a user
calls or chats, and it knows them from last time - their name, their last
request, what they prefer. Built by conversation-first startups.

## How it would work

**1. A message arrives**

The user calls, chats, or sends a WhatsApp message.

**2. Unpod knows who it is**

The channel handle resolves to one person, with every past conversation.

**3. The agent picks up from there**

It answers with that context, and acts through your APIs.

**4. The outcome is remembered**

The next conversation, on any channel, starts informed.

## The shape

```python Illustrative - not callable today theme={null}
person = unpod.entities.upsert(
    identities=[{"channel": "whatsapp", "value": "+91981..."}],
)
conversation = unpod.conversations.latest(person_id=person.id)
unpod.messages.send(
    conversation_id=conversation.id,
    channel="whatsapp",
    text="Booked: a table for two at 8 tonight.",
)
```

## What it waits on

| Piece | Status | Where |
| - | - | - |
| WhatsApp and SMS conversations (dashboard flows only; no SDK resource yet) | In build | [Channels](https://docs.unpod.ai/core-engine/channels.md) |
| Conversations API | In build | [Conversations](https://docs.unpod.ai/core-engine/conversations.md) |
| Cross-channel identity | In build | [People & identity](https://docs.unpod.ai/core-engine/entities.md) |

## Build it today

A voice-and-chat version runs now, with two separate memories:

* **Voice:** a voice agent with **Enable Memory** on (Agent Studio →
  Advanced) recalls past calls from the same number.
* **Chat:** the [Chat API](https://docs.unpod.ai/get-started/chat) keeps a conversation stateful
  when you pass the same `user` id - use your own user's id.

```bash theme={null}
curl -X POST "https://inference.unpod.ai/v1/chat/completions" \
  -H "Authorization: Bearer $UNPOD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"public:PB_...","messages":[{"role":"user","content":"Book my usual table"}],"user":"user_42"}'
```

The two memories are not joined yet. Joining them is what cross-channel
identity in the [Context Engine](https://docs.unpod.ai/core-engine/context-engine.md) is for.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.