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

# Personal assistant

> An agent that rings you at a set hour with your briefing - new mail, today's calendar and what is still open - and remembers what you tell it.

## What it is for

Every other template serves your customers. This one serves **you**. The
agent calls once a day, at the hour you pick, and goes through three things:

1. **new mail** - who wrote and what about (senders and subjects, not bodies),
2. **today's calendar** - in order, with times,
3. **what is still open** - whatever you asked it to remember on earlier calls.

Then it asks whether there is anything to note down. What you tell it is
stored and comes back in later calls - which is what makes it an assistant
rather than a news reader.

<Note>
  **This works on paid plans (Start and above).** A briefing is **one outbound call a day to
  one number** - yours - not a campaign. Campaigns (dialling a contact list)
  start at Business and are not used here.
</Note>

## What you need

| Item | Required | Notes |
| - | - | - |
| Start plan or above | yes | The Free plan has no telephony at all |
| A phone number assigned to the agent | yes | The **Telephony** page in the side menu - this is what it dials from |
| Your own phone number | yes | Where the briefing call goes |
| IMAP access to your mailbox | no | Without it the briefing skips the mail section |
| A private iCal address | no | Without it the briefing skips the calendar section |

## Setting it up

### 1. Create the agent

**Create agent → Personal assistant**. The form asks for your name (how the
assistant addresses you), what you do and what matters right now. That last
field earns its place: the agent uses it to decide what to flag in the
briefing.

### 2. Switch the briefing on

Under **What your agent can do**, enable **"Call me every day with a
briefing"** and set:

* **your phone number** in international format (`+48...`),
* the **time** in your own local time (`07:30`),
* the **timezone** (`Europe/Warsaw`),
* the **days** - weekdays or every day.

The same settings are editable later in the agent editor, under
**Integrations → Daily briefing**. Moving the briefing half an hour does not
mean recreating the agent.

### 3. Connect the mailbox (optional)

The briefing reads mail over **IMAP**, not OAuth, so it works with Gmail,
Microsoft 365 and any mail server you already pay for.

For Gmail: turn on two-step verification, generate an **app password**, then
enter `imap.gmail.com`, port `993`, your address and that password. The agent
reads **headers only** - sender, subject and date - of unread mail from the
last 24 hours. It never opens a message body.

### 4. Connect the calendar (optional)

The calendar is read from a **private iCal address**, the read-only link the
calendar itself hands out:

* **Google Calendar**: settings for the calendar → *Secret address in iCal format*,
* **Outlook / Microsoft 365**: Settings → Share → publish calendar → ICS link,
* **Apple iCloud**: make the calendar public and copy the link.

All-day and recurring events (`RRULE`) are expanded correctly; cancelled ones
are dropped.

### 5. Assign a number

The agent needs its own number, assigned on the **Telephony** page in the side
menu - that is what the call goes out from. Without one the briefing is
skipped, with the reason in the logs.

## Memory

With **"Remember what I tell it"** enabled, the agent gets three tools during
the call:

| Tool | When it is used |
| - | - |
| `remember_this` | You say something worth keeping, or ask to be reminded |
| `recall_memory` | You ask what it knows, or refer to an earlier call |
| `complete_task` | You say something is done |

Notes come in three kinds: **fact** (durable), **task** (something to do) and
**reminder** (a task with a date). Open tasks come back in every briefing
until you say they are handled. Memory belongs to the agent, not to the
calling number - this is one person's assistant.

## How it works underneath

A background sweep runs every minute and looks for agents whose briefing is
due now, in **their** timezone. For each one it:

1. claims the day in Redis (so two workers cannot both dial),
2. checks the plan, the balance and whether the agent has a number,
3. **fetches mail, calendar and open items before dialling**,
4. places the call, handing the gathered material over as call context.

Step 3 happens before the phone rings on purpose: you answer within three
seconds, and an IMAP round trip inside that window is dead air.

<Warning>
  A briefing more than **15 minutes** late is skipped rather than placed. If a
  worker was busy for an hour, an 8:45 call with a 7:30 briefing is worse than
  no call at all - the calendar it would read out is already wrong.
</Warning>

If a source fails - the mailbox rejects the password, the calendar does not
answer - the agent says so in one sentence and moves on. A briefing without
mail is still worth the call.

## Privacy

* The mailbox password and calendar address live in the agent's configuration
  and **never reach the prompt** or the transcript.
* Only message headers are fetched - sender, subject, date.
* Stored notes belong to the agent and are visible to anyone in your
  organization with access to it.


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