IQ Activity Log: the audit you can verify

IQ acts on your behalf: it changes the status of subtasks inside your decisions, it sends emails to clients, carriers, and adjusters, it reads and classifies the mail that comes back, and it talks…

11 min read·Updated July 13, 2026
On this page

What this page is

IQ acts on your behalf: it changes the status of subtasks inside your decisions, it sends emails to clients, carriers, and adjusters, it reads and classifies the mail that comes back, and it talks with you in chat. The IQ Activity Log is where every one of those actions is written down, in order, so you can check it. Verinode is an independent data trust and an AI Co-COO working for you, not a black box: this page exists so nothing IQ does happens where you cannot see it.

The page header says it plainly: "Every action IQ takes on your behalf, every email IQ sends, every state change in your decisions. This page is the audit you can verify against; if anything here looks wrong, that is a signal we want to see." Treat that literally. If a number here does not match what you remember happening, or a row looks off, that is useful information for Verinode, not a nuisance.

Where to find it

  1. 1Open Settings from the sidebar.
  2. 2Scroll to the Data & Privacy group.
  3. 3Select IQ Activity Log (subtitle: "Every action IQ took for you").

That opens /settings/iq, which is a shared layout: a stats row and a tab bar sit at the top, and the tab you pick renders below them. The tab bar lists six stops: Activity log, Outbound emails, Inbound classifications, Conversations, Memory, and Preferences. This article covers the first four, the ones that make up the audit trail itself. Memory and Preferences are separate controls for what IQ remembers about you and how it should behave, and live under their own tabs on the same page.

The stats row

At the top of every tab sits the same row of six tiles. They are aggregate counters, meant to calibrate your sense of how much IQ is doing without you having to read a single log line. Hover any tile for its plain-language explanation.

| Tile | What the number means | |---|---| | IQ mutations · 7d | State changes IQ made on your behalf this week. | | Your mutations · 7d | State changes you made directly: clicks in the app, chat replies, email replies. | | Emails sent · 7d | Outbound emails IQ sent this week. | | Emails sent · 30d | Total IQ-initiated emails over the last 30 days. | | Active plans | Plans you have started that are still open. | | Resolved · 30d | Plans that hit their outcome in the last 30 days. |

"Mutations" means any recorded state change on a decision subtask: created, status changed, edited, re-run, evidence attached, marked done, or undone. A "plan" is the multi-step action plan behind a decision, the same thing you work in the decision workspace. If IQ mutations and your mutations both read near zero, it usually means you have little open in the Feed right now, not that anything is broken.

Activity log tab

This is the full ledger of state changes across every decision you own, newest first.

The stats panel

Above the table sits a breakdown panel with its own window chips: Last 7 days, Last 30 days (the default), and Last 90 days. Switching windows just re-slices data already loaded on the page, so it is instant. The panel shows:

  • A running total in the top right, read as "N events" for the selected window.
  • By actor: a row each for You, IQ, System, and Counterparty, each with a count and its percentage of the window's total.
  • By event: a row each for Marked done, Status changed, Evidence attached, Edited, Created, Re-ran, and Undone, same count-and-percentage format.
  • A footer line with two counts: undone and disputed. Disputed is a placeholder metric that currently always reads 0; it is reserved for a future "confirmed, then disputed" workflow and will start moving once that ships.

The table and its filters

Below the panel is the row-by-row log, with three filter rows above it:

  • Actor chips: All, You, IQ, System, Counterparty. "Counterparty" means a change that came in automatically from the other side of a thread, for example when a carrier or adjuster's reply triggers a status update.
  • A date range dropdown at the right of that same row: Last 7, 30, 90, 180, or 365 days (defaults to 30). This is a separate window control from the stats panel above it.
  • Event chips: Created, Status changed, Edited, Re-ran, Evidence attached, Marked done, Undone. These are multi-select, toggle any number on, and a clear link appears once you have picked at least one.
  • A search box ("Search subtask or topic") that matches against the subtask title, the decision's title, the linked entity's name, and the trigger source. It is debounced, so it waits about a third of a second after you stop typing before refiltering.
  • A signal id box ("Filter to a signal id") if you want to narrow the whole log to one decision. Paste the id from a decision's URL. Also debounced.

While a filter change is in flight the page shows "Loading." next to the inputs. If the query fails outright, an error line appears in place of results.

Each row reads as one line plus a detail line beneath it:

  • A narrow actor label on the left (You / IQ / System / Counterparty).
  • The main line: the event (for example "Status changed to Approved," using the humanized version of the new status) followed by the subtask, shown as its position and title, for example "#3 Confirm scope with adjuster." If no title was captured the row just says "subtask."
  • The line underneath: the topic, either the entity name or the decision's title, or "Unattached" if neither is known, followed by the channel the change came through if one was recorded (UI, Chat, Voice, Email reply, Background, System, or Backfill), then a relative timestamp ("just now," "12m ago," "3h ago," "2d ago," or a date once it is a week or older).

Drill in. When a row has something more to show (a from/to value or a trigger payload that is not empty), an Inspect link appears on the right; click it to expand a small panel with Trigger, From Value, and To Value shown as raw JSON, plus the row's event_id for reference. Click Hide to collapse it. Rows with nothing extra to show simply do not get an Inspect link.

Open the decision. When a row is tied to a decision, an Open link on the right takes you straight to /decisions/{id} so you can see the change in context.

Paging. The table loads 50 rows at a time. A Show more button appears at the bottom whenever more rows exist past what is loaded; it reads "Loading more." while the next page fetches.

Empty state. If your filters return nothing, the table reads: "No activity matches these filters."

Outbound emails tab

Every email IQ has sent on your behalf in the last 90 days, up to 200 messages.

Filters: a search box ("Search subject or recipient") and a trigger dropdown (All triggers, Signal fired, Eval window hit, Follow-up due, Weekly wrap, Morning roll-up, Inbound reply). A row's trigger can occasionally read something outside that list (for example "Research finished" or "Cross-section pattern," from IQ's cross-section pattern detection) even though those aren't options in the dropdown filter itself.

Each row shows:

  • The subject line in bold, or "(no subject)" if none was captured. A red Blocked label appears beside it if the send failed to dispatch.
  • Underneath: the trigger (or "Manual" if none was recorded), who it went to ("to name@example.com"), and a relative timestamp.
  • A short italic excerpt of the body, up to 240 characters, when the body was captured.
  • A footer row: an Open decision link if the email is tied to one, a faint monospace thread id if one exists, and a "Didn't sound like you?" link, see below.

Empty state. With no filter applied: "No outbound emails in the last 90 days." With a search or trigger filter applied and nothing matching: "No emails match this filter."

Inbound classifications tab

Every inbound email IQ has read and classified in the last 30 days, up to 200 messages. This is the tab that shows you what IQ saw, what it decided to do about it, and whether that worked.

Filters are routing-decision chips: All, Mutated, Asked, Ingested, Replied.

Each row shows:

  • The sender in bold, or "(unknown sender)" if not captured, with an Attachment label if the message had one.
  • An IQ Replied label if IQ dispatched a reply, or a Reply Blocked label (hover it to see the error) if a reply was attempted and failed.
  • Underneath: the classifier's one-line summary of the message ("no classifier summary" if none was produced) and a relative timestamp.
  • A row of pills: one decision pill per routing decision the message produced (a single email can carry more than one, for example both Ingested and Replied), labeled Mutated, Asked, Replied, Ingested, or No-op, and one tool call pill per tool IQ invoked while handling it, in monospace, marked with an "×" if that call failed (hover for the error). A faint monospace thread id sits at the far right when one exists.

Empty state. With All selected and nothing in the window: "No inbound messages in the last 30 days." With a specific filter and nothing matching: "No inbound messages with a [mutated / asked / ingested / replied] routing decision in the last 30 days."

If you forward documents or set up mailbox ingest, this is the tab where those messages show up as they are processed. See forwarding documents and connecting your data for how mail and files flow in.

Conversations tab

Every turn of every chat you have had with IQ in the last 30 days, up to 200 turns, searchable.

Filters: a search box ("Search inside chat content") that matches message content, debounced. If you have filtered to a single thread (see below), a pill reads "Thread: [id] ×"; click it to clear the filter.

Each turn shows:

  • A role label: You, IQ (in copper), or System.
  • Any tool calls that ran on that turn, in monospace, joined by a dot.
  • A relative timestamp, and a faint persona-version stamp when one is recorded.
  • The message content, truncated to 600 characters with a Show more / Show less toggle for longer turns.
  • A monospace thread id at the bottom of the row; click it to filter the whole tab down to that one thread.
  • On IQ's own turns only, a "Didn't sound like you?" link, see below. Your own turns and system turns don't carry this link, they aren't reviewed for voice.

Empty state. With a search or thread filter active and nothing matching: "No conversation turns match this filter." With no filter and nothing in the window: "No chat conversations in the last 30 days. As you chat with IQ, every turn will appear here for audit."

Flagging IQ's voice

On outbound emails and on IQ's own chat turns you'll see a "Didn't sound like you?" link. Click it and a panel opens with the heading "This didn't sound like you?" and the note: "Flag this so the next persona review can fix it. Your note (optional) helps the reviewer figure out what to encode." The panel shows the exact content you're flagging, a free-text box for what felt off (optional, with a character counter), and a Flag for review button.

Submitting writes the flag for the next persona review, it is not a live correction and IQ will not immediately change tone as a result. Once a row is flagged, the link is replaced with a static Flagged label so you cannot double-flag the same item, though the count resets when the page reloads since the flagged state is tracked locally in your session.

Tip

Use this whenever an email or a chat reply reads too formal, too casual, or just not like something you'd have written yourself. Specific is better than vague: "used 'happy to help,' sounds canned" gives the reviewer something concrete to fix.

How to use this page

Start at the top. If the stats row shows more IQ mutations than you expected in a week, open the Activity log, filter the actor chip to IQ, and scan for the trigger channel and topic on each row, "Background" and "Chat" mean different things happened. If an email went out that surprises you, the Outbound emails tab shows exactly what was sent, to whom, and what triggered it; open the linked decision to see the full context. If you suspect IQ missed something in an inbound message, filter Inbound classifications to a routing decision and check the tool-call pills for a failed call (marked with "×"). And if a chat answer felt off, the Conversations tab keeps the whole exchange, tool calls included, so you can see exactly what IQ knew when it answered.

Note

An empty page here is not a broken feature. It means IQ has not yet had anything to do (no decisions with open subtasks, no outbound triggers fired) or a data source (mailbox forwarding, chat) has not been used yet. As you work decisions and connect data, this fills in on its own; see connecting your data and acting on decisions.

Data sources

Data sources

  1. 1.Decision subtask events (created, status changed, edited, re-run, evidence attached, marked done, undone). Your business.
  2. 2.IQ outbound email log. Your business.
  3. 3.IQ inbound classification log. Your business.
  4. 4.IQ chat conversation log. Your business.
  5. 5.Decision plans (active / resolved counts). Your business.
Was this helpful?