---
title: AI Coaching sidebar (interview prompts and artifacts)
---

# AI Coaching sidebar (interview prompts and artifacts)

## What it is

**AI Coaching** is a virtual project in Omniscio where you sit down with Claude for a structured interview — answering questions about a topic (your week, a project decision, a goal you're chasing) and, at the end, walking away with a saved **artifact** (a short written summary, plan, or reflection that Claude composed from the conversation). It lives in the sidebar like any other project. Selecting it swaps the main panel for an AI-Coaching-specific layout: a sub-sidebar on the left listing your interview prompts, in-flight sessions, saved artifacts, and archived sessions, with the matching content opening in the right pane.

The point is not just to chat with Claude — it's to capture the result. Interview sessions produce artifacts you can re-open later. Think of it as guided journaling with a memory.

**On a phone (mobile):** AI Coaching shows a **bottom tab bar** — **Dashboard / Sessions / Artifacts / Bookmarks / Profile** — pinned above the phone's home bar. **Dashboard** is the interview prompt cards (finished interviews collapse to compact single-row cards — badge, title, **View artifact**, ⋮ — so a long completed list stays scannable); **Sessions** lists your coaching sessions (tap one to open its conversation, just like any other mobile session); **Artifacts** lists your saved artifacts (tap one for the read-only mobile artifact view); **Bookmarks** lists your saved bookmarks (content, label, date) with a search box and, once you have labelled any, a label filter — plus the same add, label-edit and delete controls as the desktop pane; only the grouped-by-label view stays desktop-only; **Profile** shows your Core Profile, and lets you refresh it — the Regenerate control is icon-only on a phone, beside Copy — without waiting for the out-of-date banner to offer it (editing the profile text stays desktop-only). Every tab renders its content or an explicit empty state, so the pane is never blank. Tap a prompt's **Start interview** and the conversation opens; the back arrow returns you. (Archived / Prompts remain desktop-only.) On a **completed** card, **View artifact** opens a read-only view of that artifact right on your phone — the title, the formatted text, a copy button, and two read-only switchers: a **compression level** picker (Full / Key Points / Summary / Micro; a level that hasn't been generated yet is greyed out) and, once the artifact has more than one saved version, a **version** picker (v1 … latest) — with a back arrow to return. Switching a level just changes what you read on the phone; it does not change which level is fed into your other sessions. Editing, restoring, and deleting an artifact stay desktop-only. (Earlier builds showed a blank pane here, and the dashboard couldn't scroll past the fold on a phone — both fixed; see [ai-coaching-mobile-layout-contract.md](/.claude/memory/contracts/ai-coaching-mobile-layout-contract.md).)

## Where to find it

### Turning it on

AI Coaching is **off by default**. To enable it, open **Settings → AI Coach → "Enable AI Coaching"** and flip the toggle on. The virtual project row appears in the left sidebar immediately, no relaunch needed. Toggling it back off makes the row disappear, blocks every AI Coaching IPC call with "AI Coaching is disabled. Enable it in Settings → AI Coach.", and short-circuits any already-approved cli-pending artifact mutations still queued in the dispatcher (those land as permanent failures rather than executing against a now-hidden project). The default-off behavior is enforced at three layers (IPC handlers, settings-apply symmetric ON/OFF, cli-pending dispatcher) so the toggle is the real on/off switch, not just a sidebar-visibility flag.

### Coaching style

Once AI Coaching is enabled, a **Coaching Style** dropdown appears below the toggle in Settings → AI Coach. Three options:

- **Warm** (default) — affirming, patient, and gently paced. This matches the existing behaviour; no extra tone section is injected into the CLAUDE.md.
- **Neutral** — professional, balanced, and collaborative. A `<coaching_tone>` block is appended after the shared context in CLAUDE.md, instructing the coach to keep the tone respectful and focused.
- **Direct** — efficient, straightforward, and incisive. The injected block tells the coach to push for specifics and prioritise thoroughness over comfort.

The style takes effect on the **next session you start** — changing it does not alter sessions that are already running. Internally, `buildCoachingToneSection()` in `ai-coaching-claudemd-builder.ts` emits the XML block (or an empty string for `warm`), and the setting is read from `settings.aiCoachingStyle`.

### How to use it

1. **Open it.** Click **AI Coaching** in the left projects sidebar. The right side of the app splits into a sub-sidebar (left) and a content pane (right), the same shape as Quick Replies or Automations.
2. **Pick a section.** The sub-sidebar has four sections from top to bottom:
   - **Dashboard** — the landing card. Shows your interview prompts organized **so what's next leads** — an **In progress** tier (any live interview), then a **browse-by-theme** area (everything still to do), then **Completed** at the bottom (dimmed). A genuine first visit opens with a dismissible **welcome** (what this is, plus the three steps — pick a topic, have the conversation, keep what you discover); it shows only until you've engaged — one completed or in-progress interview, or a Core Profile, hides it — and because that check reads your saved history rather than a per-device flag, it won't reappear when you open Omniscio on a new phone or browser. Above the tiers a **journey strip** shows how far you've come ("2 of 8 complete" with a progress bar), your recommended **next step**, and the **Core Profile** milestone kept in view ("N more conversations to unlock your profile" until you reach three, then "your profile is ready"). Finishing a conversation — or unlocking your profile — marks the moment with a warm note; it only ever celebrates something genuinely new, never work that was already done. Completing **every** interview triggers a special **graduation** toast plus a persistent banner on the dashboard (dismissible); the banner stays until dismissed and persists across visits. **You browse the interviews by theme**: a filter bar (All · Foundation · Deep analysis · Problem solving · Work · Ongoing · Optional, each with a live count) plus a **search box** sit on top, and the interviews are grouped into theme sections beneath — pick a theme, or type to search, to narrow the list (a **Clear filters** button shows when nothing matches). Any interviews of yours that don't fit those themes land in a **More** group, so nothing is ever hidden. **No interview is ever locked** — every card is startable the moment you click it; a card that draws on earlier interviews simply shows a quiet **"Builds on …"** note (guidance, not a gate). Each available card leads with a small category label (Foundation, Work, Deep analysis, Problem solving, Ongoing, Optional) beside its colored dot, then the title, a short **pitch** — a one-line hook plus up to three "what you walk away with" points — and a **Start interview →** link whose arrow slides on hover. An **In progress** card swaps the dot for a **green** spinner (a live session, the same green a running session wears elsewhere in Omniscio) and shows just its hook above a phase-progress bar. A **completed** card is cleaner: just a "done" badge, the title, and a **View artifact** button on its face, with **Redo**, **Reset**, and — when the interview that produced it still exists — **Open chat** tucked into a **⋮** menu (no pitch, no category label, no "Quick check-in" shortcut). On a phone this card collapses to a **compact single row** — badge, title, **View artifact**, and the ⋮ — so a long finished list stays scannable instead of a stack of tall cards.
   - **Sessions** — your in-flight interview sessions, grouped by status (see below). Click a row and that session opens in the right pane, exactly as if you'd opened it from the main sidebar.
   - **Artifacts (N)** — the artifacts you've saved from past interviews, newest first. Clicking one opens the artifact editor in the right pane (described in detail below).
   - **Archived (N)** — sessions you've archived, flat list, newest first. Click to re-open in the right pane.
3. **Start a new interview.** From the Dashboard, click any prompt card — each one is titled (e.g., "Weekly review", "Project retrospective") and shows a short pitch (a one-line hook plus a few "what you walk away with" points) plus a **Start interview →** link at the bottom. Clicking the card **instantly** shows the interview's first message — an authored greeting that appears as Claude's opening turn with no waiting and no cost — then switches you into the **Sessions** section and selects the new row. The real Claude session doesn't start until you send your first reply; until then the row is a quiet draft you can leave and come back to. (See **Opening messages** below for how this deferred start works.)
4. **Run the interview.** Use the right-hand pane like any other Claude session — answer the questions, hit Enter, and Claude drives the conversation. When it has gathered enough material, the interview prompt teaches Claude to **write the finished document to a markdown file** (`~/Claude/ai-coaching/artifacts/<name>.md`) and to also show that same document inline in the chat as clean prose. Omniscio detects Claude's own file write and saves it — the new version shows up in the **Artifacts** section without you doing anything. If you want to nudge Claude to wrap up, hit the **Save artifact now** button at the top of the session pane: it sends a one-line message asking Claude to save the document to its file (and show it) right now. The button is debounced 5 seconds and disabled when the session is paused, archived, errored, or ended.
5. **Review your artifacts.** Switch to the **Artifacts** section. Each artifact row shows a title, a version number (artifacts can be re-saved into the same slot — version increments), and a date. Click to open the artifact editor in the right pane. From there you can edit the contents, switch to historical versions, restore an old version, copy or export the markdown, or delete the artifact entirely. Each of those flows is covered in its own section below.
6. **Export everything.** On the Dashboard, an **Export** button sits next to the progress header. Click it to save your entire coaching portfolio — all artifacts + Core Profile + bookmarks — as a single Markdown file via the native save dialog. The button is disabled when you have no artifacts. The export defaults to Markdown format with bookmarks and profile included; JSON is available via the CLI.
7. **Re-open old work.** The **Archived** section lists every session that's been archived (whether from this sub-sidebar or from elsewhere in the app — archive is a session-level state, not a sidebar concept). Click any row to re-open the conversation read-only.

### Personal & Professional tracks

When your interview library spans both **personal** and **professional** territory, the Dashboard's browse area groups the interviews into two labeled sections — **Personal** (relationships, identity, patterns, wellbeing) and **Professional** (career, ambitions, work) — with the usual theme groups nested inside each. An interview that fits both (foundations, ongoing check-ins, life-spanning goals) appears in **each** section, so nothing is hidden from either side.

- A small **All · Personal · Professional** selector sits above the theme filter (each with a live count). Pick one to focus the Dashboard on just that track; **All** (the default) shows both sections. Your choice is remembered on that device.
- The **first time** a real split is available, a gentle one-time card asks what you're here for — **Personal**, **Professional**, or **show me everything** — and sets the selector for you. Dismiss it any time; it won't nag again.
- If none of your interviews are specific to one track (for example a general-purpose library), the Dashboard simply keeps the flat theme view — no track sections, no selector — so nothing changes for you.

This is a way to stay in the zone you're comfortable with: someone who only wants career coaching can filter to **Professional** and never see the more inward interviews, while someone doing deeper personal work sees everything relevant to them. It's a view preference only — no interview is ever removed, and switching back to **All** brings everything into view.

## How it behaves

### Daily welcome message

The coaching Dashboard opens with a personalized greeting — "Good morning, {first name}" (or "Welcome back" if no display name is set) — plus a daily rotating message drawn from a pre-generated pool. The message changes once per day (deterministic by date, not on refresh) and stays the same all day.

A **Daily message style** dropdown next to the greeting lets you pick the category: **Motivational Quotes** (default), **Coaching Insights**, **Mindfulness Prompts**, **Stoic Philosophy**, **Humor & Light**, **Gratitude Prompts**, or **Challenge of the Day**. Your choice persists as the `coachingDailyMessageStyle` setting. Each category has 30 messages; the daily pick is a deterministic hash of the date + category, so you see the same message all day and a new one tomorrow.

The banner sits above the progress header in [DashboardHeader.tsx](/src/renderer/src/features/ai-coaching/dashboard-sections/DashboardHeader.tsx) and renders responsively (stacked on mobile, side-by-side on desktop). The message pool and utilities live in [daily-welcome-messages.ts](/src/renderer/src/features/ai-coaching/dashboard-sections/daily-welcome-messages.ts); the component is [DailyWelcomeBanner.tsx](/src/renderer/src/features/ai-coaching/dashboard-sections/DailyWelcomeBanner.tsx).

### Interview depth adaptation

The coaching system automatically adapts how deeply it probes based on the user's engagement history. Three signals are measured: average compaction-summary length (proxy for response depth), total coaching session count, and redo count (topics revisited more than once). These produce a depth level — **surface**, **moderate**, or **deep** — which is injected as a `<depth_adaptation>` section in the coaching CLAUDE.md alongside the tone section.

- **Surface**: simple follow-ups, structured options, comfort-first. Typical for new users or those who give brief answers.
- **Moderate**: balanced open-ended and concrete follow-ups, matching the user's energy.
- **Deep**: layered follow-ups, respectful assumption-challenging, cross-session pattern references. For engaged users with history.

This is fully automatic — no user setting. The depth assessment is computed fresh each time a coaching session starts or its CLAUDE.md is refreshed. If the engagement signal query fails (e.g. empty DB), the depth section is silently omitted and the session proceeds normally. Internally, `computeDepthAssessment()` in `ai-coaching-depth-tracker.ts` is a pure scoring function, and `getEngagementSignals()` in `bookmarks-profile.ts` runs the DB queries.

### API key requirement (and the missing-key banner)

The interview **chat** runs on whatever Claude account you're signed in with (an OAuth login is fine). But three background features — compressing each saved artifact into its **Key Points / Summary / Micro** levels, the per-artifact summary, and the **Core Profile** synthesis — call the Anthropic **Messages API**, which only works with an **API key** (an OAuth login can't use that endpoint). So AI Coaching needs a working Anthropic API key configured in **Settings → Accounts** for those to run.

Two things enforce this so the gap can't go unnoticed:

- **The Enable toggle won't turn on without a _working_ key.** Settings → AI Coach → "Enable AI Coaching" stays disabled until a usable Anthropic API key is present. "Usable" means the key actually decrypts and isn't blank — an account row whose stored key went unreadable (e.g. after a hardware/Windows change that reset the OS keyring) counts as _missing_, so the toggle stays off and the tooltip asks you to add or re-enter a key. Turning the feature **off** is always allowed.
- **A continuous banner inside AI Coaching when no usable key is set.** If the feature is on but no working key is configured, a non-dismissible amber banner sits at the top of the AI Coaching sidebar (and the mobile dashboard): _"AI Coaching can't build your profile."_ Your conversations still work and your artifacts are still captured — only the background compression / Core Profile are paused. The banner clears itself the instant you add a working key in Settings → Accounts (no reload needed).

If you add a key _after_ an interview already saved its artifact, that existing artifact won't retroactively compress — the levels generate on the _next_ save, so re-save it (or redo the interview once) to fill them in.

### Sessions section subgroups

The **Sessions** section sub-divides your in-flight interviews into status buckets — same precedence rules as the main projects sidebar so the UI behaves consistently across the app. From top to bottom, with later groups winning ties:

- **Needs You** — sessions where Claude is waiting on you (any status in the `ATTENTION_STATUSES` set: `needs_you`, `error`, `stalled`).
- **Active** — sessions currently `running`, `starting`, or `ready` (deferred-spawn sessions waiting for the user's first reply).
- **Snoozed** — sessions you've snoozed until a future time.
- **Scheduled** — sessions with a scheduled response queued (Send Later).
- **Paused** — paused sessions.

Precedence is **Snoozed > Scheduled > Needs You > Paused > Active** — a snoozed session that also needs you appears under Snoozed, not Needs You, mirroring the main sidebar exactly. Empty groups are hidden. Archived sessions never appear here — they have their own section. Sessions in transient states like `ended` are not surfaced (consistent with the main sidebar's default view). `ready` sessions (deferred-spawn coaching interviews awaiting the user's first reply) ARE surfaced under the **Active** group.

### Semantic search

The **Search** button in the sub-sidebar opens a pane that lets you search across artifacts and bookmarks by meaning — powered by the same on-device ONNX embedding model used by global session search (`MiniLM`, cosine similarity, threshold 0.35). Type a question or phrase (minimum 3 characters, 300ms debounce), and results are ranked by semantic relevance with a percentage score badge. Click an artifact result to open it in the detail pane, or a bookmark result to jump to the bookmarks section. When the search box is empty, suggestion chips ("What are my core values?", "Show my growth areas", etc.) offer quick starting points. All processing happens on-device — nothing leaves the computer. The component is lazy-loaded (`CoachingSearchPane.tsx`) and backed by the `AI_COACHING_SEARCH_ARTIFACTS` IPC channel, which delegates to `searchAllBySemantic()` in the embedding service.

### What persists between visits

The sub-sidebar's UI state is saved to `localStorage` under the key **`amc.aiCoaching.sidebar.v1`**; a separate key **`amc.aiCoaching.onboarding.v1`** remembers whether you've dismissed the first-run welcome and which milestones you've already been congratulated for (so nothing ever re-celebrates on a return visit). The welcome ALSO hides automatically once you've engaged — a completed or in-progress interview, or a Core Profile — independent of this per-device flag, so it never re-greets you on a fresh browser or phone. Specifically:

- **`activeSection`** — which of the four sections is currently selected.
- **`expanded`** — whether each of Sessions / Artifacts / Archived is expanded or collapsed.

These survive switching to a different project and coming back, and they survive a full app relaunch. **Selected session and selected artifact are NOT persisted** — switching away and back will keep your section choice and expand/collapse state, but you'll need to re-pick the row. This is intentional: a stale "selected session" id from days ago would point at a session you're no longer thinking about.

### How interviews relate to regular sessions

An interview session is a normal Omniscio session under the hood — it lives in the same `sessions` table, takes the same statuses (`running`, `needs_you`, `paused`, `archived`, etc.), respects the same archive/snooze/pause semantics, and shows up in global search like any other. The AI Coaching sub-sidebar is a **view** over those sessions, scoped to the AI Coaching virtual project. Archiving a session from anywhere in the app moves it into the Archived bucket here; un-archiving puts it back into one of the active groups.

Artifacts are stored separately — they're the durable output of an interview, not a copy of the transcript. Deleting (rejecting) an artifact does not touch the session that produced it, and archiving a session does not delete its artifacts.

### What happens when an interview finishes

When the coach saves a new artifact, Omniscio fires a **session-completed push event** (`AI_COACHING_SESSION_COMPLETED`) carrying the session ID and the artifact title. The coaching panel listens for that event and shows an inline **wrap-up banner** at the top of the right pane:

- A celebration message confirming the artifact was saved, with the title shown.
- A **suggested next step** button — the next interview prompt from your coaching journey (for example "Start your Weekly Check-In" or "Continue your Career History"). If you've completed every available interview, the banner says so.
- A dismiss (×) button to close the banner without acting.

The banner appears once per session — if you dismiss it, it won't come back for that session. It sits above the session content, the same way the credential-alert banner does, and renders in all right-pane views (dashboard, artifact, session, etc.) so you see it no matter which section you're looking at when the artifact saves.

**Auto-archive.** Completed coaching sessions (those with a saved artifact and a terminal or needs-you status) are automatically archived after sitting idle for 10 minutes. This keeps the active session list clean without requiring you to manually archive every finished interview. The sweeper runs every 5 minutes and is restart-safe — it picks up where it left off if the app restarts. Kill switch: set `AMC_DISABLE_COACHING_AUTO_ARCHIVE=1` in your environment.

### Quick check-ins (snack sessions)

Once you've completed a full interview and have a saved artifact, some prompts unlock a **Quick check-in** option — a shorter 5–15 minute session that revisits the same topic without re-running the full interview. Snack-eligibility is (a) completed (you finished the full interview and have an artifact) and (b) a snack-eligible prompt (Foundation and Deep Analysis are eligible; Ongoing, Problem Solving, and Work-focused prompts are not); each snack carries a flavour — journaling, reflection, inspiration, motivation, fitness, somatic, or challenge.

> **Note:** the completed-card redesign removed the on-card "Quick check-in" button and its flavour tag (they crowded the finished card). The snack capability below — its prompt body, `AI_COACHING_START_SNACK` IPC, and file-capture pipeline — is retained but is **no longer surfaced on the Dashboard**.

Clicking the button spawns a new session using the snack prompt body (a shorter, focused version of the full interview prompt) with your existing artifact injected as context so Claude knows "what you said last time." The session produces artifacts through the same CLI save path as regular interviews, so any insights from the check-in are saved automatically.

**Note:** Snack prompt bodies are currently placeholder text. The full infrastructure is functional — when real content is authored in a future update, it slots in with zero code changes.

### Opening messages

Every interview prompt has two related fields:

- **`openingMessage`** — a structured _template_ that tells Claude how to start the conversation. It's used by the immediate-spawn paths (a redo, or a start triggered through the CLI) and lands in the session's CLAUDE.md as a `## Your First Response` section.
- **`firstMessage`** — the _authored greeting itself_: literal, ready-to-display prose that opens the interview and asks the first question. Every greeting opens with a short `## ` heading and a brief intro, then leads into the first question — authored as rich markdown (heading, bold lead-ins, bullets, a divider) so the opening bubble reads cleanly. This is what powers the instant, zero-cost greeting you see the moment you click a prompt card.

#### Deferred (instant) start

When you start a fresh interview from the in-app Dashboard, Omniscio does **not** spawn a Claude process right away. Instead it:

1. Creates the session in a `ready` (not-yet-launched) state — no CLI process, no cost.
2. Shows the prompt's authored `firstMessage` immediately as Claude's first turn.
3. Stashes the fully-composed CLAUDE.md (artifacts, profile, bookmarks, plus a `## You Have Already Greeted The User` handoff section) on the session row in a `pending_claude_md` column.

The real Claude session launches only when you send your **first reply**. At that moment Omniscio flushes the stashed CLAUDE.md to disk (`flushPendingCoachingClaudeMd`) right before the process starts, so Claude reads the correct interview and the handoff section — it knows it already greeted you and simply continues from your reply, with no double-greeting. If you never reply, the draft just sits in your Sessions list costing nothing; reply any time — even after restarting the app, since the pending CLAUDE.md lives in the database — to start it.

A **redo** of a completed interview, and any start triggered through the **CLI** (where there's no interactive user to greet), skip the deferral and spawn immediately using the `openingMessage` template as before. Quick check-in (snack) sessions and **free-form sessions** (opening a new session in the AI Coaching project without typing a prompt) defer the same way, each with their own static greeting.

Opening greetings are shown/injected only at session creation, not when resuming a paused session — a resumed interview picks up where you left off without Claude re-introducing itself.

Previously, opening-message guidance was buried inline inside prompt bodies as `<First Response>` blocks. All 32 prompts now have dedicated `openingMessage` and `firstMessage` fields, making the greetings easy to maintain and update.

### Bookmarks

You can bookmark key moments during a coaching interview — a quote, an insight, or a useful observation from a specific message. Bookmarks are per-session and displayed in the **BookmarkPane** when viewing a session's details. Each bookmark shows the quoted content as a blockquote, an optional label, the date it was saved, and action buttons to copy the text or delete the bookmark.

Deleting a bookmark pops a confirmation dialog that quotes the bookmark it is about to remove, so you can see which one you clicked before you commit. Under the hood the row is soft-deleted (hidden from view but preserved in the database), consistent with how artifacts and sessions are handled elsewhere in the app — but nothing in the app can bring it back, so the dialog tells you plainly that it cannot be undone.

You can also create bookmarks directly from the chat conversation: each message bubble in an AI Coaching session has a bookmark button. Clicking it creates a bookmark of that message's content via the `AI_COACHING_CREATE_BOOKMARK` IPC channel, and the BookmarkPane updates automatically via the `AI_COACHING_BOOKMARKS_CHANGED` push listener.

#### Bookmark context injection

Bookmarks aren't just personal notes — they're injected into the AI coach's context so it can reference your key moments. When a coaching session starts (or resumes after compaction), your bookmarks are loaded and rendered as a `#### Key Moments (bookmarked by you)` block inside the `## What You Already Know` section, positioned after the core profile and before the artifact blocks.

Each bookmark appears as a blockquote with an optional bold label and interview attribution (e.g. `*(from Values & Principles)*`). Labeled bookmarks appear first (the user took extra effort to name them), then unlabeled bookmarks sorted by recency. The total block is budget-capped at 3,000 characters — once the cap is reached, remaining bookmarks are omitted. Up to 50 bookmarks are considered.

If a bookmark came from a session that no longer exists (edge case), it still appears — the interview title is simply omitted. If you have zero bookmarks, no `#### Key Moments` section is emitted at all. This is a pure formatting step at session load time with zero AI cost.

### Goals

The **Goals** pane tracks the things you're actually working toward. A goal has a title,
an optional description and target date, a category (Career, Relationship, Personal, Health,
Financial), and a status: **Active**, **Achieved**, **Paused**, or **Abandoned**.

Goals arrive two ways. The AI extracts them from your coaching conversations, and — since the
`AI_COACHING_CREATE_GOAL` channel landed — you can also write one yourself with the **New goal**
button in the pane header. A goal the AI extracted carries a chip naming the artifact it came from,
so you can tell the two apart and trace an extracted goal back to the session that produced it.

Filtering is by status, with an **All** default. A filter that matches nothing says so in its own
words ("No Active goals") and offers a one-click way back to the full list, rather than showing the
same "no goals yet" message a genuine empty pane shows. Changing a goal's status while a filter is
active fires a notice naming the goal, its new status and the filter hiding it, with a **Show all**
action — a row that vanishes without explanation reads exactly like a deletion.

The list loads 100 goals at a time; a **Load more** control appends the next page when there are
more.

Two status changes ask first: **Achieved** and **Abandoned**. Both drop the goal out of the default
Active view, so a mis-aimed click on the dropdown would otherwise look like the goal had vanished.
Active and Paused apply immediately — they are one step apart and putting a dialog in front of every
status change trains you to dismiss dialogs without reading them. All four statuses are reversible
from the same dropdown, and the dialogs say so.

#### Check-ins

Expanding a goal reveals its check-in history and a form to add one. A check-in is a short note plus
a 1–5 progress rating, given as a labelled radio group (one Tab stop, arrow keys to move) with the
current value spelled out. The note field shows its 2000-character budget as you type. Each goal
keeps its own half-written check-in, so opening a second goal to check something and coming back
does not lose what you had typed.

Check-ins are offered on **active** goals only — a check-in is a statement about current progress,
and a note filed against a goal you have closed out would be hidden by the very filter that hides
the goal. Goals past their target date while still active carry an **Overdue** marker.

#### Deleting a goal

Deleting is irreversible: the row is soft-deleted (hidden but preserved in the database), and
nothing in the app restores it. The confirmation therefore names the goal and itemises what goes
with it — the goal itself, and its check-ins, counted when they have loaded. When the check-in count
has not loaded it says "every check-in recorded against it" rather than claiming zero.

## Related

- [cli-ai-coaching.md](cli-ai-coaching.md) — manage coaching artifacts and start interviews from an AI agent over the CLI control server.
- [projects-sidebar.md](projects-sidebar.md) — how virtual projects (including AI Coaching) sit in the sidebar and grouping behavior.
- [snooze-a-session.md](snooze-a-session.md) — Snoozed bucket above; same snooze mechanism as anywhere else in the app.
- [send-later.md](send-later.md) — Scheduled bucket above; powered by the same Send Later queue.
- [bulk-select-sidebar.md](bulk-select-sidebar.md) — Shift+J/K bulk select works on AI Coaching session rows the same way it does in the main projects sidebar.

This page is split across three parts: [part 2](ai-coaching-part-2.md) covers the artifacts an interview produces and everything you can do with them, [part 3](ai-coaching-part-3.md) covers the memory, Core Profile and analytics built from them, and [part 4](ai-coaching-part-4.md) covers the CLI control-server surface and the implementation pointers for agents.
