approved_atstring date-time nullable required
approved_by_display_namestring nullable required
Who approved it, as a name. Null when nobody has, or the person could not be resolved.
ask_reason'low_confidence' | 'findings' | 'insufficient_data' | 'policy' | 'always_ask' | 'sequence_manual' | 'step_requires_approval' | 'daily_cap' | 'unverified_sender' | 'suppressed' | 'different_sender' | 'label' | 'question' | 'consecutive_cap' | 'thread_cap' | 'hourly_cap' | 'org_daily_cap' | 'stale_inbound' | 'sequence_gone' | 'bot_question' | 'automated_counterparty' | 'kill_switch' | 'authentication' | 'language' | 'linkedin_only' | 'send_interrupted' | 'sender_switched_to_manual' required
Why a message that could have sent unattended was put in front of a person.
One vocabulary for every gate between an agent writing a message and the
message leaving: what the agent itself said about the draft
(LOW_CONFIDENCE, FINDINGS, INSUFFICIENT_DATA, POLICY), what
the sender or the cadence asked for (ALWAYS_ASK, SEQUENCE_MANUAL,
STEP_REQUIRES_APPROVAL), what the pacing rules refused
(DAILY_CAP, CONSECUTIVE_CAP, THREAD_CAP, HOURLY_CAP,
ORG_DAILY_CAP), what the mailbox or the thread made unsafe
(UNVERIFIED_SENDER, DIFFERENT_SENDER, LABEL, QUESTION,
STALE_INBOUND, SEQUENCE_GONE), and what the counterparty turned out to be
(BOT_QUESTION, AUTOMATED_COUNTERPARTY, AUTHENTICATION,
LANGUAGE, LINKEDIN_ONLY). KILL_SWITCH is the platform switch
that stops unattended sending outright, and SEND_INTERRUPTED an
unattended reply whose send never got as far as a provider.
SENDER_SWITCHED_TO_MANUAL is a LinkedIn step queued unasked that went
back to a person because its sender switched to manual before it ran.
Stored on the task so the queue can say why each row is there, and so
"why did nothing send" is answerable by counting rows rather than by
reading logs.
bodystring nullable required
The rendered message as it will send: an email body, a note, a LinkedIn message.
channel'linkedin' | 'email' required
Which channel performs the task once it is allowed to run.
confidencestring nullable required
How sure the agent was that its message could go out unedited: high (a person could send it unread), medium (worth a glance) or low (needs work). Null when no agent wrote the message.
confidence_scoreinteger nullable required
The number behind confidence: the agent's own score for its message, from 0 to 100. Read from the agent's message as it stands now. Null when no agent wrote the message, or the agent gave no score.
contact_companystring nullable
The contact's company, from whichever column of the audience table holds it ('Company', 'Company Name', 'Organization' and the like). Null when the table has none or leaves it blank.
contact_identitystring nullable
The address, profile slug or number behind the label, so a row can show the name and still say who that is. Equal to the label where no name was found; null for housekeeping.
contact_labelstring nullable required
The contact as the queue names them: a name, else an address or a profile URL.
contact_titlestring nullable
The contact's job title, from whichever column of the audience table holds it ('Job Title', 'Title', 'Position' and the like). Null when the table has none or leaves it blank.
created_atstring date-time required
due_atstring date-time required
When the channel would run it if nobody were in the way.
editableboolean required
Whether the queue may rewrite the message before approving: pending, and a kind that carries text.
enrolment_idstring uuid nullable required
flaggedboolean required
Whether a check found a problem in the agent's message (any finding at warning strength), whatever ask_reason says: a task held for a setting can still carry a message with a placeholder that never filled in. False when no agent wrote the message.
kindstring required
The LinkedIn action kind slug or email.
linkedin_action_idstring uuid nullable required
notestring nullable required
What the person wrote when settling it: why they rejected it.
outbound_message_idstring uuid nullable required
The message the Outbound Agent wrote for this task. Null when a person wrote the words, and on a LinkedIn step that carries no message.
outcomestring nullable required
How it ended: the channel's own terminal word.
quality_scoreinteger nullable required
A separate AI review's score for the agent's message, from 0 to 100: how likely a busy person in the recipient's role is to read it to the end and reply. Null when no agent wrote the message, or when it was not reviewed.
reasoningstring nullable required
The agent's own note on its message: what it built the message on and what it was unsure about. Null when no agent wrote the message.
record_idstring uuid nullable required
rejected_atstring date-time nullable required
rejected_by_display_namestring nullable required
reply_subjectstring nullable
For an email that replies in the contact's existing thread, the subject it will go out with, such as 'Re: Quick question'. Null for a first email, which carries its own subject, and for anything that is not an email.
resolved_atstring date-time nullable required
sender_browser_onlineboolean nullable
For a LinkedIn task still waiting on a person: whether a browser is checked in for its sender right now, so approving it would run it soon. False means an approved step waits until a browser is open. Null for every other task.
sender_profile_idstring uuid nullable required
sender_profile_namestring nullable required
Null when nobody in particular sends it, or the sender was deleted.
sequence_idstring uuid nullable required
sequence_namestring nullable required
Null for housekeeping work, or for a sequence since deleted.
sequence_pausedboolean
Its sequence is paused right now: approving the task records the approval, and the step waits for Resume sequence before it runs, on either channel.
status'pending' | 'scheduled' | 'done' | 'rejected' | 'cancelled' required
Where one task stands.
PENDING is waiting on a person. SCHEDULED is approved, or never needed
approval, and is waiting on the channel to execute it: the browser to run
the LinkedIn step, the engine to send the email. The task is where a
LinkedIn step's approval lives: while it is PENDING no step exists, and
the step is queued only once it is SCHEDULED. A LinkedIn task nobody is
asked about (a sender on automatic, a housekeeping read, a Try click) is
BORN scheduled, pointing at the step it queued. Who approved it is a stamp
on the row, not a status of its own.
DONE, REJECTED and CANCELLED are terminal. DONE is the channel executed
it; REJECTED is a person refused it; CANCELLED is the channel gave up on
it (failed, skipped, expired), or the contact was stopped underneath it.
step_idstring uuid nullable required
step_namestring nullable required
The step as the builder names it; null when the step no longer exists.
step_positioninteger nullable required
The step's customer-visible ordinal, zero-based; null with the name.
subjectstring nullable required
updated_atstring date-time required