Fintalent OSW: Guideline

Two roles, one workflow. Ops prepares the work: builds a list, fills it with contacts, assigns it to an SDR. SDR works it every day: finds, emails, follows up, classifies. Each flow keeps the core steps to the shortest happy path (each step with its own screenshot); anything optional sits in Edge cases.

ADMINA1 · Create an SDR / KAM account (ADM.0.1)

Goal: onboard a new sales hire: create their login with the right role, so they can sign in and see only their own scope.

A1.1 · Open Admins

  1. User Management → Admins → the users table (Actions, Avatar, Name, Email, Roles and Created Date). Every SDR/KAM/Admin lives here.
    Admins page
    A1.1: Admins: role badges per user, + Create New, and a Login-as icon in Actions.

A1.2 · Create the account

  1. Click + Create New (top-right of the Admins table) → the Create new Admin form opens.
  2. Fill in the details: First name, Last name and Email (= their login username; use the company email), Phone (optional) and Roles* (pick SDR or KAM, tick both if they cover both) and Password (auto-generated). Regenerate / copy the password → A1.x.1 ↗.
    Create new Admin form
    A1.3: Create new Admin form: Name · Email · Roles* · auto-generated Password · Avatar.
  3. Click Create → the new user appears in the table. Verify the role badge in the Roles column, then ask them to log in.

A1.x · Edge cases

  1. Generate / copy the password. In the Create form the Password is auto-generated. Click Generate again to make a new one, copy it, and send it to the hire through a private channel. They can change it after their first login.
    Password field
    A1.x.1: the Password field: masked value · 👁 show/hide · copy · Generate again.
  2. Edit an existing account. Admins → the user's row Edit / View Details → the Update Admin Information drawer. General Setting = name, phone, avatar and Roles (fix a wrong role here, no need to recreate). Email Configuration = Signature (auto-appended to every email they send), Sender Name and default Attach filesSave. The drawer also carries Billing, Payment and Activities Log tabs (an SDR typically only needs General Setting + Email Configuration). (Best to set the signature here before their first send; the SDR can also edit their own later.)
    General Setting (SDR account)
    A1.x.2a: (an SDR account) General Setting: name · phone · avatar · Roles.
    Email Configuration
    A1.x.2b: Email Configuration: Signature · Sender Name · Attach files → Save.
  3. Act truly as them: "Login as". To use the app as that person (their assigned lists, their mailbox), on the Admins table each row has a purple "Login as" button in the Actions column (also reachable from the row menu). Click it to enter the app as them. (This is how every SDR screenshot in this guide was captured.)
    Login as button
    A1.x.3: the Login as button (circled): one purple button per row in the Actions column.
  4. Preview what they'll see: "View as role". The eye icon by your profile (bottom-left) → pick SDR → a banner "Viewing UI as SDR". It's UI-only: you still see your own data and your real permissions still apply. It just shows which menus/buttons/columns that role gets.
    View as role SDR
    A1.x.4: View as role → SDR: the preview banner + the trimmed SDR menu.

ADMINA2 · Create a single contact (ADM.0.3 · Admin/Ops only: the SDR view has no Create Contact button)

Goal: add one person to the database. Bulk data is preloaded, so this is for one-offs.

A2.1 · Open the Create Contact form

  1. Sales Management → Contacts → the contacts table. Top-right sits + Create Contact (Admin/Ops only. The SDR view has no such button).
    Create Contact button location
    A2.1: + Create Contact (circled) at the top-right of the Contacts page.
  2. Click + Create Contact → the Create Contact drawer opens: LinkedIn or email required + an optional Name.
    Create Contact drawer
    A2.2: the empty drawer: LinkedIn URL OR Email, plus optional First/Last name.

A2.2 · Enter the details & create

  1. Enter a LinkedIn URL or an Email (≥1 required, it's the dedupe key; the card shows ✓ Ready once valid). With a LinkedIn URL the system auto-pulls the person's name, total years of experience, avatar, location and work experience (when available), so First/Last name are optional. → Create Contact.
    Create Contact with a LinkedIn URL
    A2.3: example: a LinkedIn URL entered → ✓ Ready. On Create, the system crawls name · years of experience · avatar · location · work experience back into the contact.

A2.x · Edge cases

  1. Duplicate found (email / LinkedIn already exists). Entering an identifier that already exists opens the "Duplicate Found" panel with the existing contact, edit them there, or Back to enter different info. Nothing duplicate is ever created.
    Duplicate Found
    A2.x.1: Duplicate Found: the existing contact appears; Back / Done.
  2. Link / relink a work experience to a company. On a contact's Work Experience, an unlinked row shows the company as plain text and carries a Link company icon. That opens a company picker. The company has to be in Companies already, so if you get 0 results, shorten the keyword. Clicking links it immediately, with a “Linked” toast to confirm. There is a bonus on top: “Apply to N other contacts” fixes the same mislink everywhere at once. A row that's already linked shows Relink instead, it re-points to a different company (company-scoped: moves every experience matched to the old company).
    Link icon
    A2.x.2a: the Link icon on an unlinked experience row.
    Link picker
    A2.x.2b: the company picker (company must exist; 0 results → shorten keyword).
    Linked result
    A2.x.2c: result: company as a purple link + type badge; a Relink icon on the linked row.
  3. Neither LinkedIn nor email. Creation is blocked: the form requires one of the two.
  4. Supplement the info (edit after create). A fresh contact, even one auto-filled from LinkedIn, is often missing details the crawl can't reach: Phone, Contact Classification, Owner, extra emails, lifecycle, etc. Open the contact → the detail drawer → click the empty field → type or pick the value → it auto-saves (toast "Saved"). Fill these in before assigning the person into a working list.

ADMINA4 · Manage a campaign (Admin/Ops, every campaign in the workspace, not just your own)

Goal: the SDR builds one campaign at a time (SDR Flow 6 ↗). You run the whole book: you see every SDR's campaigns, move them between folders, hand them to another owner, force a step out, and audit who changed what. Turning one on is A4.6 ↗, now part of this flow; everything else lives here.
What you can do that an SDR cannotEverything in the SDR flow is available to you as well, same screens, same buttons, nothing removed. What Admin/Ops adds on top is the authority to send: flipping a campaign from Draft to live, and Force Send. That is the whole difference in permissions, and it is why the SDR hands the campaign back to you at the end of their flow rather than finishing it themselves.

A4.1 · The list: what you see that the SDR doesn't

  1. Sales Management → Campaigns. The header count is the whole workspace, not your own, the SDR only ever sees campaigns assigned to them.
    Admin campaign list
    A4.1: every campaign in the workspace · status tabs · the Assignee column (Admin-only) · every user's folders in the right pane.
  2. Status tabs. All, Scheduled, Draft, Running, Finished, Paused and Archive, each with a live count. Archive only exists here; that's where A4.x.2 ↗ puts things.
  3. The folder pane (right). Lists all folders with their campaign counts, tin's (20), Sang (8), Sponsors USA (8)… Click one to scope the list, use Search folder to find it, + Create Folder to add one. An SDR sees only their own folders, so you are the one who can tidy across people.
  4. Read a row. Left to right: checkbox (bulk) and (row menu), Enabled toggle, name + From address + status pill + folder chip, Assignee (role badge + person), Total Steps and People.
  5. Scroll right for the numbers: Open Rate, Reply Rate, Bounce/Dropped Rate, Progress, Delivered and Last run. Headers with ⇅ are sortable: sort by Bounce/Dropped Rate to find the campaign that is burning the domain.
    Metric columns
    A4.1.5: the three rates · Progress bar (✓ when finished) · Delivered · Last run.
  6. Timeline view. The ⟨⟩ button beside the search box swaps the table for a month timeline, one bar per campaign across the days, today highlighted, to change month. Fastest way to see what is overlapping before you turn another one on.
    Campaign timeline view
    A4.1.6: the ⟨⟩ toggle · the day strip · one bar per campaign, coloured by status.

A4.2 · Row actions (⋮): six, against the SDR's one

  1. Click on any row. Edit/View Details, Delete, Archive, Move campaign, Clone campaign and Manage assignee. The SDR view of the same menu has Edit/View Details only.
    Admin row menu
    A4.2.1: the six-item Admin row menu; Delete (top) and Manage assignee (bottom) are the two the SDR never gets.
  2. Move campaignChoose a Campaign Folder Target. Pick the destination folder; the dialog prints the campaign, its From, Total People, Total Steps and its current folder so you can check you grabbed the right row → Move Campaign.
    Move campaign dialog
    A4.2.2: target folder · the summary that confirms which campaign you are moving.
  3. Clone campaign → same dialog, but the folder you pick is where the copy lands. Use it to reuse a proven sequence for the next segment instead of retyping the steps.
    Clone campaign dialog
    A4.2.3: Clone Campaign. The clone starts as a fresh Draft, see A4.x.1 ↗ for what does not come along.
  4. Archive takes it out of the working tabs into Archive; Delete removes it. Prefer Archive: the numbers stay reachable.

A4.3 · Reassign: one campaign or a whole batch

  1. ⋮ → Manage assignee opens Assign assignee: search by name/email, filter by Roles, + Add filter, and the current owner is pre-ticked. Pick the new person → Save. This is what you use when an SDR leaves or a book gets rebalanced.
    Assign assignee drawer
    A4.3.1: search · Roles filter · the person currently assigned.
  2. In bulk: tick several rows → the bar shows “N campaigns selected” + Assign assignee. That is the only bulk action on this page. There is no bulk delete/move, so a mis-click can't wipe a book.
    Bulk assign
    A4.3.2: selection count · the single bulk action.

A4.4 · Inside the campaign: the Admin controls

  1. Open it (click the name, or ⋮ → Edit/View Details). The header carries: editable name (✎), timezone, description and the owner with a badge and and, once it is live, the Active switch.
    Admin campaign detail
    A4.4.1: timezone (drives send hours) · owner + sending account · the tab row · Force Send on each step · Create new step / Create sidestep.
  2. The tab row depends on state. A Draft or Finished campaign shows Steps, People, Email Queues and Timeline; once it is running you also get Inbox and Preview.
  3. Force Send per step (Admin-only). Each step has its own Force Send, it pushes that step now instead of waiting for its Right away / Wait for N days timing. Use it to unblock a step that missed its window; don't use it to skip a wait you set on purpose.
  4. ⚙ on the owner avatar → change the sending account. It opens the list of Fintalent accounts (the current one is not in the list), picking one switches the account the campaign sends From. The list page then shows the new From: address on the row.
  5. Mark Campaign as Complete, top right of the header, beside the status switch. Admin-only, and the only control that ends a campaign: it takes an Active or Paused campaign to Finished. An SDR does not get the button at all, and the status switch is drawn for them but disabled, so a campaign only stops when you stop it. Step by step in 6.10 ↗.
  6. Email Queues: sub-tabs All, In Queue, Delivered and Cancel, filters Sources, Expected Run Date and Steps, and an Attachments column the SDR-side write-up doesn't cover. This is where you prove an email actually left.
    Email queues
    A4.4.6: the four sub-tabs · filters · Attachments.

A4.5 · Timeline: the audit trail

  1. The Timeline tab logs who changed what, when, with the before → after value: STATUS — → Completed, MARKED DONE — → Yes, CATEGORIZE OutOfOffice → NotInterested. Entries name the actor (by Dong SDR, by Fintalent System (Admin)).
    Campaign timeline audit
    A4.5: Simple / Advanced search · scope All / Campaign / Contact · actor + before→after on every entry.
  2. Advanced search syntax: -word excludes, click a pill to toggle it, "quotes" for an exact match and AND/OR switches how terms join. Use it to answer “who removed those targets?” in one query.

A4.6 · Run a campaign

This is the one thing an SDR cannot do. Everything up to here they can prepare; turning the campaign on is yours.

  1. The SDR tells you it is ready. Nothing arrives on its own, so the trigger is a message from them, not a queue you can watch. What ready means on their side: 6.6 ↗.
  2. Review it again, as much as you want to. Open the campaign and go to the Preview tab, the same screen the SDR used. Read whichever contacts you want to read; the Done filter splits the list into the ones they have been through and the ones they have not.
  3. Click the status toggle, top right of the campaign, beside your name. It reads Draft until you touch it. A dialog opens.
    The campaign status control
    A4.6.3: the status control on the campaign, reading Draft.
  4. Read the dialog before you confirm. It repeats the campaign name and status, the sending address, and the size of what you are about to start, for example 12 contacts · 2 steps. If anybody is still unreviewed it says so, in a yellow band: N contact are not marked as done.
    The warning does not stop youRun Campaign stays enabled whether or not everyone is marked done. So the count is a prompt to think, not a gate.

    Two reasonable answers. Run anyway, when you know why those contacts are unmarked and you are content to mail them. Or go back to the SDR and ask, when you are not: unmarked usually means unread, and unread means somebody is about to receive an email nobody has looked at.

  5. Click Run Campaign. The status moves from Draft to Active, an Email Queues tab appears on the campaign, and the steps start showing when they will go, for example Next Running: 06/08/2026 on a branch.

    Exit closes the dialog and changes nothing, so opening it to read the count is safe.

  6. Then watch the queue. The campaign detail is the same as the SDR's, so the Email Queue and the campaign Inbox work exactly as described in 6.7 ↗ and 6.8 ↗.

A4.x · Edge cases

  1. What a clone copies. The steps and their variants come along; the people and every metric do not. The clone opens as a fresh Draft with 0 people. Add the audience again (SDR Flow 6.4 ↗) before you enable it.
  2. Archive vs Delete. Archive moves it to the Archive tab, out of the way, still readable, still counted in history. Delete is gone. When someone asks to “clean up”, archive.
  3. Reassigning does not re-point the sending account. Manage assignee changes who owns the campaign; the From address still comes from the account set with the badge (A4.4.4 ↗). Hand a campaign over → check both, or the new owner's replies land in the old inbox.
  4. A campaign nobody has handed over looks identical to one nobody has started. Both sit in Draft, and the list shows no difference between a campaign the SDR has finished reviewing and one they have not opened. The only signal is the SDR telling you (Flow 6.6 ↗). If you want to check for yourself, open it and read the Done filter on the Preview tab.
  5. “Cross-campaign” is the number to fear. A contact sitting in two live campaigns gets two cold emails in the same week. The Recently contacted and 7 days line on the campaign catches it. Resolve by pulling the person out of one campaign, not by ignoring the badge.
  6. The folder pane can be collapsed. The handle on its edge hides it and widens the table. Useful when you are reading the rate columns. It re-opens with the same handle.

ADMINA5 · Manage a marketing email (Admin/Ops, every ME in the workspace)

Goal: an ME is a one-shot blast, not a sequence, so managing it is about who it goes out as, whether the audience is safe to mail, and what came back. The SDR prepares and reviews it (SDR Flow 7 ↗); you activate and Force Send it in A5.8 ↗. Everything below is the surrounding admin work.
What you can do that an SDR cannotEverything in the SDR flow is available to you as well, same screens, same buttons, nothing removed. What Admin/Ops adds on top is the authority to send: flipping a marketing email from Draft to live, and Force Send. That is the whole difference in permissions, and it is why the SDR hands the marketing email back to you at the end of their flow rather than finishing it themselves.

A5.1 · The list

  1. Sales Management → Marketing Emails. Again the whole workspace. Tabs: All, Draft, Paused, Running and Finished. There is no Archive here and no folder pane, so marketing emails sit in one flat list.
    Admin marketing email list
    A5.1: every user's MEs · status tabs · + Create Marketing Email · the rate columns.
  2. Read a row: name + From address + status pill, People, Delivered, Open Rate, Reply Rate, Bounce/Dropped Rate and Progress (✓ when the blast finished). Then Last run and Assignee: the Assignee cell carries a role chip above the name (SDR), so you can see at a glance which rep owns which blast. There is no Enabled toggle though: unlike a campaign, an ME is switched on from inside its own header (A5.8.3 ↗).

A5.2 · Row actions: Edit · Delete · Manage assignee

  1. The ⋮ menu changes with status. It is short either way, but the difference matters:
    ME status⋮ offers
    Draft · PausedEdit/View Details · Delete · Manage assignee
    RunningEdit/View Details · Delete · Manage assignee, the same three
    ⚠ Corrected, Delete does not disappear once it runsThis guide used to say the Delete option vanishes the moment a ME starts sending. Re-checked since: it does not. The menu offers the same three items on a Draft, a Paused and a Running ME.

    What is still unverified is what happens if you actually confirm Delete on a running send, whether the server refuses it or deletes a live blast. Nobody has pressed it. Until somebody does, treat Delete on a Running ME as unsafe: pause it first, then delete.

    Whatever its status, a ME has no Archive to move to, and no Clone and no Move, unlike a campaign (A4.2 ↗).

    Delete asks first: “Do you want to delete this Marketing Email”, with Exit and Delete. It is a real delete, not an archive: the list count drops by one (92 → 91 in one example).

    Row menu on a Draft marketing email
    A5.2.1: the ⋮ menu on a Draft: Edit/View Details, Delete and Manage assignee. A Running ME shows the same three.
  2. Bulk does one thing only. Tick rows → “N marketing email(s) selected”Assign assignee. There is no bulk delete and no bulk status change. Reassigning owners is the whole feature.
    Bulk bar and Assignee column
    A5.2.2: the selection bar with its single action · the Assignee column, with the role chip above each name.

A5.3 · Inside the ME

  1. Open it. Header: editable name, timezone, description and owner with the badge and the Active switch. Tabs: Inbox, Template, People, Preview, Email Queues and Timeline. Two are conditional: Preview and Email Queues do not always show. A fresh Draft can legitimately show neither, so do not read their absence as a fault; the exact trigger is still being pinned down.
    ME detail header
    A5.3.1: owner + + the Active switch · the tab row · Force Send and the step's delete icon.
  2. Template holds the single step. It carries the Force Send button from A5.8.3 ↗ plus a 🗑 delete on the step, deleting it empties the ME, so only do that on a Draft.
  3. ⚙ on the owner avatar → change the sending account. Same control as a campaign: a list of Fintalent accounts, the current one excluded; picking one changes the account the blast sends From.
    Sending account picker
    A5.3.3: the badge · the account list. Set this before Force Send: it decides the From address and where replies land.

A5.4 · The ME's own Inbox

⚠ Changed. This tab is no longer “replies only”The Inbox tab on a ME (and on a campaign) now lists every conversation that went out, i.e. everything delivered, not just the ones that came back. Because of that the left rail carries a Not Response chip: conversations that were sent and never answered.

A worked example, Talent Handbook Launch — Aug 2026: All 3,733 = Interested 2 + Not Now 1 + Out Of Office 1 + No Categories 2 + Not Response 3,723 + Opted Out 4. The categories and Not Response add up to All, so Not Response is the bulk of the tab on any healthy send. Silence is the normal outcome, and the few categorised rows are the work.

Opted Out sits apart, under its own Stops sending group with a 🚫 mark, not a reply category but a hard stop (7.9 ↗).

The Inbox left rail on a marketing email
A5.4: the left rail: the Inbox tab count, matching All · All 3,733 · the reply Categories, six rows between them · Not Response 3,723, the silent majority · Stops sending → Opted Out 4, kept out of the categories.
  1. The Inbox tab is this ME's replies only, with a category rail down the left. The rail lists All, Prospect, Interested, Scheduled Call, Platform Signup, In Projects, Project Completed, Not Now, Not Interested, Email Updated, Left The Company, Out Of Office, Do Not Contact, Opted Out, No Categories, Bounced / Dropped, Open and Click.
    ME inbox
    A5.4: the category rail (Open and Click are engagement, not replies) · filters · keyword search.
  2. Bounced / Dropped and Opted Out are the two to read first after a blast, they decide whether the next ME to that segment should go out at all.

A5.5 · Add contacts to the marketing email

Do this before anything in A5.8A marketing email with no recipients cannot be run, and the People count is one of the two numbers the run check looks at (A5.8.2 ↗).
  1. Start from the marketing email, not from Contacts. Open the ME → People tab. An empty one says so plainly, and tells you the only way in:

    “No people yet — Contacts added to this marketing email via the Contacts V2 bulk flow will appear here.”

    Empty People tab with the Add contacts button
    A5.5.1: + Add contacts, top right of the tab · the empty state naming the bulk flow.
  2. + Add contacts does not open a picker. It takes you to Contacts. You land on the full Contacts list with a filter already applied, a chip reading Marketing Email: 1 excluded. That chip is doing real work, because it hides everyone already in this ME, so whatever you tick next is genuinely new.
    You have left the marketing emailThis is a normal Contacts page now. The full filter bar is yours: Lifecycles, Has signal, Countries, Work Experience, keyword search. Narrow the list here rather than ticking your way down 15,000 rows.
    Contacts pre-filtered to exclude this ME
    A5.5.2: the Marketing Email: 1 excluded chip · the row count you are working against.
  3. Tick the contacts you want. A selection bar appears with the count, Select all N matching for the whole filtered set, and Clear. Of the actions on the right, the one you want is Add to marketing email, the neighbours add to a list or a campaign instead, and Delete contacts sits two buttons away.
    Selection bar with Add to marketing email
    A5.5.3: the count and Select all N matching · Add to marketing email.
  4. The drawer is two panes, and both matter. It opens titled Add N contacts to marketing email.
    PaneWhat it does
    Left: Select marketing emailevery ME you can reach, searchable and sortable. Each row shows name · owner · status chip · N recipients, so you can tell a Draft from something already sending before you pick it.
    Right: the contactssplit into three buckets: Valid · Missing + Invalid · Platform Signup, each with its own count. They are not a quality ranking: which ones you tick depends on what the email is for. See below.

    Read the legend above the table: “☑ Tick to add and ◉ Email to send”. Two different controls: the checkbox decides whether the contact goes in, the radio beside each address decides which address gets used.

    What each bucket actually means, and when to tick it:

    BucketWhat is in itTick it?
    ValidThe safe ground. The address is confirmed working, so a send has a high chance of landing rather than being dropped.Yes: pre-ticked for you.
    Missing + InvalidNeeds a human look. The work address is missing or unusable, so the pick falls back to a personal one, unverified rather than proven bad. Most are reachable; nobody has checked.Your call. Tick individually if you are willing to risk a bounce on that name; leave it if you would rather not spend the sender reputation.
    Platform SignupPeople who already have a Fintalent account, talent or client. Nothing to do with whether the address works.Depends entirely on the campaign. See the rule below.
    Platform Signup is a business decision, not a data-quality oneAsk what the email is for:
    The email is aimed at…Platform SignupWhy
    TalentsTick all of themThese are your talents. Leaving them out means mailing everyone except the audience.
    Prospective clientsJudgement callHaving an account already suggests they may be a client. Whether that makes them a target or means you should leave them alone depends on the campaign. Decide deliberately, do not let the default decide for you.

    When a contact has more than one address, the system has already chosen one. It picks by priority: a valid address first, then one belonging to a sponsor company, and so on down. The chosen address carries the filled radio; any others sit under Additional Emails.

    You can overrule it right here. Click the radio next to a different address and that is where the email goes. Worth a look whenever someone has a work address and a personal one. The automatic pick is a sensible default, not a decision about which inbox this particular message belongs in.

    The add-to-marketing-email drawer
    A5.5.4: pick the ME (status and recipient count on every row) · the three buckets · tick-to-add vs email-to-send · the confirm button and the line above it.
  5. Tab 1, Valid. Everything here is already ticked: rows are shaded and the header checkbox is on. The address being used sits in the Work Experiences column beside the company, the work address, right under the Sponsor chip. In one example, 52 of the 62 picked there and not one fell back to a personal address.

    Whatever is listed under Additional Emails is an alternative. It is normal for those to be red. They are not the address being sent to, so a red alternative is not a problem to fix.

    Remove N from selection, top right, unticks the whole tab in one click. Useful when you meant to send only to the other buckets.

    The icons mean the same thing in all three tabs. Hover any of them; these are the tooltips:

    IconTooltipWhat it means for you
    green tickValidthe address is confirmed working
    red triangleInvalidknown bad. Sending here costs you sender reputation
    grey circleNot verifiednever checked. Not proven bad, just unknown
    blue arrowReplied from this emailthis person has written back from that address before
    green personPlatform Signupthey hold a Fintalent account
    Valid tab, everything pre-ticked
    A5.5.5: Valid. the three counts, adding up to your selection · header checkbox on, every row ticked · Remove 62 from selection · the address in use, on the work experience · an alternative address · an alternative that is Invalid. Harmless, it is not the one selected.
  6. Tab 2, Missing + Invalid. Nothing is ticked, and the pick has fallen back. In one example, 17 of the 22 had no usable work address, so the radio landed on a personal one under Additional Emails while the Work Experiences column shows the job with no address against it. That is what the tab name means: the work address is missing or unusable, not that the person is unreachable.

    The blue Replied from this email arrow is the best reason to tick one of these by hand. Someone who has already written back from an address is a far safer bet than the bucket label suggests.

    ⚠ One row had no address selected at allNot every row here has a pick. Tick a contact whose radio is empty and you add someone with nowhere to send, check the radio, not just the checkbox.
    Missing + Invalid tab, nothing pre-ticked
    A5.5.6: Missing + Invalid. the tab · nothing ticked · the pick fallen back to a personal address · a row with no address picked at all · Replied from this email.
  7. Tab 3, Platform Signup. These people already hold a Fintalent account. Nothing is pre-ticked. All 16 rows picked a personal address; none had a work one. The marker is the green person icon at the end of the row, hover it and it reads Platform Signup.

    This tab says nothing about address quality. An address in here can be green Valid and still sit outside the Valid tab, because holding an account is what put it here. Judge it on who the email is for, not on the data.

    ⚠ Skip this tab and you may miss the whole audienceIf the email is aimed at talents, these are your talents, leaving the tab unopened mails everyone except the people it was written for. Go back to the bucket table in A5.5.4 ↗ and decide deliberately.
    Platform Signup tab
    A5.5.7: Platform Signup. the tab · the green Platform Signup marker · a personal address, Not verified · a work experience carrying no address · the line that names both unticked buckets.

    The N results count and page numbers along the bottom belong to the marketing email list on the left, not to the contacts, 93 results was 93 MEs. The buckets are not paginated; each tab shows all of its rows.

  8. ⚠ Read the button before you click it. It will not add everyone you ticked. Confirm reads Add 2 of 6 contacts, and directly above it: Not ticked by default: 4 Missing + Invalid.

    Only the Valid bucket is pre-ticked. Contacts with a missing or unusable address are carried into the drawer but left unticked on purpose, so selecting six people and adding two is the expected outcome, not a fault. Worked example: six selected → Valid 2, Missing + Invalid 4 and Platform Signup 0 → button Add 2 of 6 contacts.

    If you want the excluded ones anyway, open the Missing + Invalid tab and tick them yourself, but fix the address first, or they will bounce (7.7a ↗).

  9. Confirm, and read the toast. It names both the number and the email: “Added to marketing email — 2 contacts added to M&A Executive Briefing - Berlin, October 2026.” That is your receipt, and the only moment the system tells you what actually went in.
    Success toast naming the count and the marketing email
    A5.5.9: the toast, bottom left over the sidebar. It names both numbers that matter: how many contacts went in and which marketing email they went into, and it clears on its own after a few seconds, so read it as it appears. A count lower than what you selected is the dialog holding back contacts with a missing or invalid email.
  10. Check the People tab. Go back to the ME: the People tab badge should carry the new total. If it does not match what the toast said, something was dropped; re-run the add rather than assuming it landed.

A5.6 · Remove contacts from the marketing email

The other half of the listAdding is A5.5 ↗; this is how people come back out. Same tab, same selection bar, but the confirmation behaves differently enough to be worth its own read.
  1. Open the ME → People tab and tick whoever should not receive it. The selection bar is the same one you used to add: the count, Select all N matching, Clear. The action you want is Remove contacts.

    Removing takes them off this marketing email only. The contact record itself is untouched: this is not Delete contacts, which lives on the Contacts page and is a different thing entirely.

  2. You get told twice, in two places, and they do not say the same thing.
    WhereWhat it says
    Banner, above the tableRemoved 1 contact, with an Undo beside it. Stays until you dismiss it.
    Toast, bottom leftRemoved 1 contact from M&A Executive Briefing - Berlin, October 2026, the only one that names the email. Clears on its own.

    If you work several MEs at once, the toast is the one that tells you which list you just cut into.

    Remove banner with Undo, and the toast naming the email
    A5.6.2: the banner and its Undo · the toast, the only place the email is named.
  3. Undo really does put them back. Worked example: two recipients, removed one, People went 2 → 1; clicked Undo and it went back to 2 with the contact returned. Because the banner waits for you rather than fading, a wrong bulk remove is recoverable, as long as you notice before you navigate away.
    🐛 After Undo the table lies until you reloadThe People badge corrects itself, but the list underneath keeps the post-removal total, it read People 2 and Showing 1 of 1 at the same time. Refresh before you trust the table, and count off the badge, not the footer.
  4. Once you leave the page, Undo is gone. There is no removal history and no bin to fish them out of, the only way back is to add them again from scratch (A5.5 ↗). On a Select all N matching removal that is a real cost, so read the count in the bar before you confirm, not after.

A5.7 · Test send: post it to yourself first

A marketing email goes to everyone at once, and there is no recall. Send it to yourself first and read the copy that arrives, not the one in the editor. You are checking four things: that it leaves at all, that the whole email is there, that the attachment came with it, and that it is readable in a real mail client.

  1. Open the ME → Template tab. The button is Test Send, top right of the step. It only exists once the template has been written, so on a brand new ME you will not find it until there is a step to send.
    Test Send on the Template tab
    A5.7.1: the Template tab · Test Send, beside the 🗑 on the step · the attachment, which is one of the things the test is for.
  2. The drawer opens with the email already in it. Title Send test email, the subject underneath, the sending account at the top, and the full body with its attachment below. The only empty field is To, and Send test email stays greyed out until you fill it.
    The Send test email drawer before a recipient is added
    A5.7.2: To, empty, reading Add recipient… · the send button, greyed out until there is one.
  3. Type an address you can actually open. Any address works: your own Gmail, your Outlook, a shared team mailbox. It does not have to be a Fintalent address and it does not have to exist in the system. Once the chip appears, the button turns solid.
    The drawer with a recipient added
    A5.7.3: the address as a chip, with an to take it off again · Send test email, now live.

    You can add more than one, and it is worth doing. Gmail, Outlook and a corporate mailbox do not render the same email the same way, and sending to all three at once shows you the differences side by side rather than one test at a time.

    Do not test on a real contactThe field takes any address, including one belonging to a contact on the People tab, and the email really is sent. There is no test mode at the other end. A prospect would receive an unfinished email with the merge tags showing, from the campaign you were about to run properly. Use your own inbox.
  4. Now read the email that arrived, not the one on screen. This is the whole point of the step, so go through it deliberately:
    CheckWhat you are looking for
    It arrivedand in the inbox, not in spam. Spam on your own test is a warning about the domain, not about the copy.
    The senderFrom shows the account you meant to send as (A5.x.4 ↗).
    The subjectcomplete, and not cut off in the list view.
    The bodyevery paragraph present, spacing intact, no block silently dropped.
    The attachmentthere, and it opens.
    The linksthe booking link and any tracked link go where they should.
    The test email as it arrives in Outlook
    A5.7.4: the same email in an Outlook inbox. the client has blocked part of the message, because the sender is not on its safe list · the picture, a grey placeholder · the merge tags, arriving exactly as they are written in the template.
    The merge tags staying as text is the correct resultA test send posts the template exactly as it is written. It substitutes nothing, because there is no contact behind it to substitute from, so {{contact.firstName}} arrives as those characters. That is the difference between this and the Preview tab, which renders the email per person (A5.8.2 ↗). Nothing to fix, and nothing to read into it.
    The picture is worth one more click before you judge itOutlook blocks remote content from senders it does not know and says so in the bar at the top, so a grey placeholder on the first look tells you nothing. Click Show blocked content and look again.

    In this test the bar went away and the placeholder stayed empty, so the image really had not come through. The block was not the reason. That is the whole value of the step: the template showed a file, the delivered email did not show a picture, and the only way to know was to receive one.

    The same email after Show blocked content
    A5.7.4: after Show blocked content. the warning bar is gone · and the picture is still not there. Unblocking was not what was missing.

    Anything genuinely wrong gets fixed on the Template tab and tested again. Only then move on to the run (A5.8 ↗).

A5.8 · Run a Marketing Email (activate + Force Send)

This is the handover pointThe SDR builds the ME and marks people reviewed (Flow 7 ↗). Only an Admin can make it send. Both controls below are invisible to the SDR login, so if a rep says “I finished it and nothing happened”, this is the step nobody did.
  1. Open the ME. Left menu → Sales Management → Marketing Emails, then click its name. The list tabs are All, Draft, Paused, Running and Finished, anything waiting on you is under Draft.
  2. Before you run it, check how much of it has been reviewed. The number lives on the Preview tab badge, and it reads reviewed / total.
    Preview badgeWhat it means
    5,197 / 5,197everybody has been reviewed. Safe to run.
    0 / 1nobody has. The SDR has not finished: send it back rather than running it.
    anything in betweenpart-reviewed. The unreviewed ones still go out, and they go out on the default template as-is.

    This is the one number worth stopping for. Force Send only reaches reviewed contacts (A5.x.2 ↗), so a half-reviewed ME quietly sends to fewer people than the People count suggests, and the Run dialog will tell you the same thing again in A5.8.3 ↗, which is your second chance to notice.

  3. Activate it: the switch at the very top right of the drawer, reading Draft. Flip it and a confirm opens, Run marketing email: “Sending starts as soon as you confirm. This cannot be undone.” Under that sits a count line reading recipients, email steps, reviewed, and a warning that unreviewed recipients “will receive the default template as-is”. Then comes a checkbox, I understand N unreviewed emails will be sent. It keeps the Run button disabled until you tick it. Last is a Review them now link, which closes the dialog and opens Preview.
    Read the three numbers before you tick anythingSay the ME holds 20 contacts but only 16 have been marked reviewed. The dialog prints 20 recipients, 1 email step and 16 reviewed and, underneath, 4 of 20 recipients have not been reviewed. They will receive the default template as-is. Those 4 still go out: on the untouched template. A reading of 0 reviewed means nobody on the SDR side has started; that is the moment to send it back rather than confirm.
    Confirm and the ME becomes Active (the list calls this Running), and the row picks up a Started on date in place of Draft (Created on…).
    Active is not the same as queuedTen minutes after confirming, an ME can still read Active with People 20 and Delivered 0 while both its own Email Queues tab and the site-wide Email Queues page show 0 rows. Activating sets the ME running; it is Force Send (A5.8.4 ↗) that pushes the emails into the queue. Do not read an empty queue straight after Run as a failure.
    It is easy to missThe switch sits right at the edge of the drawer, above the tab bar and past the description box. On a narrow browser window it can be pushed off the right-hand edge, widen the window rather than assuming the ME has no switch. It can fail the other way too: on a very wide window the whole header, name, description, owner and this switch, sometimes comes back blank and stays blank. So if the top of the drawer looks empty, resize the window before concluding anything is broken.
    The Draft/Active switch at the top right of the ME
    A5.8.3: the switch, reading Draft until you flip it · the owner block beside it. There is no Run button anywhere else on the screen.
    The Run marketing email confirmation with real counts
    A5.8.3: the confirm, on a real ME: 20 recipients · 1 email step · 16 reviewed, read this line first · the amber warning naming the 4 unreviewed · the acknowledgement you must tick · Review them now, which backs out to Preview with nothing sent · Run marketing email, greyed out until the box is ticked.
  4. Force Send: on the Template tab, top-right of the Step 1 panel, beside the red delete-step bin. This is the button that actually pushes the emails into the queue.
    Template tab and the Force Send button
    A5.8.4: the Template tab, where Force Send lives · People, the recipient count · Force Send, on the step itself rather than in the header · the step body. Note it reads undefined here, a defect reproduced on two separate MEs.

    Only contacts the SDR marked Content Reviewed are sent. Anyone left unreviewed stays put: which is the safety net, and also the usual reason the queue comes out smaller than the People count.

    Its confirm is much thinner than the Run oneIt shows the Subject and the Content and nothing else, no recipient count, no mention of attachments. The merge fields are still raw ({{contact.firstName}}), and it is titled “Force Send Campaign Flow” even on a Marketing Email. Take your numbers from the Run dialog, because this one will not repeat them.
    At zero reviewed, nothing is queued, and nothing says soWorked example: an ME with 3 recipients, activated and force-sent with 0 reviewed, produced an empty Email Queue tab and no message of any kind. It reads exactly like a failed send. Marking all 3 reviewed and force-sending again produced all 3 rows at once.

  5. Check the Email Queue tab. One row per email, and every row sits in exactly one of three states. The three counts add up to All. On Talent Handbook Launch — Aug 2026: All 5,197 = In Queue 372 + Delivered 4,820 + Cancel 5.
    StatusWhat it meansSent DateCan you still stop it?
    In Queuewritten and waiting. It has not gone anywhere yet, and it will go out on its own at the end of the day in the ME’s timezone.emptyYes: this is the only state you can cancel from.
    Deliveredgone. It reached the mail provider and left.filled inNo. There is nothing left to stop.
    Cancelpulled out of the queue before it went. It stays on the record as a row so you can see it existed.empty: already stopped; it will never send.
    Cancel only reaches the In Queue tabOnce a row flips to Delivered the email is out of your hands. If you need to pull something, pull it before the daily release. That is the entire window.
    In Queue rows
    A5.8.5: In Queue 372: the tab · the amber In Queue chip · Sent Date empty. Nothing has left yet.
    Delivered rows
    A5.8.5: Delivered 4,820: the tab · the Delivered chip · Sent Date filled in. That is how you tell it really went.
    Cancelled rows
    A5.8.5: Cancel 5: the tab · the red Cancel chip · Sent Date empty. Pulled before it sent, kept as a record.

    The queue count should match the reviewed contacts, not the People count. If it comes out smaller, review is usually the reason (A5.x.2 ↗).

    Full tour of the queue, its tabs and its row actions in 7.6 ↗. The SDR view of this tab can show 0 or “Couldn’t load” for a while, a display lag, not a failed send.

  6. Then hand it back. Replies land in the ME's own Inbox, and the SDR works them from there (Flow 7 ↗). Your part is done once the queue looks right.

A5.x · Edge cases

  1. Delete exists, but it disappears the moment the ME starts. The row is short and changes with status:
    ME statusRow menu
    DraftEdit/View Details · Delete · Manage assignee
    PausedEdit/View Details · Delete · Manage assignee
    Running (“Started on…”)Edit/View Details · Manage assignee, no Delete

    So the window for deleting is before it has ever run, or while it is paused. Once a ME has started it stays in the list for good. There is no archive to move it to either.

    Two statuses exist in the data that you never seeArchived and Scheduled are valid marketing-email statuses in the API and both appear in the status filter, but the list has no tab for either and no row action produces one. In one snapshot the five tabs accounted for every record (57 + 11 + 19 + 4 = 91). Treat them as not implemented rather than as something you can reach.
    Row menu on a Draft marketing email
    A5.x.1: a Draft ME: Delete is there.
    Row menu on a Running marketing email
    A5.x.1: the same menu on a Running ME: Delete is gone.
  2. Force Send only reaches reviewed contacts. Same rule as A5.8.3 ↗: people the SDR never marked Content Reviewed stay behind. A queue smaller than the People count usually means review, not a bug, check People before you chase it. At zero reviewed the queue is not built at all, and nothing on screen says why. The tab simply reads “No email queues yet”. Before treating a force send as broken, check the reviewed count in the Run dialog (A5.8.3).
  3. Cancelled ≠ failed. In the example the queue reads Delivered 1 and Cancelled 2 of 3 people. Cancelled rows were pulled before sending (unreviewed, suppressed, or lifecycle-excluded), they never hit the provider, so they don't count against the domain.
  4. Change the sending account before, never during. The sits on the owner avatar in the top-right of the ME header. Clicking it drops the full list of accounts, and picking one applies immediately, no confirmation, no toast, the header simply rewrites itself.
    Changing the sending account from the gear on the owner avatar
    A5.x.4: the owner avatar with its badge · the account list it opens · the header a second later, now reading the new account. The switch takes effect on the spot, with nothing to confirm.
    Never mid-runSwitching the account on a Running ME splits the thread: what already went out keeps the old From, and replies to it land in the old inbox. Pause → switch → resume. Because the control asks for no confirmation, there is nothing to catch a mis-click, check the ME status before you touch it.
  5. The Timeline tab works exactly as the campaign one, same actor + before→after format, same Simple / Advanced search. See A4.5 ↗ rather than repeating it here.

ADMINA6 · Approve a new talent (decides Active or Passive)

Goal: keep clients out of the talent supply. A client is someone who sits on the buy side today, holding a role at a PE fund, or running a company a fund owns. Clients must be Passive so they never enter the project-invitation flow. Everyone else is talent and stays Active.
FlowWhat you do in itWhen you use it
A6-A · Review the In Review queue ↗ Work through the new sign-ups one profile at a time. Read what the system recommends, check it against the profile, then reject the person or approve them to Active or Passive. Somebody new signed up. They sit at In Review and cannot be invited to anything until you decide.
A6-B · Re-check an existing status ↗ Go back over talents already marked Active or Passive. Filter for the ones where the system disagrees with the status on file, read them, and either change the status or leave it. You want to know whether the statuses you already have are still right. Profiles change after they are approved; the status does not follow on its own.

Both lean on the same recommendation, and the rule behind it is written out in A6-A.6 ↗. It is advice on every screen it appears, never an action.

A6-A · Review the In Review queue

Goal: a new sign-up lands at In Review and waits for someone to look at it. You have three ways out: reject the person, approve them to Active, or approve them to Passive. The system offers a recommendation on every profile, but the button you press is the decision.
Active and Passive, in one lineActive means the person can be invited to projects. Passive means they stay on the platform but out of the invitation flow, normally because somebody already pays for their week. It is a routing decision, not a punishment and not a judgement on quality. Getting it wrong sends a project invitation to a person who cannot take it, or hides someone who could.
  1. Open the queue. User Management → Talents, then the N In Review button at the top right. It is the only way in; there is no In Review tab on the list. Clicking it opens a drawer showing one profile at a time rather than filtering the table.
    The In Review button on the Talents list
    A6-A.1: the N In Review button, top right, the only door into the queue · the full talent count beside it.
  2. Move between profiles without going back to the list. Top right of the drawer sits a pager, ‹ N/280 ›. The and keys do the same thing.
    On a narrow window, use the keyboardThe pager sits at the far right edge of the drawer and is the first thing to fall off screen. The arrow keys keep working when the buttons are not visible, so a queue can be walked end to end without ever seeing the pager.
    The pager at the top right of the drawer
    A6-A.2: previous profile · where you are in the queue · next profile. Underneath, the same corner on a narrower window: the pager is gone, and the arrow keys are all you have.
  3. Read the recommendation. The status chip reads In Review and carries a ⚠ warning icon beside it. Hover the icon and you get two lines:
    LineWhat it isExample
    Recommend: <status>what the rule would pick if it decidedRecommend: Active
    the sentence under itwhich of the five questions produced that answerActive, self-directed, and nothing ties them to a client company.

    The full rule, all five questions and every sentence it can print, is in A6-A.6 ↗.

    The recommendation tooltip on an In Review profile
    A6-A.3: hover the warning icon. Status on top, the reason underneath.
  4. Check it against the profile yourself. The recommendation is a reading of three fields, nothing more. Read the same three before you accept it:
    What to readWhere it isWhy it matters
    Employment Statusthe header line, under the titleFull-time or Part-time is the strongest signal for Passive. Freelancer, Unemployed and Other point the other way
    Current title and companyWork Experiences, the rows with no end datewording like freelance or independent consultant says self-directed whatever the status field claims
    Company flagon the linked company: Sponsor, Portfolio or Corporatea current role at a flagged company is the one condition that outranks everything else
    The recommendation is advice, not an instructionIt reads fields; it does not read judgement. A profile can be technically self-employed and still be unavailable, or say Full-time and be about to leave. That is exactly why there are two approve buttons instead of one.
    The two fields to read on the profile
    A6-A.4: Employment Status on the header line, the first field the rule reads · the roles with no end date, the only ones that count. The company flag is not on this tab.
  5. Take one of the three routes, then check it landed. The toolbar at the top of the drawer carries all three:
    The In Review drawer with its three action buttons
    A6-A.5: the toolbar, with the three ways out: the three ways out · the In Review chip and the warning icon holding the recommendation · Employment Status, the first field the rule reads.
    ButtonResulting statusWhen
    Reject (red)Rejectedthe person does not belong on the platform at all
    Approve to Active (green)Activethey can take project work now
    Approve to Passive (orange)Passivethey belong here, but somebody else already has their week

    A confirm opens repeating the name, email and title so you can check you are on the right record, with Exit and Approve.

    The confirm does not name the statusIt asks “Do you want to approve this Talent?” and nothing more. Which status you are about to set came from the button you pressed, and there is no second chance to read it back. Check the button colour before you confirm.

    What happens next: the record leaves the queue and the count drops by one. The drawer stays open on the next profile, so a queue can be worked straight through. To confirm the status really changed, search the talent by name or email on the Talents list and read the chip.

    The approve confirmation dialog
    A6-A.5: the confirm names the record but not the status.

A6-A.6 · The rule that runs today

What this is: the rule behind every recommendation, read off the engine's own output rather than guessed at. It never changes anybody's status. It feeds the warning icon in the queue, the icon beside the status chip on the list, and the Recommend Status filter.

Five steps, in order, and it stops at the first answer

#What it readsOutcome
1Employment Status, and nothing else. Full-time or Part-time employee → Passive. Never answeredActive. Anything else (Freelancer, Other…) → carry ondecided here in most cases
2Is any role marked current? No → there is nothing that could hold themActive, stop
3Does a current job title or employer contain a freelance keyword?Active, stop
4Is a current role at a company flagged portfolio, sponsor or corporate?Passive, stop
5Nothing matchedActive, the fallback
Step 1 decides most records without opening the profileThree of the seven outcomes are settled on that one field, and the engine says so in its own words: “Profile was not examined — employment status alone decides this” for a Full-time or Part-time employee, and “Profile was not examined — this path skips every profile check” when the field was never answered.

The second one is the uncomfortable case. A blank field produces Active, so a talent who never finished sign-up is treated as available, and no current role, no employer and no company flag is ever looked at.

Every sentence the rule can print

Seven, no more. Whichever one you see on the tooltip, this is the step behind it:

The sentence you seeIt recommendsDecided at step
employed full-timePassive1
employed part-timePassive1
employment status was never answered, so availability is assumedActive1
no current role on the profile, so nothing marks them passiveActive2
the current role reads as freelance or independentActive3
currently works at a client company (portfolio, sponsor or corporate)Passive4
self-directed, and nothing ties them to a client companyActive5

Not every talent carries a recommendation. Where the icon is missing the rule has no opinion on that record, which is not the same as agreeing with the status it already has.

The freelance keywords at step 3

Matched against the current job title and the current employer name. These are the ones seen firing, taken from the engine's own record of what it matched:

independent   freelan   self-employed   self employed   remote   contractor

🐛 The match is loose, and it produces wrong answers It matches inside words and inside company names. freelan is a stem, so it catches freelance, freelancer and freelancing. independent matches on its own rather than only in independent consultant, which is how a talent whose employer is “Independent Record Label” comes out Active. An independent record label is a company, not a way of working.

And two of the keywords have nothing to do with being self-employed. remote describes where somebody sits, not who pays them; a full-time employee working from home matches it. contractor is closer but still catches people on long contracts to a single client.
The reasoning is recorded, but never shownBehind each recommendation the engine keeps an evidence list, three or four lines naming what it actually read: the employment status, how many current roles, whether any keyword matched, which company was checked and what flag it carries. None of it reaches the screen. The tooltip prints the one-line summary and stops, so a reviewer re-does by hand the work the engine already did and wrote down.

How to read a company flag, and how not to

The flag is the S / P / Corporate badge sitting next to the company name, on a role with no end date. You see it on the talents list and in the Work Experience tab. No badge means no flag, and nothing else on the profile counts as one.

These are NOT flags: do not read them as one “CFO of VC-backed SaaS…” in the role description. That is text the talent typed about themselves. Syed Ishaque Hasib’s current employer reads exactly like a portfolio company and carries no flag at all.

② Company Background = PE-Backed / Portfolio Company, an AI label inferred across the whole career, not a fact about today’s employer. Syed carries PE-Backed (8 yrs) from past roles.

③ the company’s own description: only S6 reads a description, and S6 is still open.

Getting this wrong is easy: on Syed’s record all three lookalikes say portfolio company, and the flag says nothing. Check the linked company before concluding.

A shortcut that has held on 4 of 4 records checked: the header line next to the status chip shows a green Corporate badge exactly when the current employer carries the flag. Arnaud and Athanasia have it; Syed and Mark do not, and neither of their current employers is flagged. Useful for a fast eye check, but confirm on the Work Experience row before acting on it.

What counts as junior or back office

A judgement cue, not a stepThe rule does not read seniority at all. An Analyst at a flagged company is recommended Passive like anybody else. The list below is here because a reviewer can still weigh it by hand, and because it is the exception most often argued for. If it should be part of the rule, that is a decision to take, not a reading to assume.

Read the POSITION on the current row. It is authoritative.

Analyst, Associate, Junior, Intern, Internship, Trainee, Apprentice, Werkstudent, Working Student, Student, MBA Candidate, Teaching Assistant, Investor Relations, Fundraising, Fund Finance, Capital Formation, Fund Accountant, Fund Controller, Taxation and Business Partner

Match whole words. Matching on part of a word turns “M&A International Manager” into an intern.

This is A6-A.7 ↗ from our business rule, moved into the intake path, same list, but it now runs at approval and before the company check.

A6-A.7 · The rule as proposed

Not built. This is a proposalNothing in this section runs anywhere. The rule in use is A6-A.6 ↗. Read this as the change being asked for, and as the reasoning behind it.

The proposed order

#QuestionYes →No →
Q1Is any current role at a company flagged Portfolio, Sponsor or Corporate?PassiveQ2
Q2Does a current role title or employer name indicate independent work?ActiveQ3
Q3Is any role marked as current?Q4Active
Q4Is Employment Status Freelancer, Unemployed or Other?ActiveQ5
Q5Is Employment Status Full-time or Part-time?PassiveActive, fallback

Proposed keyword list for Q2: freelance, freelancer, fractional, independent consultant, independent advisor, self-employed, interim. Note what is not in it: remote and contractor, both of which fire today, and bare independent, which is the source of the record-label false positive.

What actually changes

The questions are nearly the same. The order is reversed, and since the rule stops at the first answer, the order is the decision:

Runs todayProposed
Asked firstEmployment StatusCompany flag
Asked lastCompany flagEmployment Status
Blank statusearly exit → Active, profile never openedfalls to the fallback, after the flag and the keywords have been read

The profiles that come out differently

ProfileTodayProposed
Full-time employee, no flagged employerPassive at step 1Passive at Q5: same answer, more work
Full-time employee at a flagged companyPassive at step 1Passive at Q1: same answer, better reason
Freelance wording in the title, current role at a sponsorActive: the keyword fires before the flag is readPassive: the flag fires first
Employment status blank, current role at a sponsorActive: decided on one empty fieldPassive: the flag is read first
The argument for the change, in one lineWhere somebody works outranks what they call themselves. A current role inside a client's organisation is a conflict before it is a scheduling problem, and it is a fact we hold in our own company data. Employment Status is the weakest evidence in the profile: self-reported, often stale, and blank on a large share of records. Today the weakest field is asked first and the strongest last.

Decide these before it is built

#QuestionWhy it matters
1Is a junior at a flagged company really Passive?Under the proposal, an Analyst or Associate at a sponsor firm becomes Passive, because nothing overrides Q1. Two records were once ruled Active by hand for exactly this reason. The rule and those rulings cannot both stand
2Should an advisory or sell-side employer be an exception?Somebody at a boutique advisory is arguably a peer rather than a client. It has never been written into either rule
3Do the loose keywords get fixed at the same time?remote and contractor firing today, and bare independent matching company names, are wrong regardless of which order wins. Worth fixing whether or not the reorder happens
4Blank employment statusThe proposal stops treating it as an early exit, which is an improvement. It still ends at assume available on a field nobody filled in
5Company matching qualityThe biggest risk either way. Roughly 63% of talents have a current employer never matched to a company record, so the flag question cannot fire at all for them. Putting it first makes that gap matter more, not less. See A6.x.5 ↗

A6-B · Re-check the status of a talent you already have

When to run this: when you want to know whether the statuses already on the platform are still right. It applies to Active and Passive records, not to the queue. Nothing here is automatic: the system points, you decide.

A6-B.1 · Read what the system thinks

  1. The icon beside the status chip tells you whether the two agree. It is on the Talents list and on the profile drawer, in both places, in the same shape:
    IconMeaningWhat to do
    ⚠ warningthe current status does not match what the rule would pickworth opening; it may be right anyway
    ⓘ infostatus and recommendation agreenothing to do
    no iconthe rule has no opinion on this recordjudge it by hand or leave it

    Hover either icon for the same two lines as in the queue: the recommended status, then the reason.

    Warning and info icons on the talents list
    A6-B.1: warning, status and recommendation disagree · info, they agree.

A6-B.2 · Active → Passive

  1. Build the list of candidates. On Talents, set Statuses = Active. Then + Add filter → under Availability & Engagement tick Recommend Status, which pins it to the filter bar. Open it and pick Passive. The dropdown offers only Active and Passive.

    What comes back is every Active talent the rule would have made Passive. 737 of them when this was walked, so treat it as a working queue rather than a list to clear in one sitting.

    Statuses Active plus Recommend Status Passive
    A6-B.2a: Statuses = Active · Recommend Status = Passive · what falls out.
  2. Open one and read it before you touch the chip. Same three fields as A6-A.4 ↗: Employment Status, the current title and company, and whether that company is flagged. Leaving it alone is a valid outcome, the rule is often pointing at a record that a human already judged correctly.
  3. Change it from the status chip. The chip on the profile carries a caret. Click it and you get exactly one alternative, Passive. Picking it opens Set Talent Status to Passive, which asks for a reason:
    ReasonNeeds typing?
    Unable to verify freelance status (pre-selected)no
    Evidence insufficientno
    Reference unresponsiveno
    Otheryes, in the Reasons box

    Then Yes. The chip flips to Passive and the icon beside it changes from warning to info, because status and recommendation now agree.

    Two things to watch in this dialogThe first reason is already selected when it opens. Press Yes without reading and you have filed “Unable to verify freelance status” on a record where that may be untrue.

    🐛 And Other does not actually enforce anything. Picking Other and leaving the Reasons box empty saves without complaint, no error, no disabled button. The reason is meant to be required and is not.
    Set Talent Status to Passive
    A6-B.2c: pre-selected reason · Other · the Reasons box, on screen whichever reason is picked.

A6-B.3 · Passive → Active

  1. The same walk, with the filters the other way round and no reason to give. Set Statuses = Passive and Recommend Status = Active, open a record, read it, then click the chip and pick Active.

    Set Talent Status to Active asks one question, “Do you want to set Active for <name>?”, and offers Exit and Yes. No reason list, no free text.

    Only one direction is asked to explain itselfMaking somebody Passive takes them out of the invitation flow, so the system asks why. Putting them back does not, which means a record can go Active with nothing on file about who decided or why. If you want that written down, put it in Notes yourself.
    Set Talent Status to Active
    A6-B.3: the whole dialog. Nothing to fill in.

A6-B.4 · Review Passive: the talent asks to be looked at again

The two flows above are you deciding to revisit somebody. This one starts with the talent. A person you have already filed as Passive can send in a request to be reassessed, and when they do, their status changes on its own to Review Passive and they turn up in your queue.

  1. They arrive in the same queue as everyone else. The button at the top right of Talents is labelled N In Review, but the number covers both statuses.
    Filter the list byCount
    Statuses = In Review278
    Statuses = Review Passive2
    the queue button says280

    So a resubmission is not sitting somewhere separate waiting to be noticed. It is in the queue, mixed in with the new sign-ups. To see only the resubmissions, filter the talents list on Statuses = Review Passive instead of opening the queue.

  2. Open the profile and read what they sent. A Review Passive profile carries the orange Review Passive chip, and the Summary tab opens with a block the other statuses do not have: Talent Resubmit since <date>, holding the evidence they supplied.
    FieldWhat it is
    Reference Emailsomebody who can vouch for them. Often a different address from the one they signed up with.
    Reference Linkedinthat person’s profile. A dash means they left it out.
    Additional Context of Requestanything they wanted to say. Frequently empty.
    A Review Passive profile
    A6-B.4b: the Review Passive chip · what the talent submitted · three buttons instead of the usual two.

    Read it against the rule the same way you would any other profile (A6-A.4 ↗). The question is whether the employment situation that made them Passive has actually changed, and whether the reference backs it up.

  3. Decide, using the three buttons at the top right. They are not the same buttons a new sign-up gets, and each one says where it lands if you hover it.
    ButtonStatus afterwardsWhen
    Approve Review PassiveActivethe change is real and the evidence holds. Confirms with Set Talent Status to Active.
    Reject Review PassivePassivethe request does not stand up. They go back where they were, not out.
    RejectRejectedthey should not be on the platform at all. A different decision from the one above, and much heavier.
    Reject and Reject Review Passive sit next to each otherOne puts them back to Passive, which is where they already were. The other files them as Rejected. The labels differ by two words and the buttons are both red. Hover before you click, the tooltip names the status you are about to set.
  4. Rejecting a resubmission asks you why. Reject Review Passive opens Reject Status Update Request. Pick one of four reasons, add a note if it helps, then Confirm Rejection, which stays greyed out until a reason is chosen.
    Reject Status Update Request dialog
    A6-B.4d: the four reasons · the free-text box · Confirm Rejection, greyed out until you pick one.

    The four are Unable to verify freelance status, Evidence insufficient, Reference unresponsive and Other. Three of them are about the reference they gave you, which is the point of collecting it: the reason is a record of what you checked, not a formality.

    Approving asks nothing beyond a yes. Only the rejection wants a reason, so the case for turning somebody down is written down and the case for letting them through is not.

A6.x · Edge cases

  1. The In Review queue, new sign-ups waiting for approval. The N In Review button at the top right of the talents list opens the queue one profile at a time.
    In Review profile toolbar
    A6.x.1: status chip reads In Review and is not editable · Reject Talent → status becomes Rejected; Approve Talent → confirmation dialog, then the talent enters the normal pool · pager, step through the whole queue without going back to the list · Employment Status, visible on the header.

    Approving does not simply mean “Active”. The confirmation dialog repeats the name, email and title; on Approve the system then applies an automatic rule and picks the resulting status itself. The rule is the five-question spine in A6-A ↗, employment status, then the position and company of each current role, then the flag on those companies. It records when the status changed but not why, so the profile gives no explanation afterwards.

    An unlinked company can never fire it. The trigger is the flag on the linked company, an ongoing role at a company that was never matched to the Mergermarket list does not fire Q5, whatever that company actually is. Roughly 63% of talents have a current employer in that state (A6.x.5 ↗).

    This is where most wrongly-Passive talents come fromFreelancers get set Passive at approval time purely because they hold a current job at a flagged company, whatever the seniority of that job. An Analyst or Associate is supply, and the rule has no check for it. Nobody clicked anything, and because the rule writes no reason, the profile gives no explanation afterwards. If you are auditing Passive talents, start here.

    Ruled 28 Jul 2026: this is intended behaviour, not a defect, but it is narrower than the business rule. The system deciding a status at approval is by design. Two gaps remain, and both are for a human to close: it fires on a plain corporate flag, which is group D and out of scope; and it never reads Employment Status, so it cannot enforce the gate in A6-A.7 ↗. Neither gap is logged as a bug. They are the reason the the retired existing-records branch branches exist.

    Two things worth knowing about the queue itself:

    • After each decision the drawer advances to the next profile and the counter drops, so the whole queue can be worked without returning to the list.
    • The queue drawer does not put the talent id in the URL, so a profile being reviewed cannot be linked to. Opening the same person from the list does give you an address you can copy, and the Approve / Reject buttons are there too, so use that route when you need to share or come back.

    The chip is locked while the status is In Review, so a client has to be approved first and set Passive afterwards per A6-A.7 ↗.

  2. ReviewPassive: a Passive talent resubmitted their profile. The profile shows a Talent Resubmit since <date> panel next to the original Passive reason, and the toolbar offers three buttons instead of two:
    ButtonResulting statusWhen to use it
    Approve Review Passive (green)Activethe new evidence answers the original reason
    Reject Review Passive (red)Passivenothing material changed, back to where they were
    Reject Talent (red)Rejectedthey do not belong on the platform at all

    The Summary tab opens with a Talent Resubmit since panel carrying what the talent supplied to support the request: Reference Email, Reference Linkedin and Additional Context of Request. Those three fields are the evidence you are judging. An empty panel means they asked for reactivation without supplying anything.

    A talent in Review Passive
    A6.x.2: the chip reads Review Passive and is not editable · the three decision buttons · the Talent Resubmit since panel with the supporting fields · Employment Status, still worth reading.

    Always read the original Passive reason first. It is shown on the same screen. Approving without checking whether the resubmission actually addresses it defeats the point of the queue.

  3. You cannot change status for several people at once, but two bulk actions still affect the result. Bulk Actions offers Export PDF Talents, Add to list, Remove from list, Export Talents (CSV), Set Skip Review, Set Require Review, and nothing else. Every status change is one profile at a time; for a long list, Add to list first and split it between people.

    Set Skip Review does not change the Active / Passive outcome. It flips the talent's internal status to Skip Review, but that field is not part of the automatic rule ↗, confirmed 30 Jul 2026 by a record with no Skip Review that the system still set Passive at approval. Whatever else the two review flags do, they do not decide the status. Set Require Review is the opposite action.

  4. The headline says one thing, the job history says another. Common and important. Seen in practice: a title reading "Freelance, former Private Equity Professional" on a profile whose work experience still shows an ongoing role at a PE fund. The title claims they left; the data says they did not. Open the row and check the end date before deciding.
  5. Most current employers are not linked, so company flags are missing. Roughly 63% of talents have a current role whose employer was never matched to the Mergermarket company list, no Sponsor / Portfolio / Corporate flag to read. For those people the title and the free-text company description are the only evidence. This is also why the Work Experience filter cannot replace the title check: every one of the strongest buy-side hits found sat at an unflagged company.
  6. No filter finds bosses of companies a fund owns. These are the people in group C, the CEO or CFO of a business a PE fund has bought. The box that ought to find them, Corporate / Industry → PE-Backed / Portfolio Company, is attached to nobody at all: zero people, everywhere. Reach them a different way: the Work Experience filter with company type = Portfolio and Currently, which returns 156 people.
  7. Where the Passive reason is saved, and why the profile looks empty. The reason you type is written to the activity log, not to the talent record, which has no field of its own holding it. It surfaces in the tooltip on the status chip and in the Passive since panel.

    The Activity Logs tab is the audit trail. Each entry reads “Admin <name> changed talent status to <status>” with a timestamp. Two limits to know:

    • A status set by the automatic rule at approval carries no reason, the entry only says the status changed.
    • The entry for an approval reads “approved talent review (moved from Review Passive) even when the talent was in In Review, not Review Passive. The wording is fixed, so do not read the previous status from it.
  8. A company can be tagged with the wrong type. The tags come from an outside data source, so they are not always right. The company data has investment banks flagged as sponsor, and at least one talent linked to an entirely different company than the one named in their title. When a familiar name produces a surprising result, check the company record before concluding the talent is misclassified.
  9. Going Passive does not stop any work already under way. Passive only removes someone from the project-invitation flow. Running contracts, timesheets and invoices are unaffected, see B3 ↗.
  10. Sending a talent back to In Review. More Actions → Switch to In Review opens a drawer listing the talent's applications, with the rule stated at the top: “Can't switch if application status is Connected / In Interview / Draft Agreement / Hired”. Confirm with Switch and the status returns to In Review, which brings the Approve / Reject buttons back. The internal status is left untouched.

    The rest of that menu: Delete, Delete Permanently, Parse CV, Upload CV, Update gender, Skip Project Invites, Hero from website and Hidden from website.

ADMINA6† · Approve a new talent · audit

A decision-maker’s view of the same rule documented in A6 ↗. What it costs when it is wrong, what to fix first, and what is still undecided. The operator’s view, with the click path, stays on the A6 page.

Validated on live records · Sections 1–7

Approve a new talent, the decision, audited

Reverse-engineered from live behaviour, not from source. Scope: the admin app, In Review queue → Approve Talent, the moment the system chooses a status on its own, with no picker and no reason recorded.

Walked
30 Jul 2026
Access
Read‑only
Validated
7 records · 2 by tooltip
Queue
2 live · 286 in sample
Rule
7 steps · 2 reach Passive
Register
12 defects · 3 quick wins
Decisions
5 settled · 3 open

Headline finding

A job title never makes anybody Passive. After the employment-status gate, only a Mergermarket flag on the current employer can produce Passive, and a junior title vetoes even that. The flag is necessary, not sufficient.

Which means the decision rests almost entirely on one lookup that fails quietly: roughly 63% of talents have a current employer that was never matched to a company record, and an unmatched company can never raise a flag. Every journey below treats that lookup as the load-bearing step.

01

Executive summary

Audience: Product / PM / CEO
  1. Quick win 1, check seniority before checking the employer. The rule running today has no seniority test at all, so an Associate holding a job at a flagged company is filed as a client. One live record: a 7-year M&A associate at a boutique investment bank, shut out of every project invitation from his first day, no reason recorded. Worth: the single largest class of wrong verdicts. About a day.
  2. Quick win 2: stop treating a missing answer as an answer. 27% of the queue never finished sign-up and has no employment status. Today they are filed Active on the strength of one unread field, without the profile being opened. Worth: removes the largest blind branch in the rule. Under a day to gate; the policy call is the slow part.
  3. Quick win 3: record why. An automatic Passive stamps passiveDate and writes no reason, so the profile cannot explain itself afterwards and nobody can audit a batch. Worth: makes every future disagreement checkable instead of re-derivable. About a day.
  4. There is no rule page and no status picker. The decision happens on the Approve click, and a tooltip on that button is the only warning, it names the outcome but never which test produced it.
  5. Exactly two things make somebody Passive: the employment status they picked at sign-up, and a flag on the company of a role marked current. Everything else in the walk can only push towards Active.
  6. Four of the seven validated records turn on that flag step, and two of those four turn on the company simply not being linked to any record. The verdict for those two is decided by a missing row, not by anything about the person.
  7. Company matching is the weakest link in the chain. Three faults in seven records, all at the deciding step: one company held two records carrying different flags and the role linked to the wrong one; one linked to nothing; one linked to a subsidiary acquired in 2016 instead of the parent.
  8. The timeline reads like a human decision when it is not one. An automatic change is stamped with the approving admin’s name. The only reliable discriminator is the transition recorded inside the entry, InReview → Passive is the machine; anything else is a person.
  9. Two beliefs held earlier are wrong and have been withdrawn: that a corporate flag is out of scope, and that the internal Skip Review flag gates the check. A record with no Skip Review was still filed Passive at approval.
  10. The register below scores 12 defects. Three are quick wins. The three most valuable things to fix are the missing seniority test, the blank employment status, and the silence of an unmatched company.
02

What the rule reads

Audience: engineering

Five inputs, and a longer list of things that look like inputs and are not. The second list is where the mistakes come from, on one record every lookalike said portfolio company while the actual flag said nothing at all.

InputFieldWhere it comes fromKey states
Employment status talent.employeeStatus picked by the talent at sign-up; shown on the profile header line FullTimeEmployee · PartTimeEmployee · Freelancer · Unemployed · Other · blank: 27% of the In Review queue
Current roles workExperiences[] where ongoing = true talent-entered none (6% of the queue) · one · several. ongoing = true can sit on a row whose to date has already passed, the UI trusts the flag and prints Until Now
Position workExperiences[].position talent-entered, one per row free text. Differs from the profile headline on 49% of records that have a current role, headline “Investment Manager (Infrastructure Private Equity)”, row Investment Leader
Company name workExperiences[].company talent-entered, free text often a placeholder rather than a company: Freelance, Self-employed, Various, N/A, or the person’s own name
Company flag linkedCompany.isSponsor / .isPortfolio / .isCorporate set by the Mergermarket match on that work-experience row no linked company at all, about 63% of current employers · linked but unflagged · S / P / Corporate. On screen: the badge beside the company name in the Work Experience tab
Read by nothing in the rule, the profile title, the company description, the Company Background labels, totalApplications, totalAccepted, seniorityLevel, and internalStatus (Skip Review / Require Review). Every one of these has been mistaken for evidence at least once.

Three things on one record look like a flag and are not. A role description reading “CFO of VC-backed SaaS…”, which is text the talent typed about themselves. A Company Background of PE-Backed (8 yrs), an AI label inferred across a whole career rather than a fact about today. And the company’s own description of itself. The flag on that record: none.

03

The walk

Audience: engineering / Product

Seven tests, top to bottom, first match ends the walk. A talent walks between one and seven of them. Order is load-bearing: S5 sits in front of S7 because a junior at a flagged employer must come out Active, and testing the flag first makes that impossible.

StepTestOn yesWhat it costs to evaluateSample queue
286 records
S1 Employment status is Full-time or Part-time employee? Passive one field. The profile is never opened. No escape hatch: applications and accepted invitations do not save them 36 · 13%
S2 Employment status is blank? Active (open, see §07) one field 76 · 27%
S3 No role marked current? Active + a count of rows with ongoing = true. Nothing left to test 18 · 6%
S4 A current role’s position or company contains freelance wording? Active + read the position and company of every current row 9 · 3%
S5 A current role’s position is junior or back office? Active same two fields, matched on word boundaries. The company is never read : new
S6 A current role’s company is advisory or sell-side? Active + the company record. In the flow; has never fired : new
S7 A current role’s company carries a Mergermarket flag? Passive + the flag lookup on every current company. S, P and Corporate all count 35 · 12%
: Fell through everything Active the full walk, nothing proved them Passive 112 · 39%

Outcome on the sample queue: Passive 71 (25%) and Active 215 (75%). Counts are the rule as built today, which has no S5 and no S6. Those two steps are the rebuild, and they will move records out of the 12% and the 39% rows. 46% of the queue never gets past S2: the employment-status field decides it alone.

Flow: the deciding path

Admin clicks Approve
│
├─ S1  Employment status is Full-time or Part-time?
│        YES → PASSIVE            no escape hatch
│  NO ▼
├─ S2  Employment status is blank?
│        YES → ACTIVE             still an open question
│  NO ▼
├─ S3  Any role marked current?
│        NONE → ACTIVE            nothing to test
│  AT LEAST ONE ▼
├─ S4  Freelance wording in the position or company?
│        YES → ACTIVE
│  NO ▼
├─ S5  Position is junior or back office?
│        YES → ACTIVE             the company is never read
│  NO ▼
├─ S6  Company is advisory or sell-side?
│        YES → ACTIVE             not built yet
│  NO ▼
├─ S7  Company carries a Mergermarket flag?
│        YES → PASSIVE            sponsor, portfolio OR corporate
│  NO ▼                          no flag, or no linked company
└─ ACTIVE                         fallback
Rule

The flag is necessary, not sufficient

After S1, a Passive verdict requires a flag, but a flag does not produce one. S4, S5 and S6 each hold a veto. A title can only ever veto; it can never trigger.

Title on the current rowCompany flagResultLive case
freelance wording (S4)flaggedActivenot yet seen
junior / back office (S5)flaggedActiveIman Dakhlaoui · Athanasia Panteli
advisory / sell-side (S6)flaggedActivenot yet seen
nothing to veto withflaggedPassiveArnaud Leblanc
nothing to veto withno flagActiveSyed Ishaque Hasib · Mark Cox
junior / back officeno flagActivenot yet seen

The pair that fixes the step order in place: Iman Dakhlaoui: flagged employer, still Active, because Associate vetoed at S5 before S7 ran; and Mark Cox, no veto available, still Active, because S7 found no flag to fire. Same verdict, opposite reasons. Move S5 behind S7 and the first one breaks.

J1

Approve one talent out of the queue

Trigger
The N In Review button at the top right of the Talents list
Goal
Get the record out of the queue with the right status on it.
Persona
Admin / data operations
StageWhat the admin doesWhat the screen gives backExpected resultDefect
1 OpenClicks N In ReviewThe first profile opens in a drawer with a 1 / N pagerStep through the queue without returning to the listPP-12
2 ReadReads the header line and the Work Experience tabEmployment Status on the header; position, company and flag badge per rowEnough to answer S1–S7 by eyePP-02
3 PredictHovers Approve TalentTooltip: “Talent status will be updated to Active”, or a Passive variant naming full-time employment or a flagged companyThe outcome, in advancePP-09
4 ApproveClicks Approve in the confirm dialogNo status picker. The rule runs and writes the statusRecord leaves the queue; Approve / Reject disappearPP-03
5 VerifyReopens the record from the listThe status chip, now editableChip matches what the tooltip promisedPP-07
Happy
Tooltip and chip agree with the admin’s own reading; one click per record; the pager advances.
Disagrees
Approve anyway, then flip the chip. It is read-only while the status is In Review, so correcting is always a second, separate act.
No evidence
Employment status blank, or no role marked current: the rule answers Active without the profile being read. The admin has only the position text to go on.
Flag wrong
Verified three times in seven records, a duplicate company record, an unmatched company, a subsidiary standing in for its parent. The chip is confidently wrong and records no reason.
J2

Correct a verdict the rule got wrong

Trigger
The chip does not match what the admin concluded in J1 stage 2
Goal
Put the right status on the record and leave a trace that survives.
Persona
Admin / data operations
StageWhat the admin doesWhat the screen gives backExpected resultDefect
1 UnlockWaits for approval to finishThe chip becomes editable only once the status is Active or PassiveCorrection is possiblePP-12
2 SwitchClicks the chip, picks the other valueThe dropdown offers exactly one alternativeStatus changes,
3 ExplainOn Active → Passive, picks a reasonA radio group, with Other and a free-text boxA reason is stored on the recordPP-03
4 TraceOpens TimelinesAn entry with the admin’s name and the transitionFrom now on the record counts as hand-set and a migration will leave it alonePP-07
Happy
One profile, two acts: approve, then correct. The timeline shows a transition that is not InReview → Passive, which is what marks it as a human decision.
Asymmetry
Passive asks for a reason. Active does not, so a corrected-to-Active record carries no explanation of why the rule was overruled.
No trace
The talent audit log only starts around April 2026. On older records a Passive with a stamped passiveDate and no entry at all cannot be told apart from a hand decision.
Not bulk
Status cannot be changed for several people at once. A batch means opening every profile.
04

Validated cases

Audience: Product / engineering

Seven live records. Records 1–2 were predicted first and then checked against the system’s own Approve tooltip; 3–7 were settled by ruling. Every one of them changed or confirmed something in the walk, and no case failed because a field was read wrongly. The misses were all missing steps or undecided policy.

#RecordCurrent roleStopsRuleOn the recordWhat the case settled
1Thomas Tawse
Freelancer · UK
none: 4 rows, all closed; last ended Jun 2026 S3Active In Review tooltip agreed No current role means nothing to test. The walk stops at three checks.
2Yakob Sarakhman
Freelancer · Ukraine
Professional Corporate Intelligence Analyst at Independent Consultant S4Active In Review tooltip agreed Freelance wording is matched in the row’s company field, not only the position.
3Iman Dakhlaoui
Freelancer · Paris · 7 yrs
M&A and Project Finance Associate at FINERGREEN, flagged Corporate S5Active Passive rule disagrees S5 must run before S7. The employer is flagged; only the junior position saves him.
4Athanasia Panteli
Freelancer · Barcelona · 12 yrs
Senior FP&A Analyst at Criteo, flagged Corporate S5Active Passive rule disagrees The position beats seniorityLevel. The record is labelled Manager; the row says Analyst, and the row wins.
5Arnaud Leblanc
Freelancer · Barcelona · 14 yrs
Head of Real Estate Finance at The Social Hub, flagged Corporate S7Passive Passive agrees A corporate flag counts, the same as sponsor and portfolio. No veto was available, so S7 decided.
6Syed Ishaque Hasib
Freelancer · London · 16 yrs
Chief Financial Officer at Fin Edge, no linked company S7Active Passive hand-set, reason recorded An unmatched company can never raise a flag. The role description says VC-backed; the rule cannot see prose.
7Mark Cox
Freelancer · US · 31 yrs
Director Board of Directors at Dollar Bank, linked, unflagged S7Active Passive predates the audit log A title never triggers Passive. Board seat, ex-investment-banking, 21 years in corporate development, and Active is the correct answer. No board-seat step was added.

Scored against 276 existing Active records with hand verdicts, the rule as built today agrees on 169, 61%: 8 wrongly Passive, 99 wrongly Active. The errors are lopsided, and no word list closes the wrongly-Active side, because the rule never looks for buy-side signal in a position. It reads the position only to find an exit.

05

Defect register

Audience: Product / PM / CEO

Priority = Impact − Effort. A quick win is Impact ≥ 4 with Effort ≤ 2. Sorted by priority descending, quick wins first. Each row: symptom → consequence for the person using it → cause.

ID · JNSymptomConsequenceCauseIEPQuick win
PP-01
J1
No seniority test anywhere in the walk. A junior title reaches the flag step and is filed as a client. A 7-year M&A associate at a boutique investment bank is excluded from every project invitation from day one. The rule reads the current position only to look for freelance wording; there is no junior or back-office list. 514Quick win
FixInsert S5, hard-stop A, matched on word boundaries against workExperiences[].position, before the flag step.
PP-03
J1 J2
An automatic Passive stamps passiveDate and writes no reason. The profile cannot explain itself later; a batch cannot be audited; every disagreement has to be re-derived by hand. Only the manual path collects a reason. The rule writes the status and the date and stops. 413Quick win
FixStore the step that fired, in the same shape the manual reason uses, and show it beside the chip.
PP-02
J1
A blank employment status is read as “not full-time” and waved to Active. 27% of the queue is decided on a field nobody filled in, without the profile being opened. S2 tests for membership of a set; blank fails the test and falls to the Active branch. 422Quick win
FixTreat blank as unknown, separately from not full-time. Either continue the walk on the position alone, or hold the record for a human.
PP-04
J1
One company holds two records with different flags, and the role links to the wrong one. The verdict turns on which duplicate got matched, not on any fact about the company. Finergreen: the correct record is unflagged, the linked one is flagged Corporate. No dedupe on the company list; the work-experience match picks one of the two. 532:
FixDedupe by name and website; until then, surface every candidate match on the row so the admin can see the ambiguity.
PP-07
J1 J2
An automatic status change is stamped with the approving admin’s name. Reading the name instead of the transition, an auditor concludes a person weighed the decision, and drops from the queue exactly the records the queue exists to find. The history entry records the actor of the approval, not the author of the status. 312:
FixAttribute the change to the rule, and keep the admin as the approver in a separate field. The transition InReview → Passive already carries the signal, make it the visible one.
PP-08
J1
ongoing = true on a row whose to date has already passed. A finished job counts as current. On one record the end date is four months in the past and the UI still prints Until Now. Two fields encode the same fact and nothing reconciles them; the UI trusts ongoing. 312:
FixDecide which field wins, then make the other one derived. Until then, flag the contradiction on the row.
PP-11
J1
The freelance word list is not published, and it is incomplete. A record can exit to Active for a reason nobody outside the code can see. remote matches nothing at all; fractional appears in 11 titles and is in no list we hold. The list lives in the implementation. Two examples were named in a flowchart; the rest is unknown. 312:
FixPublish the list. Add fractional, sole trader, sole proprietor; drop remote; guard independent so it does not match a company that merely starts with the word.
PP-05
J1
An unmatched current employer silences the deciding step. About 63% of current employers are unmatched, so for most records the flag step cannot fire whatever the company actually is. The flag is read from the linked company record. No link, no flag, no Passive. 541:
FixImprove matching, and treat unmatched as unknown rather than as unflagged. The two are not the same answer.
PP-10
J1
seniorityLevel describes the person, not the current role. A 12-year record labelled Manager is actually working as an Analyst. Trusting the label would file her as a client. One enum for a whole career: Analyst · Associate · Manager · Senior. 321:
FixRead the row’s position. Keep the enum as a corroborating signal only; it must never veto the row.
PP-09
J1
The tooltip names the outcome but never which test produced it. The admin cannot tell a correct verdict from a coincidence, so a wrong reason survives as long as the right answer comes out. The prediction is computed in the browser and returns a status, not a cause. 211:
FixName the step in the tooltip, “Passive: current employer is a flagged company”.
PP-06
J1
A work-experience row links to a subsidiary instead of the parent. Criteo resolved to HookLogic, acquired by Criteo in 2016. Both are flagged Corporate here, so the verdict held, by luck. Name matching has no notion of a corporate hierarchy or an acquisition. 330:
FixPrefer an exact parent-name match over a fuzzy subsidiary hit, and show which entity was chosen.
PP-12
J1 J2
The status chip is read-only while the status is In Review. A known client must be approved first and corrected second. The wrong status exists, briefly, on every corrected record. The chip only switches between Active and Passive; In Review is set by the review actions. 220:
FixOffer the outcome in the approve dialog, so one act sets the intended status.
06

Quick-win shortlist

Audience: Product / PM / CEO
PP-01 I5, E1 and P4

Check seniority before checking the employer

Product, A junior analyst is the product, not the customer. Right now holding a job at a recognised company is enough to file one as a client, and nothing on the profile says why. This is the largest class of wrong verdicts and the cheapest to close.

Engineering: Add S5 between the freelance-wording test and the flag lookup, matching hard-stop A on word boundaries against workExperiences[].position for rows with ongoing = true. Order matters: S5 must short-circuit before the flag is read.

PP-03 I4, E1 and P3

Record why the rule decided what it decided

Product, A status with no reason cannot be reviewed, appealed or trusted. Every argument about a verdict currently starts by rebuilding the reasoning from scratch.

Engineering: Persist the step that fired alongside passiveDate, reusing the shape the manual reason already writes, and render it next to the status chip.

PP-02 I4, E2 and P2

Stop treating a missing answer as an answer

Product, More than a quarter of the queue is filed without anyone reading the profile, because an empty field passed a test it should not have been eligible for. Decide the policy once and the largest blind branch closes.

Engineering: Separate blank from not full-time at S2. Then either continue the walk using the position alone, or route the record to a hold state. The code is small; the decision is the work.

07

Open questions & unverified

Audience: Product / engineering
Open question

Blank employment status: Active, or hold for a human? 27% of the queue rides on this, and it is a policy call, not a technical one.

S2 · blocks PP-02

Open question

Keep S6, and on what evidence? It has never fired in seven records. The case it exists for is a senior person at a sell-side boutique, on the one record available, S5 got there first. If it stays: does it read the company name, its description, or a NAICS code?

S6 · the Finergreen description is the only worked example

Open question

Should S3 trust ongoing or to when they contradict each other? No verdict changed on the record where this surfaced, which is why it is still open.

PP-08 and Mark Cox, to = Mar 2026, still marked ongoing

Unverified

The full freelance word list. Two examples were named in a flowchart; everything else in there is unknown to us, so S4 has to be read as “the rule may exit to Active for a reason you cannot see”.

Dev · blocks PP-11

Unverified

Whether seniorityLevel being Analyst or Associate should fire S5 on its own when the position text does not look junior. No record has produced that combination yet.

PP-10 · Athanasia Panteli decided the reverse case only

Unverified

Three rows of the truth table have no live case behind them: freelance wording with a flag, advisory employer with a flag, and a junior position with no flag. All three are predicted, none observed.

§03 · truth table

Unverified

The sample step distribution is the shape, not the live figures. Live data carries 2 In Review records against the sample’s 286, and many of the sample rows are obvious test data.

§03 · 286 records

Unverified

Effort scores assume the change stays inside the rule and needs no company-data work, except PP-04, PP-05 and PP-06, which are scored as data work and are the reason none of them is a quick win.

Engineering review

Settled during this audit: do not reopen without new evidence.
  • Is a corporate flag out of scope? No: it counts, the same as sponsor and portfolio. S7 asks only whether the company is flagged at all.
  • Add a board-seat step? No. A title never makes anybody Passive; the flag decides. Mark Cox is Active and that is correct.
  • Does Skip Review gate the check? No. A record with internalStatus = null was still filed Passive at approval.
  • Read the profile headline or the row? The row. The two disagree on 49% of records that have a current role.
  • Does seniorityLevel override the position? No. The position wins.

Existing Active and Passive records are out of scope for this document, nobody re-reviews them by hand. They will be handled by a migration, for which the same seven steps are the specification.

ADMINB1 · Invite talents to a project

Goal: a client project needs candidates: find the right freelancers in the talent pool and invite them to apply. Everything is scoped to one project.
  1. Project Management → Invite Talents. The page asks you to select the project first. The dropdown lists each project as a card: title, client & contact, #PR id, seniority / experience / rate type / duration / timezone / languages, and its running score, “X invited and Y applied”.
    Select the project first
    B1.1: pick the project; each option shows client, #PR id and invited / applied counts.
  2. Filter the pool. The full talent pool loads (9,000+). Cut it down with the filter bar, Statuses, Invited Status, Professional Background, Functional Expertise and Industry & Sector, Classification, Years of Experience, Seniority Levels, Countries, Cities, Timezone Offsets, Languages and Has Contract.
  3. Read a talent row before inviting: the Active badge, their title & experience, a Contracts chip (“1 Active and 1 Completed”), and the Engagement column, INV accepted/invited, APP applied/hired and CTR active/completed contracts. Row icons open LinkedIn, the CV (PDF) and chat.
    Talent pool with engagement stats
    B1.2–3: filter the pool; each row carries the engagement stats and a contracts chip.
  4. Tick the talents → Invite Talents. Selecting rows reveals the 👤 Invite Talents button (top bar). It sends the project invite to everyone selected; the project's invited count goes up and the talent shows under Invited Status.
    Invite Talents button
    B1.4: tick talents → Invite Talents.

ADMINC1 · Approve a new project

Goal: decide whether a project a client just sent in is ready to go out to talents. Everything waiting on that decision sits in one place, and until somebody makes it, nobody can be invited.

C1.0 · Where a project comes from

Two doors, and they behave differently. Most projects arrive through the client, and those are the ones the queue is built for. Admins can also create one directly, which skips everything the client route does.

Door 1: the client fills in a brief

A client who signs up lands in a six-step wizard and cannot leave it. Every other address in the client app redirects back until the wizard is finished, so a client mid-signup has no dashboard, no project list, nothing.

The client onboarding wizard
C1.0: the six steps · where this client has reached. Step 5 is Connect with our team, a call booking.

The brief they fill in is much shorter than yours. Five fields, and that is the whole thing the sourcing is built on:

FieldOptions
Your Hiring NeedHire a talent · Hire a team
Year of experienceAnalyst (1 to 2) · Associate (3 to 5) · Manager (6 to 10) · Senior (10+)
Work locationOnsite · Remote · Hybrid
Required LanguagesEnglish, and any others they add
Project Brieffree text, 100 characters minimum

The button at the bottom reads Save to Submit project, and that is the moment it reaches you.

The project record exists before anybody submits anythingStarting the wizard creates the record straight away, named FintalentDraftProject - <timestamp>. It sits in Draft carrying a red UNPAID PROJECT POST FEE badge.

That is what the Draft tab is, near enough. Counted in one snapshot, the first twenty rows were all FintalentDraftProject and all unpaid, out of 93. So Draft is not a queue of nearly-finished briefs. It is mostly people who started, did not pay, and left. Nothing there needs your attention until it moves.

Door 2: an admin creates it directly

Projects → Create New opens the full form, and it asks for a great deal more than the client does: Name, Client, Currency, Summary, Client looking for, Work Location, Experience, Duration, Commitment, Seniority Level, Maximum Hires and Timezone are all required. Budget, Project Owner Email, Scope of Work, language rules and the country and timezone restrictions are optional on top.

The admin Create Project form
C1.0: the Client field, pre-filled with your own admin account · Create.
Client defaults to you, and nothing warns youThe field arrives holding the admin account you are signed in as. Create without changing it and you have made a project that belongs to Fintalent rather than to a client, which is wrong everywhere it matters later: contracts, invoices, and who can see it. Set the client first, before anything else on the form.

Clone Project, next to Create New, is the third way in. It copies an existing brief so a repeat mandate does not have to be typed again.

The whole lifecycle, in order

client starts the wizard
      →  Draft            record created, named FintalentDraftProject - <timestamp>
                              carries UNPAID PROJECT POST FEE

client finishes the brief and pays
      →  In Review        ◄ your queue. C1
admin presses Approve
      →  Open             visible to talents. C2 sourcing, C3 applications
                              →  Paused     stopped, not finished
                              →  Closed     done
                              →  Archived   put away, no hire

admin uses Create New or Clone Project
      →  skips the wizard and the post fee entirely

Where this sits in the operations matrix: everything above In Review is the client's own onboarding, 6.0 New Project Intake & Qualification is the Approve decision in C1.3, and everything after Open is 5.0, 4.0 and then the four monitoring processes in C4 ↗.

C1.1 · Open the In Review queue

Project Management → Projects. The tabs across the top are the whole lifecycle, and each carries a live count.

TabWhat is in it
Draftstarted and not submitted. Mostly unpaid signups, see C1.0 ↗.
In Reviewyour queue. Sent in, waiting on a decision.
Openapproved and live. Talents can see it and apply.
Pausedstopped for now, not finished.
Closedfinished.
Archivedput away. By far the biggest tab.
Projects list on the In Review tab
C1.1: the In Review tab, your queue · Send Invitations, which jumps straight to sourcing · what the client asked for, at a glance · the row menu.

Every row already tells you the shape of the job without opening it: seniority, rate type, currency and timezone, with the client and their signup date beside it.

C1.2 · Open it and read what the client wrote

Click the project name, or use the menu and pick Tab General Settings. A drawer opens over the list.

Project drawer header with Approve and Archive
C1.2: the three decisions · the project code and its status · the tabs, where the rest of the brief lives.
TabWhat to check
General Settingsthe brief itself: Summary, Client looking for, Work Location, Experience, Budget, Duration and Commitment.
Commissionwhat Fintalent earns on it.
Pillarsthe skills the match will be scored against. This is what drives the fit score later (C3.2 ↗).
Screening Questionswhat every applicant will be asked.
Invited Talentsempty at this stage, and it should be.
Timelinewhat has happened to the project so far.
The Summary is the part that decides itIt is the text a talent reads before applying. A vague summary produces vague applicants, and you pay for that two steps later when you are reading a shortlist that does not fit. There is a Generate button beside it, and an Original Summary link if you want to see what the client actually typed before anyone tidied it.

The Project URL at the top is the talent-facing page. Open it if you want to see the brief the way an applicant will.

C1.3 · Approve, archive, or hand it over

ButtonWhat happensWhen
Approvethe project moves to Open and becomes visible to talents.the brief is clear enough to source against.
Archiveit leaves the queue without going live.duplicate, abandoned, or never a real project.
Change Ownerreassigns it, no status change.somebody else should be running this one.
Approve is what unblocks everybody elseNothing downstream can start until it happens. No invitations, no applications, no interviews. A brief sitting in In Review is not waiting on the client, it is waiting on you.

Not sure yet? Leave it. There is no needs more information status, so the honest move is to message the client and let the project sit in the queue until they answer.

ADMINC2 · Source and invite talents

Goal: put the right people in front of an approved project. The system does the first cut for you, and the work is deciding who from that cut is worth an invitation.

C2.1 · Start from the project, not from the talent list

On the Projects list, every row has a Send Invitations link above the project name. Use it. It opens Invite Talents already filtered for that project, and the filters it sets are not obvious from anywhere else:

Filter it setsWhy
Statuses = ActivePassive talents are not looking for work (A6 ↗).
Invited Status = Not Invitedso you cannot invite the same person twice.
Seniority Levelstaken from the project brief. A Manager-level mandate arrives filtered to Manager and Senior.
Opening Invite Talents from the left menu is not the same thingGo in that way and you get the talent database with no project attached and none of those filters. Everything still looks normal, so the mistake is quiet. Always start from the project row.

C2.2 · Narrow it further, then invite

The pre-set filters get you to the right population, not to the right people. Add what the brief actually needs on top: Functional Expertise, Industry & Sector, Company Background, Years of Experience, Countries, Cities, Timezone Offsets, Languages, Has Contract.

Timezone matters more than it looks on a project that says it wants overlap with the client's working day. It is one of the few filters that rules people out for a reason nobody can fix.

Invited people then show up on the project's Invited Talents tab, and anyone who accepts turns into an application (C3 ↗).

Inviting talents one project at a time from the talent side is B1 ↗. Same destination, different door.

ADMINC3 · Work the applications

Goal: move applicants from they applied to the client has seen them, and keep everybody informed on the way. This is where a project either produces a hire or stalls.

C3.1 · The six stages, and the seventh tab

Project Management → Project Applications. The tabs are the pipeline, in order.

Project Applications list
C3.1: the pipeline tabs · the fit filter · the actions on a row · the score, with Show evidence opened.
StageMeaning
Appliedthey put themselves forward. Nobody has read it yet.
Shortlistedyou have read it and it is worth the client's time.
Presentedthe client has seen them.
Hired / Draft Agreementthe client wants them; contracting starts.
Rejecteda decision was made and it was no.
Archivedfiled away without a decision.
Analysis Failed is not a stage, and it is the biggest tabCounted in one snapshot: 9,131 of 10,071 applications sit in Analysis Failed, against 940 spread across all six real stages. That is 91% of everything ever submitted, and it means the scoring never ran on them.

They are not rejected and nobody has looked at them. If you only ever read the pipeline tabs, you are reading the smaller half of the story. Check this tab before telling anybody a project had no suitable applicants.

C3.2 · Read the fit score, then read the evidence

Each application carries a score out of 10 and a band: Strong Fit, Good Fit, Partial Fit or Weak Fit. The chips above the table filter by band, so you can open a project and see only the strong ones.

The number on its own is not the point. Show evidence is. Open it and the score breaks into the criteria it was built from, each with its own mark and a weight that says how much it counted, for example 35%, 25%, 20%, 20%. Those criteria come from the project's Pillars (C1.2 ↗).

A Partial Fit can be the right personThe bands average across every pillar, so somebody who is outstanding on the pillar that actually matters and weak on a pillar nobody cares about lands mid-table. Read the breakdown before you trust the band, above all on a project where one requirement is the whole job.

Beside the score sits what you need to judge it: the talent's requested gross rate, their status, location, headline, and their expertise counts.

C3.3 · Move them along

The Actions column carries the stage changes, and they read as plain sentences rather than a dropdown: Switch to Applied, Move back to Shortlisted. What is offered depends on where the application already is, so you cannot skip a stage by accident.

View Application opens what they actually submitted, including their answers to the screening questions. The Connected chip tells you a conversation with this person already exists.

Moving the stage is not telling the personThe stage is a record, not a message. Rejected does not write to anybody, and neither does Presented. Somebody who applied three weeks ago and has heard nothing is the most common complaint in this flow, and the fix is a message, not a stage change (Flow 3 ↗).

ADMINC4 · Keep the pipeline moving

Goal: notice a project that has stopped moving before the client does. There is no dashboard for this. It is the same Projects list you already know, read four different ways.
Four jobs, one screenWatching live work, chasing stale projects, checking on engagements and closing finished ones are four separate things on paper. In the product they are all Project Management → Projects with a different tab or a different sort, which is why they are one flow here rather than four.

C4.1 · Live work: the Open tab

Everything approved and running. The columns are the health check, and you can read them without opening anything:

ColumnWhat a blank means
Interviewsnobody has met the client yet. Early, or stuck.
Contractsnobody has been hired yet.
Client booked a callthe client has not engaged since it went live.
Channels / Emailsno conversation is running on it at all.

A project that is Open with all of those empty is the one to look at first. It is live, so the client believes something is happening, and nothing is.

C4.2 · Stale work: sort by Modified Date

There is no aging filter. Sort the Open tab by Modified Date, oldest first, and the top of the list is your problem list. Paused deserves the same treatment: a paused project is one somebody meant to come back to.

Compare Created Date with Modified Date on the same row. A project created months ago and modified months ago has been quietly abandoned; created months ago but modified this week is simply a long engagement.

C4.3 · Engagements: Interviews

Project Management → Interviews lists every meeting between a client and a talent, with All, Upcoming, Past, Cancelled and Concluded.

Cancelled is worth countingIn one snapshot, 100 of 253 interviews were Cancelled, against 101 Concluded and 52 Past. Roughly two in five never happened. A cancelled interview is a project that lost a week, and it does not show up anywhere on the Projects list.

Read the tab as a queue rather than a report: an Upcoming count of zero on a project that is supposed to be interviewing means nothing is booked.

C4.4 · Finished work: Closed

Move a project to Closed when the work is done, and use Archived for everything that ended without a hire. The two say different things later: Closed is a project that worked, and the tab is small enough to read at any time.

Closing is a decision somebody has to make. Nothing closes a project on its own, so the Open tab grows until a person tidies it, and every stale row makes the tab less useful for C4.1.

TALENTB2 · Log & submit timesheet (the talent does this, on the talent portal)

Goal: the talent records the hours worked on a running contract, then submits them so Fintalent can invoice the client. The key point: submitting locks in Hour(s) to bill: that is the number the money is calculated from, while the logged hours are kept alongside it for reference.
Before you startThere must be a contract in Active status. The talent can only log against that contract's project, and only from the contract Start date onwards.
Fill in the billing address and payment info early, without them logging still works, but submitting is blocked: B2.x.7 ↗.

B2.1 · Open the Timesheet screen

  1. Sign in to the talent portal (talent.fintalent.io) with the talent account.
    Talent portal sign-in screen
    B2.1.1: the Independent Consultant Sign In screen of the talent portal.
  2. Open the menu (top left) → group WorkTimesheet. (Timesheet lives in the ☰ menu: it is not on the bottom navigation bar.)
    Work menu with Timesheet
    B2.1.2: the Work group · the Timesheet entry.
  3. Pick the project to log against. With only one Active contract the system selects it for you. The name shows in the top bar with an Ongoing label, nothing to do. With several Active contracts, click that bar to open the list and switch project; each project has its own calendar, totals and submission queue. Details in B2.x.5 ↗.
    Project selector bar
    B2.1.3: the project bar with its Ongoing label; with a single Active contract the system picks it automatically.
  4. Read the totals panel before doing anything, these three numbers measure the whole flow:
    LineWhat it means
    … submittedTotal hours to bill locked in, the number the money follows.
    Worked: …Total hours actually logged. Can exceed the submitted figure when the talent has billed less than they worked.
    … pending submissionHours logged but not yet submitted. At 0h the Submit button is greyed out.
    Timesheet totals panel
    B2.1.4: submitted = hours to bill · Worked = hours logged · the Submit button, enabled only when hours are pending.

    The submitted line is a button, not a label. The on the right is easy to miss, click the line and the full submission history opens, which is the only place the talent can see what was actually locked in, day by day:

    In the dialogWhat it gives you
    Timesheet date From → ToNarrows the list to a period; the two totals above recalculate for that period. This is how you check a single billing round rather than the whole engagement.
    Hour(s) worked · Hour(s) to billThe pair, side by side, for the selected range.
    One row per dayDate · Hour(s) worked · Hour(s) to bill, where the two figures diverge is visible immediately.
    Export to CSVDownloads the same list. Use it to reconcile against an invoice, or to keep a record before the period rolls over.

    The dialog also states the rule in the product's own words: Hour(s) to bill — the hours you're charging for. You can bill less than you worked, never more. That is the same constraint the admin side reads in B3.2 ↗.

    Submission history opened from the totals panel
    B2.1.4: the submitted line, clicked · the date filter · both totals, recalculated for the filter · the rule, stated in the dialog · one row per day, worked next to to bill · Export to CSV.

B2.2 · Log work

  1. Go to the right week. Use / next to Today.
    Week navigation
    B2.2.1: Today plus the ‹ › arrows change week · hours logged for the week.
  2. Drag on the hour grid in the correct day column, from start time to end time.
    Dragging on the hour grid
    B2.2.2: drag vertically inside the right day column, from start to end time.
  3. The Record New Timesheet Entry dialog opens, check the Date, correct the start / end time, and a Note is mandatory (it describes the work and is printed in the invoice appendix).
    Record New Timesheet Entry dialog
    B2.2.3: Date · start–end time · Note (required)Create.
  4. Click Create. The entry appears on the calendar in light purple = not submitted. Dark purple means submitted: locked.
    Submitted and unsubmitted entries
    B2.2.4: light purple = not submitted (editable, deletable) · dark purple = submitted (locked).
  5. Edit or delete an unsubmitted entry. Two different actions, easy to mix up:
    • Click the body of the entry → opens Modify Timesheet Entry, change the time or the Note, then Update.
    • Click the ✕ in the top-right corner of the entrydeletes it.
    Edit and delete an entry
    B2.2.5: the delete button · click the entry body to edit · the colour legend (submitted / pending) · hours still pending submission.
  6. Which days can be logged? A greyed-out day cannot be logged: four reasons:
    CaseWhy
    Day before the contract Start dateNo contractual work existed yet.
    Day already submittedHours to bill are locked in.
    Day in the futureOnly work already done can be logged.
    Day already on an invoiceSubmitted and then billed by Admin, locked permanently.
    A gap day inside an invoiced range, loggable but NOT billable The day cell is not greyed out, the talent can log and submit normally, but Admin cannot invoice it. Those hours are stranded for good.
    SideJul 9 (a gap inside the invoiced range Jul 8–10)
    TalentDay cell is white → drag creates an entry → Create works → submit works
    AdminCreate Client Invoice does not prefill the service period, Quantity = 0; opening the picker shows Jul 8, 9, 10 all disabled → unselectable
    What to do: if a day inside an already-invoiced period was missed, do not log it retroactively. Those hours will sit there unbillable. Tell Admin/Ops first.
    Days that cannot be logged
    B2.2.6: greyed-out day = cannot be logged · today.

B2.3 · File an expense report (only if there are out-of-pocket costs)

OptionalThe talent may or may not file one. Once filed, the amount is added to the same client invoice, separately from the fee, and it does not touch the hours.
  1. Click + Add expense report (directly below Submit Timesheet) → the Add new expense report dialog opens.
  2. Fill in the required fields: Expense report date (when the cost was incurred), Description (goes onto the invoice), Currency (defaults to the contract currency), Quantity and Amount. The Total line calculates itself as Quantity × Amount. You can also Upload file to attach the original receipt.
    Add new expense report form
    B2.3.2: date + description · Currency · Quantity · Amount · Total, calculated · receipt attachment.
  3. Click Save. The panel on the right changes from 0 expense report to 1 expense report.
  4. Review / edit / delete: click the N expense report line → the Expense reports dialog: one row per item (date, description, Amount, Quantity and Total Amount) with edit and 🗑 delete buttons, an Expense date filter, and a Grand total at the bottom.
    Expense reports list
    B2.3.4: one row per item · edit / delete · Grand total. This is what gets added to the client invoice.

B2.4 · Submit & edit the timesheet (locking in Hour(s) to bill)

Submitting is one-wayThe confirmation dialog says it outright: “Once submitted, it cannot be edited”. Check the hours carefully before clicking Yes.
  1. Click Submit Timesheet (enabled only when pending submission > 0h).

    If the dialog opens with no submit button and a “Update your billing or payment details” warning instead, the account is missing its billing address / payment info. Fix it in B2.x.7 ↗ and come back.

    Submit Timesheet button
    B2.4.1: the Submit Timesheet button, enabled only while hours are pending.
  2. The Select Timesheet for Submission dialog lists one row per pending day (not per entry, several entries on the same day are merged). Everything is ticked by default; at the top there is a “N working days selected” counter and an Uncheck all link. Narrow the list with the Timesheet date range (From → To).
    Select Timesheet for Submission dialog
    B2.4.2: counter + Uncheck all · the editable Hour(s) to bill column · the submit button spells out how many days are selected.
  3. Adjust Hour(s) to bill if needed. Each row has two columns:
    ColumnEditable?Meaning
    Hour(s) workedNoExactly what was logged, kept as the reference.
    Hour(s) to billYesThe hours actually charged. Defaults to the logged hours; lower it when only part of the time was agreed.

    What counts as “edited”: the two columns on the same row differ. Equal = logged hours kept as-is; different = the talent deliberately set a different billable figure.

    Hours to bill edited and one day unticked
    B2.4.3: a real example: worked 02:30:00 · to bill 02:00:00different = edited. the Jul 10 row unticked (turns white) · the counter now reads 1 working day selected.
    You cannot bill more than you worked, and it corrects you without saying soType a figure above the logged hours and the field accepts it while you are typing, then silently snaps back to the logged hours the moment you click away. No error, no red text, no toast. Measured on a 2.5 h day:
    You typeWhile typingAfter you click away
    9 or 2.6, above the logged hoursshows what you typed2.5, pulled back down
    000. Allowed, you can bill nothing
    −1−10, pulled back up

    Why this matters: opening the confirmation counts as clicking away. So if you type 9 and go straight for Submit, the field is already back to 2.5 before the dialog appears, you submit a different number from the one you typed and nothing tells you. Read the figure in the box, not the one you typed, before confirming.

    Hours to bill reverting to the logged hours
    B2.4.3: a 2.5 h day: 9 typed into Hour(s) to bill · the same field after clicking away, back to 2.5, with no message in between.
  4. Decide which days to submit. The button at the bottom rewrites itself to match the ticked rows: both days ticked → Submit all 2 working days; untick one → Submit 1 working day. Read that button before clicking: it is the fastest way to see what you are about to lock in. Details in B2.x.3 ↗.
  5. The Submit Timesheet confirmation appears → click Yes. (Clicking No returns you to the list; skip this dialog and nothing you did takes effect.)
    Submit confirmation dialog
    B2.4.5: “Once submitted, it cannot be edited”Yes.

B2.5 · Verify after submitting

  1. pending submission must drop by exactly what you just submitted. It does not have to reach 0h:
    What you just didpending afterwards
    Ticked every day, then submitted0h
    Unticked some days (partial submit)> 0h, exactly the hours of the days left behind

    Seeing pending > 0 after a submit is not a bug, check whether a day was left unticked.

  2. submitted rises by the total hours to bill you just locked in; Worked rises by the total hours logged. The gap between the two is exactly what was edited in B2.4.3 ↗.

    Example 1: submit everything: before: submitted 14:40 / worked 16:30. Log 4h (Jul 3) + 3h (Jul 4) = 7h, submit with to bill 3:30 + 3:00 = 6:30. After: submitted 21:10 (14:40 + 6:30), worked 23:30 (16:30 + 7:00) and pending 0h.

    Example 2: partial submit: before: submitted 21:10 / worked 23:30 / pending 0h. Log Jul 8 (2:30) and Jul 10 (1:30) → pending 4h. Tick only Jul 8, lower to bill to 2:00, submit. After: submitted 23:10 (+2:00 = hours to bill), Worked 26:00 (+2:30 = hours logged) and pending 1:30 (Jul 10 still waiting).

  3. The submitted day turns dark purple and can no longer be edited; a day left behind stays light purple, keeps its button and is still editable.
    After a partial submit
    B2.5: example 2 above: Jul 8 dark purple = locked in · Jul 10 light purple = still pending · pending 1h30 (not zero) · the submitted day column header reads 02:00 = hours to bill, not the 02:30 that was logged.
  4. Check the colour legend. The Calendar box in the top right lists only the states actually present: Dates already submitted (green / dark purple) and Dates pending submission (light purple). No pending line means everything has been submitted.

That completes the talent's part: Admin takes over: B3 · Manage timesheet → invoice ↗.

B2.6 · What happens to it after you submit

  1. It is approved the instant you submit. There is no waiting, no review queue, nobody to chase. The submission is created already Approved, and the account recorded as approving it is your own.
    The label does not say “Approved” thoughYour side shows Submitted. Admin's side shows Approved. Same record, two words, so “has it been approved yet?” has no answer you can read off the screen, because the answer is always yes. See B3.0 ↗ for the admin view of this.
  2. Open the summary of everything you have submitted, click the “N hours submitted” panel on the right. It opens Time Sheet of <your name> with the full date range in the title.
    In the dialogWhat it gives you
    Timesheet datea From → To filter, for pulling out one billing period.
    Hour(s) worked / Hour(s) to billthe two totals for whatever range is showing, the gap between them is everything you trimmed at submit time.
    one card per daydate, hours worked, hours to bill, side by side.
    The submitted-hours summary
    B2.6.2: the date-range filter · worked vs to bill for that range.
  3. Export to CSV sits at the bottom left of that dialog, and it exports what the filter is showing. Set the range first, then export: that is the quickest way to produce a per-period record for your own books.
    Export to CSV
    B2.6.3: Export to CSV, bottom left.
  4. Nothing here is editable. The dialog is a record, not a form. There is no way back into a submitted day from it. If a submitted figure is wrong, you cannot fix it yourself; ask Fintalent through Ask question (B2.x.6 ↗).

B2.x · Edge cases

  1. Daily contracts: an extra Day(s) to bill column. On a per-day contract the submit dialog adds a Day(s) to bill column that is calculated, not directly editable: one working day = 8 hours (log 8h → 1 day; log 6h → 0.75 day). The talent still only edits Hour(s) to bill; the day count follows from it.
    Day(s) to bill column on a Daily contract
    B2.x.1: Daily contract: Day(s) to bill = hours ÷ 8, shown next to Hour(s) to bill.
    Known display defectWhen Hour(s) to bill is edited, the Day(s) to bill column in this dialog does not recalculate immediately. It keeps showing the value derived from the logged hours. The invoice total is still correct (it derives from hours to bill). See B3.x.4 ↗.
  2. Log daily, or batch several days into one submit? Either works: the talent's choice. Submit right after logging a day, or log a whole week and submit once (the dialog lists every pending day).
  3. Partial submit: three days logged, only two locked in. The submit dialog is where you choose which days get locked; it is not a “send everything” button.
    ActionWhat happens in the dialog
    Open the dialogEvery pending day is pre-ticked; the counter reads “N working days selected”.
    Untick a rowThat row turns from purple to white; the counter drops; the button rewrites itself (Submit 1 working day).
    Uncheck allClears everything: handy when you only want one or two days and prefer to tick them back.
    Timesheet date filterNarrows the list to a date range, useful when the queue is long.

    Example: the talent logged the 5th, 6th and 7th, but the 7th still needs client confirmation → untick the 7th and click Submit 2 working days. The 5th and 6th are locked (dark purple); the 7th stays light purple, still editable and deletable, and remains in pending submission, ready for a later submit.

    Consequence: one contract can have several submit rounds, and Admin can issue a matching number of invoices, see B3.x.3 ↗.

  4. What if something was entered wrongly?
    • Before submitting: fixable: click the entry body to open Modify Timesheet Entry (change time / Note → Update), or click to delete it and log again.
    • After submitting: not fixable; the confirmation said “Once submitted, it cannot be edited”. Tell Admin/Ops before the invoice is issued.
    • After an invoice exists: invoiced days are locked permanently and only Admin/Ops can intervene. A gap day inside an invoiced range is loggable but not billable, do not log it retroactively, tell Admin/Ops. See B2.2.6 ↗.
    Delete and edit controls on an unsubmitted entry
    B2.x.4: deletes · click the entry body to edit. Both exist only on light purple entries; dark purple ones have neither.
  5. A talent with several Active contracts at once. The project bar at the top becomes a selector, click it to switch. Things to remember:
    • The calendar, the three totals (submitted / Worked / pending), the submission queue and the expense reports are all per project, switching project replaces everything on screen.
    • Submissions never merge across projects: each one submits separately, and Admin invoices per contract.
    • The URL carries ?projectId=…: if the numbers look “wrong”, first check the project name in the top bar.
    Project selector bar
    B2.x.5: the project bar with its Ongoing label; with several contracts, click here to switch.
  6. Ask question: reach Fintalent without leaving the flow. The Ask question button (below Add expense report) does not open a form; it jumps straight into Chat, to the Fintalent Team conversation attached to the selected contract (/chat/<contractId>). Use it after a wrong submit, a missing day, or when the billable hours are unclear.
    Ask question opens chat
    B2.x.6: the two chat threads: Client (Application) and Fintalent Team (Conversation) · the messages · the compose box.
  7. No billing address / payment info → submitting is blocked. A talent with an Active contract who has not filled these in can still log work normally. Entries are created, pending submission grows, but at the submit step the dialog has no Submit button, only a warning:

    “Update your billing or payment details — Due to UK DAC7 regulations, we're required to collect additional billing or tax information from freelancers with an active contract…”

    Submit dialog blocked by missing billing details
    B2.x.7a: where the Submit button should be → the DAC7 warning instead · the Update billing button · the day list still renders normally, which is why it looks submittable.
    Easy to misreadThe block happens at submit time, not at log time. A talent can log a whole week before discovering they cannot submit, so fill these in as soon as the contract goes Active.

    Where to fill them in: click Update billing inside the warning, or go to My Profile → My Earnings (/earnings). The page has two separate cards and both must be completed to clear the block:

    My Earnings page
    B2.x.7b: Billing (invoicing address) · Payment method (where the money goes) · Paid Earnings · Referral Earnings · Pending Invoices.
    • Add billing address → the Tax & Payment Information drawer: Account Type (Individual Professional / Firm :  Company), name, Birthday, email, phone, Address / City / Postcode / Country and Tax Identification Number (TIN). It also carries Recipients / Cc / Bcc, who receives the invoice. Fields marked * are required.
      Tax & Payment Information form
      B2.x.7c: Account Type · personal details · address · TIN is required, VAT is optional.
    • Add payment method → a single Bank info field (free text: bank name, account number / IBAN / SWIFT…) → Save.
      Add payment method form
      B2.x.7d: the Bank info field · Save.

    Once both are saved, return to B2.4 ↗. The submit dialog shows its normal button again.

  8. An expense dated on a day with no logged work → easily missed. An expense reaches an invoice only if the date on the expense falls inside the invoice's Service period, and that period is prefilled from the days that have submitted hours.
    SituationResult when Admin creates the invoice
    Expense dated on a day with logged workIncluded automatically, added straight to the total.
    Expense dated on a day without logged workDoes not appear, the prefilled Service period never reaches that date.

    Example: the talent logs work on Jul 20, logs nothing on Jul 22, but files a 75 EUR expense dated Jul 22. Admin creates the invoice → Service period prefills as Jul 20 → Jul 20, the total is just 2h × 120 = 240 EUR, and no expense line appears.

    Expense outside the service period
    B2.x.8a: the prefilled Service period covers only the day with logged work · Additional items is empty; the Jul 22 expense was not picked up.

    The fix (Admin does this): extend the Service period end date to cover the expense date. The item appears in the form immediately, with its own Total, and is added to the invoice.

    Service period extended, expense appears
    B2.x.8b: end date changed to Jul 22 · the expense appears at once: 75 EUR.

    So the talent should tell Admin/Ops in advance when filing an expense on a day with no billable hours, so the date range gets widened at invoicing time.

ADMINB3 · Timesheet → draft client invoice

Goal: take the hours the talent submitted (B2 ↗), reconcile them against the contract, and turn them into a draft client invoice whose figures you have checked.
Where this flow stopsAt the Draft invoice. Everything after it: issuing the invoice to the client, marking it paid, and paying the talent, is handled by separate flows that this guide does not cover yet. Get the draft right and hand over; do not improvise the next step.
The one rule about the numbersMoney is always calculated from hours to bill (the figure the talent locked in), never from the logged hours. The logged hours stay visible alongside on every screen so the two can be reconciled.

B3.0 · Approve the submission first

🐛 Nothing new ever arrives here, submissions approve themselvesWhen a talent submits, the record is created already Approved, and approvedBy is set to the talent's own user id, verified by submitting one and reading it straight back. approvedDate stays empty, so it is not going through the approve action either.
Platform-wide: the only Pending Approval rows are from January 2024, and Rejected is 0. Nobody has ever rejected anything, because nothing has ever waited to be rejected. The gate below is real and it works; it just never gets anything to hold. Logged as TS-09.
Until that changes, read this section as: how to pull something back and review it deliberately, not your daily queue.
This screen is not in the menu. You have to type the URL/timesheet-submissions (https://admin.fintalent.io/timesheet-submissions). It is a real, guarded admin page, 592 records, but nothing in the left menu links to it. If you have never seen it, that is why.
  1. What the page holds. One row per submitted period, titled Timesheets. Columns: Actions, Total Hours, Project, Client, Talent, Status and submit date. The panel on the right filters by Search, statuses, Projects, Talents, Clients.

    Statuses are Pending Approval, Approved and Rejected, the same three the talent sees, under different names (B3.x.9 ↗).

    The timesheet submissions list
    B3.0.1: the table · the filter panel.
  2. The row menu changes with status, the same way the Resources one does:
    Row is⋮ offers
    Pending ApprovalEdit/View Details · Switch to Draft · Approve · Reject
    ApprovedEdit/View Details · Switch to Draft · Switch to Pending

    Switch to Pending is how you get anything into this queue at all. Because submissions arrive approved, the only way to review one deliberately is to put it back to Pending yourself, then Approve or Reject it. It is also the undo if you approved something by mistake.

    Row menu on a pending submission
    B3.0.2: a Pending Approval row: Approve and Reject only exist here.
  3. Approve“Do you want to approve this timesheet?”Yes. That is the whole thing: no comment, no reason.
  4. Reject asks for a reason and will not proceed without one. The modal carries a required Admin comment box; the confirm button is red. Write something the talent can act on. This is the only thing they get back.
    Reject Timesheet modal
    B3.0.4: Admin comment, mandatory · the red Reject.
  5. Check the hours before you decide: the 👁 in the Actions column opens the submission, and it goes three levels deep:
    LevelWhat you get
    Timesheetproject, talent, start/end date, total worked, then one row per day with its own status.
    Tracking timesheet (👁 on a day)the individual time entries for that day, start time, end time, time worked, description.
    Edit time (✎ on an entry)From, To and Description, all editable, with Update.
    Submission detail
    B3.0.5: the day rows · the 👁 that opens one.
    Tracking timesheet
    B3.0.5: the entries behind that day · the that edits one.
  6. 🐛 Edit time opens, but you cannot use it. The dialog appears underneath the Tracking timesheet dialog that launched it, only its title and its buttons peek out, and nothing in it can be clicked: not the From or To fields, not Description, not even Cancel or Update.

    The two dialogs are stacked the wrong way round, Tracking timesheet sits in front of the Edit time box it just opened. Every click aimed at Edit time lands on the dialog covering it instead, which is why nothing responds. There is no way round it from the screen: close both and edit the entry from the timesheet row.

    What to do instead: press Esc to get out, and Reject with a comment (B3.0.4 ↗) so the talent fixes and resubmits. Do not tell a talent their hours have been corrected from this screen, on this build, they cannot have been.

    If this is fixed, the reach is wider than you would expectThe control is offered on Approved submissions too, not only pending ones, and the talent is told their timesheet cannot be edited after submitting. Once it works, an edit here will be invisible to them, with no notification and no record of who changed what. Worth agreeing a rule before it goes live.
    Edit time dialog stuck behind the Tracking timesheet dialog
    B3.0.6: the Edit time title, poking out above · its Cancel and Update, poking out below. Everything between them is covered, and all of it is unclickable.
  7. Only then move on. Approved hours are what B3.1 onwards works with. Sync Data and Create Client Invoice do not check this screen for you.

B3.1 · View & sync the timesheet

  1. Left menu → Contracts & InvoicesTimesheets.
    Contracts & Invoices menu with Timesheets
    B3.1.1: the Contracts & Invoices group · the Timesheets entry at the bottom of it.
  2. Filter down to the talent with the Select talents box (type a name or email, then pick). Use the Talents with Active Contract toggle to see only people with a running contract.
    Filtering a talent on the Timesheets page
    B3.1.2: the Select talents box with a talent chosen (Active chip + name).
  3. Click Sync Data on the talent's row, this pulls in whatever the talent has just submitted.
    Sync Data button
    B3.1.3: Sync Data in the Actions column · Create Client Invoice.
  4. Sort the list to find the work, instead of scrolling it. Two buttons sit above the table:
    Sort byUse it when
    Unbilled Hoursyou are doing a billing round and want whoever has the most waiting, first.
    Last Issued Dateyou are checking who has not been billed for a while.

    The list runs to dozens of pages, so pair this with the page-size selector at the top right rather than paging through.

  5. Read the talent's row: three things decide what happens next:
    What you seeWhat it means
    (Commitment · cycle · rate)e.g. Hourly · Every 14 days · 120 EUR: cross-check against the contract.
    Unbilled: N hHours submitted but not yet invoiced. Exactly what is about to be billed.
    “X hrs to bill · Y hrs worked”A discrepancy warning: shown only when the two differ. It comes with the date range that will go on the invoice.
    A talent's timesheet row in admin
    B3.1.5: talent filter · contract (commitment · cycle · rate) · View Timesheets · Create Client Invoice · invoice history (each block shows date range + hours + amount). This screenshot was taken after everything had been billed, so no Unbilled figure and no warning are visible, both appear only while hours remain uninvoiced.

B3.2 · View Timesheets: check before billing

  1. Click View Timesheets on the talent's row → opens that talent's monthly calendar.
    View Timesheets link
    B3.2.1: View Timesheets · invoices already created, shown on the same row.
  2. Reconcile the three totals in the top left:
    FigureMust equal
    Total hours to billthe submitted total on the talent portal, the number the money follows.
    Total hours workedthe actual logged hours.
    Total uninvoiced hourswhat has not been invoiced yet, matches Unbilled in B3.1.5 ↗.
    The three totals and the day cells
    B3.2.2–B3.2.3: the three totals · each day cell reads “X hrs to bill · Y hrs worked” · month navigation.
  3. Check the day cells. A cell shows “X hrs to bill”; when that day was adjusted it shows “X hrs to bill and Y hrs worked”, along with the time range and the Note the talent wrote.
    View Timesheets
    B3.2: the three totals on top; each day cell shows both to bill and worked whenever they differ.
  4. If the numbers agree, close this and move on to invoicing. If they do not, stop: check with the talent before billing.

B3.3 · Create Client Invoice

  1. Click Create Client Invoice (on the talent's row in Timesheets, or via Client Invoices → Create new Client Invoice).
    The form opens empty: that is normalEven though you clicked from a specific talent's row, nothing is filled in and almost every field is greyed out. Only the Contract picker is active. Nothing happens until you choose a contract, so do that first and the rest of the form comes to life.
    Create Client Invoice button
    B3.3.1: Create Client Invoice, right on the talent's row.
  2. Pick the Contract: this is the step that fills the form. Above the picker sit two chips, Active and Completed, which decide which contracts are offered. A finished engagement still has hours to bill, so a Completed contract is a legitimate choice, just make sure it is the one you meant.

    One talent can hold several contracts at once, and they are listed by commitment + project, e.g. Hourly Project and Daily Project for the same person. Pick the wrong one and the rate, the unit and the currency all come out wrong, see B2.x.5 ↗.

    The moment you choose, a summary bar appears at the top of the form. Read it before anything else: it is the fastest sanity check that you are billing the right work:

    RowWhat to check
    PROJECTthe engagement being billed.
    CLIENTcompany name, billing address and VAT number. Watch for a red “Name is missing” chip here. The client record is incomplete, and that gap will print on the PDF. Fix the client record before creating the invoice.
    EMAIL · TALENTwho the invoice goes to, and whose hours it bills.
    CONTRACTrate + commitment (100 EUR / Hourly), the bank account (WISE EUR), the payment terms (Net 10), the start date, and where the contract came from (Pandadoc).

    The same bar carries five links: View Timesheets, View Contract, View Project, View Talent and View Client, so every cross-check can be done without abandoning the half-filled form.

  3. Now check every prefilled field. The figures come from the contract and the uninvoiced timesheet range. Prefilled is not the same as correct:
    FieldMust be
    Contract / Project / Clientthe contract you are actually billing.
    Service period start / endthe uninvoiced date range (B3.1.5 ↗).
    Issued Datedefaults to today.
    Billing rate= the billing rate on the contract (what the client pays).
    Quantity= hours to bill (Hourly) or = days to bill (Daily), not the logged hours.
    Amountcalculated as Quantity × Billing rate. Multiply it yourself as a check.
    Currency · Fintalent Bankas per the contract (e.g. EUR → WISE EUR).
    Client billing address · VATas per the contract.
    Descriptiontalent name + period, composed for you.

    Four controls on this form that are easy to walk past:

    ControlWhat it is for
    File invoice (PDF)Upload File (top of the form)Attach your own PDF for this invoice. Leave it empty and Fintalent generates the PDF itself (B3.4 ↗). Do not confuse it with the expense receipt upload further down, different field, different document.
    next to QuantityRecalculates Quantity from the timesheets. Use it after changing the service period, instead of doing the arithmetic yourself.
    View created invoices · View timesheets (links on the Service period labels)Answer “has this range already been billed?” and “what is actually logged in it?” without leaving the form.
    Additional items (bottom)Add non-fee lines while creating, not only when editing afterwards. They appear on the invoice as (incl. N additional items).

    The “X hrs to bill and Y hrs worked” warning is repeated right above Quantity, and the label states the hard limit: up to 2 decimal places. Read both one last time here.

    Create Client Invoice form
    B3.3.3: Service period · Billing rate · Quantity = hours to bill · Amount calculated.
  4. Review the expense reports (if the talent filed any). Expenses do not sit on the fee line, they land at the bottom of the form, one row each. Check each of them:
    What to look atCheck against
    DescriptionWhat the talent wrote, clear enough that the client understands what they are paying for.
    CurrencyMatches the contract currency.
    Quantity × Amount = TotalCalculated; Total EUR is what actually joins the invoice.
    File invoice expenseThe receipt. “no files yet” means the talent attached nothing, ask for it before billing, or Upload File yourself if you received it another way.

    To drop an invalid item from this invoice, click at the start of its row; to add something beyond the fee, click ⊕ Additional items.

    Expense block inside the invoice form
    B3.3.4: Description · Currency · Quantity · Amount · Total EUR joining the invoice · the receipt attachment (currently no files yet) · drop this item · add a new one.
    An expense the talent filed is missing?It falls outside the Service period: usually because the talent dated it on a day with no billable hours. Widen the date range and it appears: see B2.x.8 ↗.
  5. When everything checks out, click Create. The invoice is created in Draft, tagged Timesheets (date range), review it straight away in B3.4 ↗. If there were expenses, the total already includes them.

B3.4 · Review the new invoice & check the PDF

  1. No need to leave the Timesheets page. Once created, go back to the list. The invoice appears on that talent's own row: number, type, Draft status, date range, hours and Total Amount. With expenses it also reads “(incl. <amount> and N additional item)”: that line alone tells you how many non-fee items are on the invoice, without opening it. Each billing round is one block, stacked in order.
    Invoices shown on the talent row
    B3.4.1: the invoices created so far, shown directly on the talent row of the Timesheets page.
  2. Click the invoice block → the Update Client Invoice drawer opens in place. It already contains: the ⤓ download PDF button next to the title, the status dropdown + Update, the full editable form, and the links View Timesheets, View Contract, View Project, View Talent and View Client.
    Update Client Invoice drawer
    B3.4.2: the drawer with its download button · status + Update · contract & timesheet summary.
  3. Click ⤓ → wait a few seconds and the PDF opens in a new tab (it is fetched from storage, not pushed through a download prompt).

    The other route: menu Contracts & Invoices → Client Invoices → find the invoice → the Actions column has 👁 (view detail) and (download PDF), identical result. Use it when you need to search across many invoices and talents.

    Download PDF button in the invoice detail drawer
    B3.4.3: the button sits right next to the invoice number, inside the detail drawer.
  4. Page 1: the money. Cross-check: invoice number, client address + VAT, HOUR(S) (or DAY(S) on a Daily contract), RATE, AMOUNT, TOTAL AMOUNT DUE, the due date (from the contract's Payment terms) and bank details.
    PDF page 1
    B3.4.4: the fee line and TOTAL AMOUNT DUE with its due date.
  5. Page 2: the timesheet appendix. Lists every day the talent logged, with time ranges and Notes. This is what shows the client the actual work.
    Two numbers, two purposesThis appendix prints the hours the talent logged, so the client can see the real work. The hours the money is calculated from are still hours to bill on page 1. If the talent reduced the hours at submit time, the two pages will differ, and that is by design, see B3.x.4 ↗.
    PDF page 2
    B3.4.5: the appendix: each day + time range + the Note the talent wrote.
  6. If everything agrees, go to the Issue Client Invoices flow. If not, void or edit the invoice before sending it.

B3.x · Edge cases

  1. Daily contracts: Quantity is in DAYS. One working day = 8 hours. Example: the talent logs 8h (Jul 13) + 6h (Jul 14) = 14h and locks in to bill 8h + 4h = 12h → Quantity = 12 ÷ 8 = 1.5 days → Amount = 1.5 × 500 USD = 750 USD. On the PDF the column changes from HOUR(S) to DAY(S).
    Day(s) to bill column on a Daily contract
    B3.x.1: the hours ÷ 8 = days conversion, visible in the Day(s) to bill column when the talent submits.
  2. What “Total Hours Worked” means on the list page. The figure in the header and in the table column of the Timesheets page is the total hours to bill (the billable number). To see the actual logged hours, open View Timesheets. Only there are to bill and worked shown as separate lines.
    The three totals in View Timesheets
    B3.x.2: only inside View Timesheets are hours to bill and hours worked separated.
  3. Several billing rounds on one contract. Each round takes only the uninvoiced part; days already on a previous invoice are never billed twice. The talent's row keeps the history of every invoice created, with its date range.
    Several billing rounds on one talent row
    B3.x.3: three billing rounds on the same contract, stacked in order: Jul 1–2 · Jul 3–4 · Jul 8–10 (this one also carries an expense).
  4. The two PDF pages disagree: know this before a client asks. Page 1 is calculated from to bill, page 2 lists the actual logged hours, so the two pages can show two different figures:
    • Hourly: page 1 = 6.50 hours and page 2 = Total Hour(s) 7.00.
    • Daily: page 1 = 1.50 days and page 2 = Total Day(s) 1.75, same unit on both pages, which is the most confusing case.
    Two PDF pages, two figures
    B3.x.4: page 1 charges from hours to bill · page 2 lists the actual logged hours.

    The invoiced amount is still correct (it follows to bill). Whether an explanatory line should be added to the appendix is still open.

  5. Nothing can be billed until the talent submits. Hours that are logged but not submitted sit in pending submission on the talent side, they never reach Unbilled, so they do not appear when you create an invoice. Ask the talent to submit first.
    Hours still pending on the talent side
    B3.x.5: the pending submission figure on the talent side. This has not reached Admin yet.
  6. Open the invoice straight from the Timesheets page, no detour through the menu. After creation each talent row carries the invoice block (number, timesheet range, hours, amount and status). Click that block → the Update Client Invoice drawer opens in place, already offering:
    • the ⤓ download PDF button next to the title;
    • the status dropdown (Draft → Issued → Paid…) and the Update button;
    • the PROJECT / CLIENT / TALENT / CONTRACT / TIMESHEET summary bar and the links View Timesheets, View Contract, View Project, View Talent and View Client;
    • the whole invoice form, editable.
    Opening the client invoice from the timesheet row
    B3.x.6: the Update Client Invoice drawer (with its download button) · status + Update · contract & timesheet summary.

    Faster than the Client Invoices → search route in B3.4 ↗ when you have just created the invoice and want to check it immediately.

  7. Editing an invoice that is still in Draft. A Draft invoice remains fully editable: open the drawer as in B3.x.6 ↗, make the change, then click Update (top right). The drawer closes and the Timesheets row updates.
    What you can changeEffect
    Service period start / end dateChanging the range recalculates Quantity, and any expense falling in the new range is pulled in (see B2.x.8 ↗).
    Billing rate · QuantityAmount recalculates from the new values.
    Description · Client contact · Fintalent Bank AccountChanges what is printed on the PDF.
    Additional itemsAdd / remove / edit non-fee items.
    Type (Standard Invoice…)Changes the invoice type.

    After editing, download the PDF again (B3.4.3 ↗) to be sure the file matches the corrected figures. The PDF is regenerated from the latest data.

    Draft only, and Draft is where your job endsEdit freely while the invoice is still Draft. The status dropdown does offer Issued, Paid and Archived, but do not touch it: moving an invoice on belongs to a different flow, marking it Paid triggers work further downstream, and once it leaves Draft it is no longer freely editable. Finish your checks, leave it Draft, hand over.
  8. The talent sees different words for the same three states, and one of them is misleading.
    Admin seesTalent sees
    Pending ApprovalWaiting Approval
    ApprovedSubmitted
    RejectedRejected

    Approved reads as “Submitted” on the talent side, which is the same word they saw before you touched it. So a talent has no way to tell from the label whether you have approved them yet. If they ask, check this screen: do not take their word for the status.

  9. “Timesheets have changed, please check again”. Seeing this on a Draft invoice means the source timesheet changed after the invoice was created, the talent submitted more days, or an admin pressed Sync Data and newer figures arrived.

    Reconcile without leaving the invoice: the link row at the top of the drawer includes View Timesheets. Clicking it opens the talent's timesheet calendar on top, with all three totals (hours to bill / worked / uninvoiced) and every day cell. Closing it with returns you to the same invoice.

    Opened this way the calendar gains a colour legend, and it answers the "which days am I actually billing?" question at a glance:

    Cell colourMeaning
    Pink: Current invoicedays this invoice covers
    Orange, Other invoicesdays already billed on a different invoice, never billed twice, see B3.x.3 ↗
    Whitelogged but on no invoice yet. This is what uninvoiced hours counts

    The legend appears only on the calendar opened from an invoice. The one opened with View Timesheets from the talent row in B3.2 ↗ has no colours, because there is no "current invoice" to colour against.

    Opening the timesheet calendar from the invoice drawer
    B3.x.8: the View Timesheets link inside the invoice drawer · the calendar opens on top, three totals ready to check against Service period and Quantity.

    If they differ, correct the invoice and click Update. Never send an invoice while this message is showing, the figures on it may be stale.

ADMINB4 · Publish a resource

Goal: put a video or a PDF in front of talents, and know which screen it will land on, because that is a separate decision from publishing it.
Two switches, not oneStatus decides whether talents can see it. Display Page decides where else it appears besides the Resources page. Setting one without thinking about the other is how resources end up published and unfindable, see B4.x.1 ↗.

B4.1 · Open Resources

  1. Left menu → Content ManagementResources. You can also go straight there with the URL /resources (https://admin.fintalent.io/resources).
    Content Management menu with Resources
    B4.1.1: the Resources entry under Content Management.
  2. The four tabs are the status filter, and each carries its own count. Everything you do to a resource for the rest of this flow moves it between them.
    TabHolds
    Allevery resource, whatever its status.
    Draftwritten but not released. Talents cannot see these.
    Publishedlive.
    Archivedretired. Also invisible to talents, but kept.

    Below the tabs: a keyword search, quick filters for Type and Source, and Add filter for Display Page and Published Date. The table shows Information (thumbnail, status chip, publish date, title, description), Type, Source, Display Page and Categories.

    Categories is a column, not a filterYou can read a resource's categories in the table but you cannot filter on them here. Talents can: their page has a Categories picker. If you need to audit by category, sort it out visually or ask on the talent side.
    Resources list with status tabs
    B4.1.2: the four status tabs with their counts · how many rows the current tab is showing.
  3. Narrowing the list. Four things sit above the table, and they do not all do the same job:
    ControlWhat it does
    Status tabsthe main split, All / Draft / Published / Archived, each with its own count. Everything below narrows within the tab you are on.
    Search resourcesfree text over title and description. Filters as you type and moves the tab counts with it.
    Type · Source · Display Page · Published Datequick filters. Each opens a list of values with a checkbox, plus Paste list and a Search or type custom value box.
    Add filternot a filter. It opens Customize Quick Filters: tick which of the four get pinned to the bar. Type and Source are pinned by default; add the other two yourself.

    Each value has two ways in. Hover a value and two circles appear on the right: keeps only that value, excludes it. So you can just as easily ask for “everything except Internal”.

    Source filter opened
    B4.1.3: Source opened: the three values, the include / exclude circles on each row, and Paste list on top.

    What you picked shows as a chip on the bar, Type: Video, Source: Youtube. Drop one with its ×, or wipe the lot with Clear all. Filters stack, so those two together mean Youtube videos only.

    Two filters applied, shown as chips
    B4.1.3: the two chips, each removable on its own · Clear all · the result count, down from 27 to 6.
    Filters do not survive a refresh, and the link is not shareableThey hold while you stay on the page, but reload and the chips are gone and the list comes back unfiltered. The address bar writes ?bResourceTypes=[object Object] instead of the value, so sending someone that URL sends them an unfiltered page. If you need to hand over a specific set, say which filters to set rather than pasting a link.

B4.2 · Create one

Click Create New, top right. A drawer opens over the list. Then work down the form in order, because the second field changes what the rest of it looks like.

Create New button
B4.2: Create New.
You only have to fill in the required fieldsThose are the ones carrying a * next to the label, and the form will not let you create the resource until each of them has something in it. Leave one empty and it turns red with This field is mandatory under it.

Everything else is optional and you can skip it. The list below walks the whole form, required and optional together, so you can see what each field does before you decide whether you need it.

  1. Title: required. This is what a talent reads on the card, so write it for them, not for the file.
  2. Resource Type: Video or PDF. Set this before anything else. It decides which fields exist below, and once the resource is saved you cannot change it (B4.x.3 ↗).
    TypeWhat appears
    VideoSource (required) + Video URL (required)
    PDFSource and Video URL disappear; Upload PDF File takes their place, required
    Create Resource form, Video type
    B4.2.2: the two fields only Video has: Source · Video URL.
    Create Resource form, PDF type
    B4.2.2: switch to PDF and Upload PDF File replaces them.
  3. Source (Video only): where the video comes from. It changes what you have to supply:
    SourceWhat you do
    Youtubepaste the video link into Video URL.
    Vimeosame: paste the link into Video URL.
    Internalupload a video file from your own machine. Play it back in the drawer before you press Create. That is the only moment you can catch the wrong file, and Resource Type is locked afterwards.
  4. Status: what happens the instant you press Create. Default is Draft.
    StatusThe moment you press Create
    DraftNot on the talent portal. Safe: keep editing, publish when you are happy.
    PublishedLive immediately. Talents can see it as soon as the drawer closes, so be sure it is right first. You can still edit it or change status afterwards.
    ArchivedNot on the talent portal. Goes to storage. Still editable, and you can move it back out.

    Nothing here is one-way: all three statuses can be swapped later from the row menu (B4.5 ↗).

  5. Display Page: which talent screen also gets a block with this resource on it. Optional.

    Leave it blank and nothing breaks: the resource still shows up on the talent Resources tab like everything else. It just does not get an extra placement anywhere. Full breakdown of the three values in B4.3 ↗.

  6. Categories: how the resource is classified. Two values exist: Profile Tips and Interview Prep. You may leave it empty, pick one, or pick both.

    Worth filling in: this is the only field a talent can filter on in their Resources tab (B5.2 ↗). Empty means harder to find, not just untidy.

  7. Published At: the day the resource becomes visible on the talent Resources page. Treat it as required, because a resource with no date never appears, whatever its status says.
    You want it…Set Published At to
    live nowtoday, from the date picker. It appears as soon as the status is Published.
    live on a set daythat day. It stays out of sight until then, which is how you line something up in advance.
    live, but dated earliera past date. Allowed, and it appears straight away; the card just carries the earlier date.
    Leaving it empty is the one thing that quietly breaksAn empty date does not mean now. It means never, until somebody goes back and fills it in. Publishing does not fill it in for you, not from this form and not from the resource list, so the resource sits in the Published tab looking finished while no talent can reach it.

    Known gap, and it is on the list to be improved. Until it is, put a date in every time, even when that date is today.

  8. Description: a line or two under the title on the card. Optional; the card renders fine without it.
  9. Thumbnail: the picture on the card. Optional, and what you get when you skip it is not the same everywhere:
    Left blank on…Admin listTalent card
    PDFa red PDF iconplain grey fintalent.com placeholder
    Video, any sourcegrey box with a plain grey fintalent.com placeholder
    A Youtube or Vimeo link does not bring its own pictureThe video's own cover image is never pulled in, so the card shows a placeholder instead. Upload a thumbnail yourself.
    PDF row with no thumbnail
    B4.2.9: PDF, no thumbnail: the admin table falls back to a PDF icon.
    Video row with no thumbnail
    B4.2.9: Video (Youtube), no thumbnail: a grey box with a play symbol, not the Youtube cover.
    Two talent cards with no thumbnail
    B4.2.9: the same two on the talent side: the video · the PDF. Identical placeholder; only the badge tells them apart.

B4.3 · Decide where it shows

  1. Display Page has three values, and each one puts a block on a different talent screen. This is the field people skip.
    Display Page dropdown open
    B4.3.1: the three values: Home, Project, Project Details.
  2. What each one does: all three were checked against live counts:
    Display PagePuts a Resource block on
    Homethe talent's Home page, low in the left column, under the standing FAQ cards.
    Projectthe project list (Work), at the bottom of the filter sidebar.
    Project Detailsa single project's page, top of the right column.

    What each one looks like on the talent side:

    Resource block on the talent Home page
    B4.3.2: Display Page = Home, low in the left column, under the standing FAQ cards.
    Resource block on the project list
    B4.3.2: Display Page = Project, at the bottom of the filter sidebar on the project list (Work).
    Resource tabs on a project detail page
    B4.3.2: Display Page = Project Details, top of the right column on a single project's page.

    Every block is split Videos (n) / Documents (n) and scrolls as a carousel. See all three in B5.4 ↗.

B4.4 · Publish it

  1. Status defaults to Draft, so a resource you just created is invisible to talents until you say otherwise. You can publish from inside the drawer (set StatusPublished) or later from the row menu.
    Status on its own does not make it visibleA resource shows on the talent Resources page only when it is Published and Published At is today or earlier. Publish something whose date is empty and it stays invisible (B4.2.7 ↗).
  2. From the list: row Set Publish. The menu always offers the two statuses the resource is not currently in, so what you see depends on the row:
    Row isMenu offers
    DraftEdit/View Details · Copy Resource Link · Set Publish · Set Archive
    PublishedEdit/View Details · Copy Resource Link · Set Draft · Set Archive
    ArchivedEdit/View Details · Copy Resource Link · Set Draft · Set Publish
    Row menu on a Published resource
    B4.4.2: the row menu on a Published row: the two moves offered are Set Draft and Set Archive.
  3. Confirm. The dialog names the resource, shows the status change as chips, and tells you what publishing means, “It will be visible to users on the selected display page.” If you left Display Page empty, read that as the Resources page.
    Publish Resource confirmation
    B4.4.3: what publishing does · Confirm.
  4. You can also publish on the way in, and you do not have to. Leaving Status on its default Draft is perfectly normal: write the resource now, publish it later from the row menu above whenever it is ready. Nothing is lost by waiting.

    If you already know it should be live, set Status to Published on the create form (B4.2.4 ↗) and skip the row menu entirely. Either way Published At still needs a date, or the resource is published and invisible (B4.x.1 ↗).

B4.5 · Edit, draft, archive

  1. Edit: click the title, or Edit/View Details. Same drawer, retitled Update Resource: <title>, and the button now reads Update. One thing differs from Create: Resource Type is greyed out. Everything else is editable, including Published At, which is where you fix a resource that was published without a date.
    Update Resource drawer
    B4.5.1: Resource Type, locked · Published At, editable, and empty if nobody set it.
  2. Swap the file without recreating the resource. The drawer shows the stored filename and a Change PDF File / Change Thumbnail button. Use this to correct a bad upload. The resource keeps its link, its date and its place.
  3. Pull it back: Set Draft hides it from talents while you fix it; Set Archive retires it for good. Both are reversible, and neither destroys anything.
  4. Copy Resource Link puts the file's own URL on your clipboard, handy for pasting into an email.
  5. Change a whole batch at once. Tick the checkbox in the table header, or on individual rows, and a bar appears above the table. It carries Bulk Actions and a running count, N resources selected. Select a full page and one more option shows up, Select all N resources, which takes the rest of the filtered set with it.
    Bulk Actions offersNote
    Publish N resourcessame effect as publishing each one by hand.
    Archive N resourcesthe batch equivalent of Set Archive.

    There is no bulk Set Draft: pulling things back out of Published is one row at a time.

    Pairs with B4.1.3 ↗: filter down to exactly the set you mean, tick the header box, act once.

    Bulk Actions menu
    B4.5.5: the selection bar with the running count · the two actions, each naming how many rows it will touch.

B4.x · Edge cases

  1. Published, but the talent still cannot see it? Check Published At. A resource only reaches the talent Resources page once Published At is today or earlier. Setting the status to Published by hand does not get around that.
    Published AtTalent sees it?
    today or earlierYes.
    a future dateNo. It waits until that day, however you published it.
    emptyNo. There is nothing to compare against, so it never appears at all.

    The fix is one field. Open the resource (B4.5 ↗), look at Published At, and either bring a future date back to today or fill in the empty one.

    A future date is somebody scheduling deliberately. An empty date never is: nothing in the product fills it in, so it means the resource was published and the date was forgotten. That is the case on the list to be improved (B4.2.7 ↗).

    The placed blocks ignore the date. A resource with a future or empty date still shows in its Home / Project / Project Details block (B5.4 ↗), which is how a talent can watch a video on their Home page and then fail to find it by searching.

  2. There is no Delete. Not in the row menu, not in the drawer. A resource can only be moved between Draft, Published and Archived. Archive is the delete: use it, and stop looking for a bin.
  3. Resource Type is locked once saved. You cannot turn a Video into a PDF later. If you picked wrong, archive it and create the right one. There is no conversion.
  4. Validation does not always show you everything at once. On a Video, an empty form flags Title and Video URL together. On a PDF the file check comes second, submit an empty form and you only get This field is mandatory! under Title; fill the title in, submit again, and only then does PDF File is required appear. Fix, resubmit, and re-read the form rather than assuming the first pass listed everything.
    Validation errors on the create form
    B4.x.4: a Video form submitted empty: Title · Video URL, both flagged in the same pass.
  5. One switch turns Resources off for the whole platform. Config Management → Payment Config → Subscription → Restrict Talent Modules is a multi-select, and Resource is one of the choices. Add it and every talent loses the menu entry and all five blocks at once, nothing about the resources themselves changes, so the admin list will look perfectly healthy while the talent side is dark.

    The field currently holds Deal Intelligence Feed, Network, Team and Subscription, and Resource is not among them. If Resources ever go missing for everyone at once, look here first.

    Restrict Talent Modules with the Resource option
    B4.x.5: the four modules currently switched off · Resource, the unticked fifth option. Ticking it turns the whole feature off.
  6. No Display Page is a valid answer. The field has no asterisk and saves empty. The resource is then reachable only from the talent Resources page. Which is the right choice for reference material nobody needs pushed at them, and the wrong one for something you want seen.

TALENTB5 · Find a resource

Goal: the same feature seen from the other side. Who gets in, where the material turns up, and what a talent can actually do with it.

B5.1 · Who can see them

  1. Three conditions, and all three have to hold. Fail any one and the talent loses the Resources menu entry and every block described in B5.4 ↗. It is one switch, not several.
    ConditionWhat satisfies it
    Talent statusone of Active · Passive · In Review · Review Passive. Note what that includes: a Passive talent still gets resources, and so does someone still In Review.
    Module not restrictedResource must not be listed in Restrict Talent Modules, a platform-wide switch, see B4.x.5 ↗.
    Signup fee paidthe talent has paid the one-time access fee.
  2. When it fails, the menu entry is simply not there. Nothing is greyed out and nothing explains why, Resources is absent from the navigation, so most talents will never know the section exists.
    Typing the URL gets a message that liesThe route still resolves. A talent who has an old link or a bookmark lands on the page and is told “No resources found — Try adjusting your search or filter”. That reads as an empty search, not as a locked door. They will fiddle with the filters, find nothing, and report that the library is empty. If someone says that, check the three conditions above before you go looking for a bug.
  3. Only Published reaches them. The talent side cannot ask for Draft or Archived at all, the server decides, so there is no filter a talent could set that would expose unfinished material.

B5.2 · The Resources page

  1. Resources in the top navigation (bottom bar on a narrow screen).
    Resources in the talent navigation
    B5.2.1: the Resources entry.
  2. Three controls and a live count. They stack: set two and you get the intersection, and the count under them always tells you how many cards survived.
    ControlHow it behaves
    Search resources…free text, filters as you type, no button to press. Matches title and description, so a word from the summary finds it too.
    All Typessingle choice: Video or Document. “All Types” is the reset.
    Categoriesmulti-select: Profile Tips and Interview Prep, the field admins set at B4.2.6 ↗. Chosen values sit in the box as chips; click the × on a chip to drop just that one.
    N resources foundthe honest number of cards below. Quickest check that something you published has gone live.

    Unlike the admin side, these actually work, compare B4.1.3 ↗. A resource with no Categories can only be reached by search, never by the Categories filter.

    The talent filter row
    B5.2.2: Search · All Types · Categories · the count.
    All Types dropdown open
    B5.2.2: All Types opened: only Video and Document.
  3. Read a card. Thumbnail with for video or 👁 for document; a ⬇ Document chip on PDFs or a duration badge on videos; then title, description, #category chips and Published at <date>. Cards whose thumbnail is a plain Fintalent placeholder are ones nobody uploaded an image for.

B5.3 · Open one

  1. Clicking a card opens its own page, ← Back To Resources, the title, the published date, the category chips and the description. What you can do there depends on the type:
    TypeActions
    PDF👁 View Document and ⬇ Download Document
    Video▶ Watch Video, nothing else
    Resource detail page for a PDF
    B5.3.1: a PDF: View Document and Download Document side by side.

B5.4 · Where the blocks appear

  1. There are exactly five places a Resource block can be rendered, and no others. All five are the same component with a different Display Page passed in, so a resource never appears somewhere its Display Page does not name.
    #ScreenDisplay PageWhere on the screen
    1Home. Standard layoutHomeleft column, below the FAQ cards. Heading reads Resource.
    2Home: deal-intelligence layoutHomeright column, below Recent deal activity / Weekly deal calls / Boutique network. Heading reads Resources.
    3Project list (Work)Projectbottom of the filter sidebar, past Preferred Country.
    4–5Project detailProject Detailsin the apply / CTA panel of the right column. Two layout variants exist in the code; only one renders, so you see a single block.
    Two different Home pages, same URL/overview renders one of two layouts and the block moves column between them. A talent with Deal Intelligence Feed access gets layout 2 (right column, plural heading); everyone else gets layout 1 (left column, singular heading). Same resource, different place, so “it is not on my Home page” may just mean the other layout.
  2. Home: the block sits under the standing FAQ cards. Do not confuse it with those: How to write a winning pitch and the rest are fixed page content, not resources, and no admin setting moves them.
    Resource block on the talent Home page
    B5.4.2: Display Page = Home, standard layout.
  3. Project list: the bottom of the filter sidebar under Work.
    Resource block on the project list
    B5.4.3: Display Page = Project.
  4. Project detail: top of the right column, beside the briefing.
    Resource tabs on a project detail page
    B5.4.4: Display Page = Project Details.

B5.x · Edge cases

  1. “No resources found” usually is not about the filters. The message is the same whether a search genuinely matched nothing or the talent has not paid the signup fee. Check payment first: see B5.1 ↗.
  2. Videos cannot be downloaded. Only PDFs get a download button. If a talent needs a video offline, there is nothing in the product for that.
  3. A block can show more than the Resources page. The blocks list every published resource for their Display Page. The Resources page additionally requires Published At to be today or earlier, so anything post-dated or undated is missing from it while still sitting in its block. A talent can watch a video on their Home page and then fail to find it by searching. Admin side of the same gap: B4.x.1 ↗.

OPSO1 · Your Ops workspace

Goal: know the Ops workspace: the tools SDRs don't have (Contacts, Companies, and the full Segments (Lists) controls). You log in the same way everyone does (see SDR Flow 1); this flow is about what you get once you're in.

O1.1 · Your Ops menu

  1. Under Sales Management an Ops/Admin sees more than an SDR: besides Segments, Inbox and Meetings, you also get Contacts and Companies (the data tables), plus Email Queues, Email Logs and Signals. Head to Segments (Lists): the page has tabs Talent, Company and Contact, per-row Actions (👤+ add members, assign and 🗑 delete), an Assignee column and a Category column (the SDR label).
    Ops Segments page
    O1.2: Segments (Lists) as Ops: full menu on the left (incl. Contacts/Companies), tabs, Actions · Assignee · Category columns, + Create New.

O1.x · Edge cases

  1. Preview what the SDR sees, "View as role → SDR". From your profile control you can switch the UI into the trimmed SDR view (no Contacts/Companies; just their lists + Inbox). Use it to check exactly what a rep will get before you hand a list over.
    View as role SDR
    O1.x.1: View as role → SDR: the preview banner + the trimmed SDR menu.

OPSO2 · Create a list

Goal: make an empty list (a "segment") that will hold a work-set for one SDR. SDRs can't create lists: this is Ops-only.

O2.1 · Open Segments (Lists)

  1. Left menu → Sales ManagementSegments (Lists). This is the page that holds every list.

O2.2 · Switch to the Contact tab

  1. At the top, click the Contact tab. Why this tab: the page holds three kinds of list, Talent (candidates), Company (companies), and Contact (people you email). When you click + Create New next, the modal's Type field is locked to whichever tab you're on, you can't change it there. An outreach list must be a Contact list, so stand on the Contact tab first; otherwise you'd create a Talent/Company list you can't use for outreach.
    Segments Contact tab
    O2.2: the three tabs (Talent · Company · Contact) + + Create New (top right). Type is locked to the active tab.

O2.3 · Create the list

  1. + Create New (top right) → the Create List drawer: Type (Contact, pre-set), List name* and optional SDR list checkbox (see edge case) → Create. The empty list now appears on the Segments page, ready to fill (O3).
    Create List modal
    O2.3: Create List: Type · List name · SDR list checkbox (with the exclusivity rule).

O2.x · Edge cases

  1. "SDR list", one contact, one SDR list. In the Create List drawer, tick the SDR list checkbox (circled below) to make it an exclusive rep list. The rule: a contact can belong to only one SDR list, if they're already in one, adding them to a second SDR list is skipped (they stay in the first, and a toast tells you. See O3.x.6). This is what guarantees a rep's contacts aren't also being worked by another rep. Non-SDR lists have no such limit.
    SDR list checkbox ticked
    O2.x.1: the SDR list checkbox ticked (card highlighted) + its exclusivity rule.
    In-app copy mismatch: real behavior is skip-and-keep-firstThe Create-List checkbox helper currently reads the opposite ("A contact can belong to only one SDR list, adding it here removes it from other SDR lists", i.e. move). The real behavior is skip-and-keep-first: a contact stays in its first SDR list and the second add is skipped (see O3.x.6). That in-app helper copy should be corrected.
  2. Edit the name. You don't re-create a list to rename it. Step by step: ① open Segments (Lists) → the Contact tab → find the list's row. ② Click the list name → it turns into an inline text field. ③ Type the new name → confirm with (or to cancel). The row updates in place.
    Inline rename a list
    O2.x.2: click the list name to rename it inline (✓ save · ✕ cancel).
  3. Edit the category (the SDR label). The category is what makes a list an exclusive SDR list (one contact → one SDR list, see O2.x.1). Step by step: ① open Segments (Lists) → the Contact tab. ② Tick the list's checkbox → an action bar appears. ③ Click Set SDR to give it the SDR category, or Clear category to remove it. (A list that already has the category also shows an on its SDR badge in the Category column, a one-click clear.)
    Set SDR / Clear category
    O2.x.3: select a list → the action bar's Set SDR / Clear category (the Category-column badge also clears).
  4. Delete a list. On the Segments row's Actions column click the red 🗑 Delete icon → confirm. This removes the list only: the contacts themselves stay in Contacts and in any other list (same idea as removing members, just for the whole list).

OPSO3 · Add contacts to list

Goal: put the right people into the list. There are three ways in: from the Contacts page (O3.1), from inside the list (O3.2), or from a company's Employees tab (O3.3). Filtering, keyword search, bulk-select and viewing a contact are in Edge cases.

O3.1 · Add from the Contacts page

  1. Open Contacts (left menu) → the full contact table.
    Contacts table
    O3.1.1: Contacts: the table + filter bar + search.
  2. Select the contact(s): tick the checkbox on each row you want. A blue action bar appears: Add to list, Add to campaign, Add to marketing email, Delete contacts and More.
    Contacts selected
    O3.1.2: tick rows → the action bar with Add to list.
  3. Click Add to list (in the action bar) → the Add to list drawer opens with Apply to = Selected (n).
  4. Select the target list: search and tick the list you want in the drawer.
    Add to list drawer with a list ticked
    O3.1.4: Add to list drawer: Apply to = Selected → tick the target list (circled) → Add to N list(s).
  5. Click Add to list (the drawer's confirm button) → done. Verify on the list's Members tab (the count can lag a moment).

O3.2 · Add from inside the list (list detail)

  1. Open the list detail, Segments (Lists) → the Contact tab → click the list → its Members tab.
    List detail Add members
    O3.2.1: list detail, Members tab → + Add members (top right).
  2. Click + Add members → the Add contacts to "<list>" picker opens. Contacts already in this list are auto-excluded (a Custom List filter chip does this), so you only see people you can still add.
    Add members picker
    O3.2.2: the picker: the Custom List chip auto-excludes current members; tick contacts on the left.
  3. Select the contact(s): tick each row, or the header checkbox (whole page), or Select all N matching. A "N selected" action bar appears.
    Add members with rows selected
    O3.2.3: rows ticked → 20 selected · Select all matching + the action bar's Add to list.
  4. Click Add to list in the action bar → they join the list; the Members count updates.

O3.3 · Add from a company's Employees tab

  1. Open Companies (left menu) → click a company → its detail.
    Company Employees tab
    O3.3: a company's Employees tab: tick employees → Add to list.
  2. Open the Employees tab: the company's whole staff on file (Foresight Group shows 485).
    Company Employees tab
    O3.3.2: the company detail's Employees tab: the full staff list with the same filter bar.
  3. Select the employee(s): tick each row, or the header checkbox / Select all N matching. A "N selected" action bar appears with Add to list.
    Employees selected
    O3.3.3: employees ticked → 20 selected · Select all 485 matchingAdd to list.
  4. Click Add to list → the list picker opens (Apply to = Selected) → tick the target listAdd to N list(s). Good for grabbing everyone at one firm.
    Add to list picker from employees
    O3.3.4: from Employees you still pick a list (testing-sdr-list-v3 ticked) → Add to 1 list(s).

O3.x · Edge cases

  1. Use a filter. Click a filter chip (e.g. Lifecycles, Countries, Work Experience and Owner) → the dropdown lists every value, each with a ✓ (include) and an ✕ (exclude) on the right → click to narrow the table. + Add filter pins more. Filter first, then select (O3.1.2).
    Filter dropdown include exclude
    O3.x.1: the Lifecycles filter open: each value has ✓ include / ✕ exclude (circled).
  2. Use keyword search. Type in the "Search contacts by keyword" box (names, titles and companies) → the table filters live. Combine with filters.
    Keyword search
    O3.x.2: keyword "Managing Director" → the table narrows to 1,897 matching.
  3. Select all N matching (bulk). Instead of ticking one page, tick the header checkbox then click "Select all N matching" → the bar shows All N matching selectedAdd to list adds the whole filtered set. ⚠ Note: you must have at least one filter or keyword active first, without a filter, Select-all-matching won't let you Add to list (it stops you from dumping the entire database into a list by accident).
    Select all matching
    O3.x.3: with a keyword filter active: All 1,897 matching selectedAdd to list.
  4. View a contact's detail first. Click a contact's name/title → the profile drawer opens (facts, Work Experience, Signals and Conversations) so you can check who they are before adding.
    Contact detail drawer
    O3.x.4: the contact detail drawer.
  5. Add via "+ Add contacts" (Campaign / Marketing Email). Open the Campaign (or Marketing Email) → the People tab → click + Add contacts (top right) → the contacts picker opens → filter/tick → Add. This loads that campaign's / ME's audience, the reason SDRs can't add people themselves.
    Campaign People + Add contacts
    O3.x.5: a live campaign's People tab (1 person) → + Add contacts (top-right) opens the contacts picker.
  6. Duplicates & SDR-list skip: read the toast.
    • Already in this list → the contact is silently skipped; no duplicate row is created and the count doesn't double-count them.
    • Already in another SDR list → the contact is skipped, not added. A contact can live in only one SDR list at a time (the exclusivity rule, O2.x.1), so the system protects the existing assignment and shows a toast with the count skipped (e.g. "1 contact(s) skipped, already in another SDR list"), telling you they were skipped because they're already in another SDR list. To move them, first remove them from the old SDR list (O4), then add.
    SDR-list skip toast
    O3.x.6: the toast: some added, but a contact already in another SDR list is skipped (not moved), the other rep's assignment is protected.
  7. Verify the count while adding. The point here is just to look, you don't tick any list. Flow:
    1. Select the contact(s): this is what makes the Add to list button appear (no selection → no button).
    2. Click Add to list → the Add to list drawer opens.
    3. Verify: way A: read the Members column. Every list in the drawer shows its current member count (e.g. 17072026v3 = 359). A quick eyeball: no clicks, no ticking.
      Members count column in the drawer
      Way A: the drawer's Members column: each list's live count.
    4. Verify: way B: open the list's detail. Click the list's name → its detail opens right there → the Members tab shows the exact count ("Showing X of N") and the actual people.
      List detail opened from the drawer
      Way B: click the list name → detail opens with the live count (here 359).
    (The Segments (Lists) page also shows the per-list Members column, if you'd rather check there.)
  8. Add to several lists at once. The Add to list drawer isn't one-list-only. Tick as many lists as you want (use the search to find them). The confirm button counts your picks: with two lists ticked it reads "Add to 2 list(s)" → click it and the selected contact(s) are added to all those lists in one go.
    Add to two lists at once
    O3.x.8: two lists ticked in the drawer → the confirm button becomes "Add to 2 list(s)" → Save adds to both.

OPSO4 · Remove members

Goal: take people out of a list, and see the full history. (Adding is its own flow: O3.) Start: Segments → open the list.

O4.1 · Remove a member

  1. Open Segments (Lists) → the Contact tab.
    Segments list
    O4.1: Segments (Lists), Contact tab: every list, with Members / Assignee / Category columns.
  2. Select the list: click its name to open it.
  3. You land on the list detail → the Members tab (the list's people).
    List detail members
    O4.3–O4.4: the list's Members tab: tick the member(s) you want to remove.
  4. Select the contact(s): tick the checkbox on each member's row (or the header checkbox to grab the page).
  5. In the action bar click Remove from list → confirm. Removing only breaks the membership link: the contact itself is untouched (they stay in Contacts and in any other list). Verify the drop in the Members column (Segments page or the list's Members tab; see O3.x.7).
    Remove from list confirm
    O4.5: Remove from list in the action bar → the Remove from list confirm dialog.

O4.x · Edge cases

  1. Narrow with a filter first. Before removing, use the members filter (Lifecycles, keyword and etc.) to show only the people you want gone, then tick and Remove. Saves hunting through the whole list.
  2. Select all matching (bulk remove). Tick the header checkbox to grab the visible page, or use Select all matching to select every contact matching the current filter (not just the page) → Remove from list clears them in one go.
  3. Skip the confirm: untick the checkbox. Beside Remove from list in the action bar sits a checkbox that is ticked by default, that's why every Remove pops the Remove from list dialog (so you can't wipe members by accident). Untick it and Remove runs immediately, with no confirm dialog, for the rest of your session; re-tick it to bring the safety prompt back.
    Remove checkbox unticked
    O4.x.3: the checkbox unticked (tooltip: "Confirm before removing: Off") → Remove runs with no confirm dialog.

OPSO5 · Assign a list to an SDR

Goal: hand the ready list to a rep so it shows up in their Segments (Lists). This is the moment Ops → SDR: after this, the SDR side of the guide takes over.

Assign a list to an SDR: step by step

  1. Open Segments (Lists) → the Contact tab.
  2. Find the list you want to assign (the one you filled in O3).
  3. In that row's Actions column click the Assign assignee icon (the gear/assign icon, the middle of the three row-action icons: add-members, assign and delete). The current owner (if any) shows in the Assignee column with a role badge.
    Assign assignee icon
    O5.3: the Actions column: Add members · Assign assignee (middle, circled) · Delete.
  4. The Assign assignee drawer opens: every user with a Roles filter (Admin, Sale Admin and SDR …). Search / filter and tick the assignee, usually the SDR (e.g. Dong SDR).
    Assign assignee drawer
    O5.4: Assign assignee: user list + Roles filter → tick the person.
  5. Click Save → the Assignee column now shows them; the list appears in their Segments (Lists), and because it's an SDR list it's exclusively theirs.

O5.x · Edge cases

  1. Edit / re-assign the owner. Open the Assign assignee icon on the row again → pick a different person → Save. This replaces the current assignee (the list moves from the old owner's Segments into the new one's).
    Re-assign drawer with current owner pre-ticked
    O5.x.1: re-assigning 17072026v3: the current owner (SDR Internal Fintalent) is pre-ticked → tick a different person → Save.
  2. Bulk-assign several lists at once. Step by step: ① in Segments (Lists) tick the checkbox of each list. ② In the action bar click Assign assignee (N). ③ Pick the mode: Add new (adds this owner alongside existing ones) or Overwrite (replace owners) (clears existing owners first). ④ Tick the assignee → Save.
    Bulk assign modes
    O5.x.2: bulk Assign assignee across N lists, with Add new / Overwrite (replace owners) mode.
  3. Clear the owner. Fastest way: hover the assignee on the row → a appears right after their name → click it to remove the owner → the Assignee column shows , again and the list is held by nobody. (You can also open the Assign drawer and clear the selection.)
    Clear owner X on hover
    O5.x.3: hover the assignee → the (circled) appears; click it to clear the owner in one click.
Hand-off done → SDR takes overOnce assigned, the rep opens the list in Segments (Lists) and works it day-to-day. That's the SDR side of this guide, starting at Flow 1.

SDRFlow 1 · Log in & find your workspace

Goal (core): get signed in, see your workspace, and know what each menu item is for. That's the whole job: account settings, signature, password, log out all live in Edge cases.

1.1 · Log in

  1. Open admin.fintalent.io. If you're not signed in, the login screen appears, Email, Password and Log In.
    SDR login page
    1.1: the login screen: just Email, Password, Log In.
  2. Type the Email and Password the Admin gave you → click Log In.

1.2 · Your workspace

  1. Log In drops you on Campaigns, your workspace inside Sales Management. Move around with the left menu (8 items); your account card is bottom-left. No Contacts/Companies pages: your lists and Inbox are the entry points.
    Workspace right after login
    1.2: where Log In lands you: the Campaigns page, with the Sales Management menu on the left.

Here's what each menu item is for:

MenuWhat you do hereWhat you can't
Segments (Lists)Open the lists assigned to you and work the members, Flows 2–6.Can't create a list, assign, or add/remove members, Ops owns that (O2–O5).
InboxRead replies and reply in-thread: Flow 4.It's a reply queue: nothing to "create".
Meetings: :
Message TemplatesFull create / edit / delete, use & build in Flow 3.x.1.,
SnippetsFull create / edit / delete, use & build in Flow 3.x.2.,
DocumentsFull create / edit / delete, the 🗂 file library, Flow 3.x.3.,
CampaignsView / build multi-step campaigns: Flow 6.Can't add people: Ops loads the audience.
Marketing EmailsView / build a single-blast email, Flow 7.Can't add people: Ops loads the audience.

1.x · Edge cases

  1. Already signed in. Opening the address again skips the login screen and drops you straight back into your workspace, no need to log in again. Your session lasts until you log out (1.x.6).
  2. Forgot / need to change your password. There's no self-serve reset: contact the Admin and they'll help you reset it.
  3. Where I can open my account? Your account card is at the bottom-left of the sidebar (avatar, name, email and a refresh icon, that's all; no view-as/eye control on an SDR login). Click your name/avatar to open Update Admin Information (5 tabs: General Setting, Billing, Payment, Activities Log and Email Configuration); log out from the account card's control (1.x.6).
    Account card (SDR)
    1.x.3: the account card (avatar · name · email · refresh); click your name to open settings.
  4. View your profile info. On General Setting you can see your First name, Last name, Phone number, Avatar (and Email and Roles). You can't change these yourself: to update your name, phone, or avatar, contact your Admin.
    General Setting tab (SDR)
    1.x.4: General Setting: view your name · phone · avatar · Email · Roles (read-only, Admin updates these).
  5. Your email signature. Why it matters: your signature is the sign-off block with your name, title, company, phone and booking link. It gets added automatically to the bottom of every email you send. That keeps every message looking the same, and it means the prospect always knows who you are and how to reach or book you. On the Email Configuration tab you can view your current Signature, Sender Name, and default attachments. You can't edit these yourself: to set or change your signature, contact your Admin.
    Email Configuration tab
    1.x.5: Email Configuration: Signature, Sender Name, default attachments (view-only for you).
    Signature auto-added in a new email
    1.x.5: the payoff: your signature is added automatically to the bottom of every new email you compose, no retyping.
  6. Log out. Use the log-out control on your account card to end the session.

SDRFlow 2 · Find a target contact

Goal (core): open the list Ops gave you → view the contacts → pick one and read it, ready to work. Filtering, searching and seeing other owners are in Edge cases.

2.1 · Open your assigned list

  1. In the left menu click Segments (Lists) (the first item under Sales Management) → the page shows only the lists assigned to you, with member counts & created date. Empty page → no assignment yet, ask Ops. Your list is fixed: you can't add/remove members.
    Assigned lists
    2.1: the lists assigned to you. Click one to open it.

2.2 · View the contacts

  1. Inside the list you get the members table: Title, Account (name) , Country, City, Lifecycle Stage, Signals, Last Contact ↓ (sortable) , Action icons (✉, WhatsApp and LinkedIn). "Showing 0 of N" just means it's still loading.
    List members (Simple view)
    2.2: the members table: Title · Account · Country · City · Lifecycle · Signals · Last Contact · Actions.

2.3 · Pick & read a contact

  1. Click the Account (name) or the Title → the profile drawer opens: action bar Send email, WhatsApp and LinkedIn; facts (Phone, Location, LinkedIn, Experience, Lifecycle and Labels); collapsible Work Experience, Education and Certificates; the Conversations rail on the right edge.
    Contact profile drawer
    2.3: the profile drawer opens over the list: everything you need to decide and personalize.
  2. Open Work Experience (the number = how many roles) for their real role, firm and dates, your personalization goldmine.
    Work experience expanded
    2.4: Work Experience expanded: roles + companies + dates.
  3. Check Signals: a fresh reason to reach out. The Signals column has two kinds, and knowing which is which tells you how to open the conversation:
    • ⚡ Signal (news): a recent event at the company (a fund launch, an acquisition, a live auction, e.g. "BauWatch ticks live…", "Wafra launches fund…"). This is the type that can draft an email for you, see Flow 3 · Way 4.
    • 💼 Job (title / role change): a person-level change such as a new title or role (e.g. "Associate Partner – M&A…"). Good context for a personal note, but it does not pre-draft an email.
    "2mo" = how old the signal is; "+N" = more signals, click +N to expand them all. Click a signal itself → its detail opens (headline, source and date); for a ⚡ Signal (news) it also carries a ready email you can send, see Flow 3 · Way 4. Also glance at the Conversations rail (right edge). A teammate may already be talking to them. Now you're ready to classify (set its Lifecycle) or email (Flow 3).
    Signals column: two types
    2.5: the two signal types: ⚡ Signal = company news (red), 💼 Job = title/role change (blue).
    Signal detail opened
    2.5: click a signal → its detail opens: headline · source · date, plus Use this email content to reply / Copy email, EN / DE (⚡ Signal only).
    Signals expanded
    2.5: "+N" clicked: every signal for the contact, each with its age.

2.x · Edge cases

  1. Filter by Lifecycles. Click Lifecycles → every value has a and an :
    • ✓ include = keep only contacts at that stage (show them, hide the rest).
    • ✕ exclude = hide contacts at that stage (drop them, keep the rest).
    • Several together = OR: a contact matches if it's at any ticked stage.
    The Has a lifecycle / No lifecycle radios catch contacts with/without any label; the box at the top lets you search or type a custom value. E.g. tick ✓ Prospect to work only untouched people; add ✕ Opted Out and ✕ Not Interested to hide the dead ones. Full Lifecycles reference → Flow 8.1 ↗
    Lifecycles filter
    2.x.1: Lifecycles filter: ✓/✕ per value, Has/No radios, Paste list.
  2. Keyword search. The box over the table searches names, titles, companies, and remembers Recent searches. Search + Lifecycles combine. More list filters → Flow 8.1 ↗
    Keyword search
    2.x.2: keyword search with Recent searches memory.
  3. "Held by teammates": check before you email.

    Why: so two reps don't work the same company at once. If a firm already has someone at Interested or higher (Interested, Call Scheduled, Platform Sign Up, In Project and Project Completed), a teammate probably has a live deal there, emailing a different person makes the firm hear two Fintalent voices and can hurt that deal.

    How: open your list → expand the company rail (») → click a company (①). The table then splits in two:
    • White rows = yours: contacts in your list; work them normally (never shown twice).
    • Gray rows = held by a teammate, not in your list but in a teammate's at a hot stage; a "N held by teammates" pill shows the count (②). Don't email them: hover the to see who holds whom, then align with that teammate first.
    (People at Prospect / In Conversation, or in no list, aren't shown, a cold touch isn't a collision.)
    Expand company rail (SDR view)
    2.x.3 · step: the left company rail is collapsed to logos only by default; click the » toggle at its top to expand it.
    Held by teammates
    2.x.3 · result: ① pick a company → ② the "N held by teammates" pill + gray rows (Case 2).
  4. View a company's detail. In the left company rail, click the company name (highlighted in the image) → its detail drawer opens on the right with the firm's profile. Use it to sanity-check a firm before working its people. Each field:
    FieldWhat it shows
    Name + logoThe company name, with status chips (e.g. Sponsor · In Conversation).
    DescriptionOne-line summary of the firm: sector, size, region (e.g. "PE firm, EUR 50–250m enterprise value, DACH").
    Alias namesOther names / spellings the firm is also known by.
    IndustryThe firm's industry classification.
    WebsiteCompany website: opens in a new tab.
    LocationHQ city & country.
    LinkedInThe company's LinkedIn page: opens in a new tab.
    Email domainsThe firm's email domains (e.g. dbag.com, dbag.de): handy to sanity-check a contact's email address.
    ParentParent company, if any (: when there's none).
    Company detail drawer: click the company name to open it
    2.x.4: click the company name in the left rail (highlighted) → the company detail drawer opens on the right.
  5. Sort by Country / City / Last Contact. Country, City and Last Contact are sortable columns, click the header to sort (click once = A→Z / oldest→newest, click again = reverse; empty values group first). Sort by Country / City to work one geography at a time; sort by Last Contact to surface who's gone quiet (feeds Flow 5).
    Sortable columns
    2.x.5: click Country · City · Last Contact headers to sort.
  6. Filter by Has signal (two levels). Besides Lifecycles (2.x.1), the members bar carries a Has signal filter, so the bar over your contacts is Lifecycles and Has signal, and the company rail has its own. It's the same word at two levels:
    • Members bar (right, over contacts) → Has signal: Yes keeps people who personally have a signal; the Signals column then has a value on every row (⚡ news / 💼 job). E.g. 359 → 246.
    • Company rail (left, over firms) → expand it (») and its bar shows Lifecycle and Has signal (+ 🔍 search). Has signal: Yes keeps firms that have a signal, the best ones to open with. E.g. 111 → 29.
    Same dropdown tool as Lifecycles: ✓ include / ✕ exclude, Has/No radios, Paste list. Full company-rail reference → Flow 8.2 ↗
    Company rail filters (SDR view)
    2.x.6: members bar = Lifecycles · Has signal; company rail = Lifecycle · Has signal (+ 🔍 search).
  7. Simple vs Full view. Top-right of the table is a Simple / Full toggle. Simple (default) shows the lean columns; Full adds more detail per row. Switch anytime: it only changes what you see, not the data.
  8. Show / hide columns. The gear ⚙ button (next to the Simple/Full toggle) opens a column picker, tick the columns you want shown, untick the rest. Handy when you only care about Signals or Last Contact.
  9. "Showing 0 of N": the list is still loading. A count of 0 with grey skeleton rows just means the members are still fetching (can lag a moment on big lists). Wait a beat: it fills in.
    List still loading: Showing 0 of N with skeleton rows
    2.x.9: Showing 0 of N + grey skeleton rows = still loading; it populates in a moment.
  10. "+N": a contact with several roles. When someone holds more than two jobs, the extra ones are folded behind a small "+N" chip in the Title / Work Experiences cell. Click +N to expand every role inline (past & present); click the that appears to collapse them again. The same +N pattern in the Signals column hides extra signals, click it to see them all.
    +N roles chip (collapsed)
    2.x.10 · before: two roles shown; the +N chip hides the rest.
    +N roles expanded inline
    2.x.10 · after: click +N → all roles expand inline (click to collapse).

SDRFlow 2b · Sort your list with the Fintalent Agent (β)

Goal: instead of judging 200 contacts by hand, let the Fintalent Agent read your whole list and file every contact into a bucketGroup A–D, Unmatched or Do-Not-Target — so you always know who to work first. When: when a list is newly assigned to you, or after Ops adds a batch of members — before you hand-pick targets (Flow 2.3) or send anything (Flow 3). Group A = the contacts that match the targeting rules best: work those first.

2b.1 · Open the agent

  1. Open your list (Flow 2.1). On the list's page a round Fintalent Agent button floats at the bottom-right, with a β badge. It lives only on a list's own page — the Segments overview and other pages don't have it.
    List page with the floating Fintalent Agent button bottom-right
    2b.1.1: a list open on Members; the round Fintalent Agent button (β) floats bottom-right.
  2. Click it → the agent panel opens on the right. Read the empty state top to bottom: the header shows where you are (Sales Management / Segments (Lists)); "I can see: list · <your list's name>" confirms the agent is looking at this list and nothing else; and WHAT I CAN DO HERE lists its one job on a list — Sort contacts into the right buckets, marked changes data, asks first. Two suggestion chips sit under the card.
    Agent panel empty state with capability card and suggestion chips
    2b.1.2: the panel: context line · capability card (changes data, asks first) · the two chips.
  3. Know your three buttons before you click. They all drive the same skill — the only real difference is preview vs write:
    ControlWhat it runsWrites data?When you'd click it
    Run (button on the card)The real run (2b.2)Yes — but only after the Yes, apply gateThe default. You came here to get the list sorted; the run stops at the gate and shows you the full breakdown before anything is written, so it is its own preview.
    Sort this list into buckets (chip)Same real run — the chip and the Run button are two doors to the same thingYes — same gate
    Show me what would change first (chip)The preview (dry run, 2b.3)No — read-only, no gate to answerYou only want the report today, not the write — e.g. to show Ops a suspicious split, or to look at a list you don't plan to touch yet.

    In practice: click Run and make your decision at the gate — one pass, and the gate's breakdown table is the safety net (No, skip throws it away). The preview chip repeats the same 2–3-minute check just to produce a report, and its counts can drift from the next run anyway — use it when you deliberately don't want a pending run. What you can't do: type the request in your own words — the chat box doesn't trigger the sort (2b.x.3).

2b.2 · Run & approve

  1. Start the run: click Run on the capability card (or the Sort this list into buckets chip — same thing). A TASKS card shows the plan, then the agent checks the list in batches of 100 — each batch row expands to show it ran isolated and its output was validated. A ~200-contact list takes 2–3 minutes; the footer says "Keeps running if you close this", and Stop run is the brake. When the checking is done it stops and asks you — nothing has been written yet.
  2. The approval gate. "OK to apply these changes?" — a breakdown table shows exactly what will be written: how many contacts change bucket, how many were reviewed, how many it leaves untouched, and the count per target bucket. Nothing is written until you click Yes, apply. No, skip throws the result away — which is why you can start with Run and still change your mind here. If the split looks wrong (say, half the list lands in Do-Not-Target), skip and flag it.
    OK to apply these changes? breakdown table with Yes, apply / No, skip
    2b.2.2: the gate: the full breakdown, and Yes, apply / No, skip. This is the moment that matters.

    If you ran the preview (2b.3) earlier, expect these counts to differ slightly — the agent re-judges borderline contacts each run. The table on this card is what actually gets written.

  3. Yes, apply → the writes happen per bucket ("Group A — 100 updated", "Unmatched — 33 updated", …), the card gets an Approved by you stamp, and the summary reads "Sorted N contacts … and updated M of them". Contacts it was not confident enough to file are left unchanged and listed in a needs-a-look CSV with a reason each (2b.x.2). Each contact keeps a record of the bucket it had before, so a sort can be undone (2b.x.6).
    Apply finished: per-bucket updated counts, Approved by you stamp, summary
    2b.2.3: after apply: per-bucket write rows · Approved by you · the final summary + needs-a-look CSV.

2b.3 · Preview without writing (optional)

The gate already previews every run — so this chip is for when you want the answer without a run waiting on you: pulling the split to show Ops, or checking a list you don't intend to write today.

  1. Click "Show me what would change first." The agent runs the same check as a dry run (/bucket-health.run dry=true): same batches, same timing, but it writes nothing and there is no gate to answer at the end.
    Dry run in progress: task list with batch rows
    2b.3.1: the dry run working batch 1 of the list; batch rows expand to show the run detail.
  2. Read the result. The summary says it plainly: "Nothing was written — here is what would change", followed by the would-be count per bucket, plus the needs-a-look CSV (2b.x.2). Remember the numbers are indicative — a later real run re-judges borderline contacts, and its gate table is what counts.
    Dry run result: per-bucket counts, nothing written, needs-a-look CSV
    2b.3.2: the dry-run verdict: would-change counts per bucket + the needs-a-look file. Nothing written.

2b.4 · Work the buckets

  1. Put the Bucket filter on your quick bar (once): on the members table click Add filter → tick Bucket (under Status & Pipeline) → close. A Bucket pill joins Lifecycles and Has signal.
  2. Filter Bucket → Group A. The dropdown's counts per bucket match the agent's summary — that's your check that the sort really landed. Work Group A first, then B; Do-Not-Target and Unmatched stay out of your day.
    Bucket quick filter open with per-bucket counts matching the run
    2b.4.1–2: the Bucket quick filter: counts match the run's summary; pick Group A and go.
  3. From here it's the normal loop: pick a contact (Flow 2.3 ↗) and write to them (Flow 3 ↗). Re-run the agent when the list gains members or roles change — buckets don't update themselves.

2b.x · Edge cases

  1. Slash shortcuts. Type / in the input box → SHORTCUTS ON THIS PAGE lists the skill behind the buttons: /bucket-health.run. Same run, keyboard route.
    Slash shortcut menu showing /bucket-health.run
    2b.x.1: / opens the page's shortcut list.
  2. The "needs a look" CSV. Contacts the agent wasn't confident about are left unchanged and listed in a small CSV (name + why), attached to the run result. They're yours to file by hand (row ⋮ → or the Update bucket button). Known bug (UAT): the Download button currently points at a localhost address and fails — read the summary counts in the panel instead until it's fixed.
  3. The chat box can't see your data — and can't start the sort either. The free-text box takes natural language, but it is not wired to the list, to past runs, or to the skill. Ask "which contacts did you leave unfiled?" and it says it can't see the previous run. Type "sort this list into buckets, preview first" — the exact job the buttons do — and instead of running it asks you to paste the list (and the reply renders in a broken approval card showing raw fields). Treat the buttons/chips/slash as the only real controls; the chat box is a shell for now.
    Free-text question answered with 'I can't see the previous run or the contact list'
    2b.x.3a: free text is not a data channel…
    Natural-language sort request not routed to the skill; agent asks to paste the list in a malformed approval card
    2b.x.3b: …and not a command channel either: a natural-language "sort this list" doesn't reach the skill — it asks you to paste the list, in a glitched approval card.
  4. Expanded view. The ⤢ control blows the panel up to full screen: conversation on the left, a DETAIL pane on the right that is labelled coming soon — it doesn't fill in yet. Shrink brings back the docked panel.
    Expanded agent panel with DETAIL pane marked coming soon
    2b.x.4: expanded mode; the right pane is a placeholder for now.
  5. Recent chats & background runs. The clock icon lists this list's past chats (the badge counts them) — each run you did is a chat you can reopen and re-read, which is your run history. While a run is going the footer says "Keeps running if you close this": you can minimize the panel or navigate away and come back; Stop run is the brake.
    Recent chats list for this list
    2b.x.5: Recent chats = your run history for this list.
  6. Undoing a sort. The agent records each contact's previous bucket before writing ("so any change can be undone") — but the panel has no undo button yet. If a sort went wrong, fix contacts by hand (select rows → Update bucket) or ask Ops; don't re-run and hope.
  7. Company lists show it too. The same button appears on a company list, offering the same contact-sorting capability — a mismatch for now. Use it on contact lists.
  8. Where the run is recorded. The list's Timeline tab does not log the agent run — the bucket change sits on each contact's record. Your evidence of what a run did is its chat (2b.x.5) and the bucket filter counts (2b.4.2). A small ≈N tokens counter on the run is internal cost info; you can ignore it.

SDRFlow 3 · Send a 1:1 email

Goal: send one personal email to one person. There are 4 ways to open the compose window, each shown step-by-step below. They all end at the same compose window (3.2).

3.1 · Four ways into compose

3.1.1Way 1: From the list row (fastest)
  1. Segments (Lists) → open your list → find the contact's row.
  2. In the Action column (right side) click the ✉ icon → compose opens for that contact, without leaving the list.
    The mail icon circled in the row's Action column
    Way 1: click the ✉ icon in the row's Action column (far right, circled) → compose opens for that contact.
3.1.2Way 2: From the contact's profile
  1. Open the contact (click the name/title) → the profile drawer opens.
  2. In the action bar at the top click Send email → compose opens.
    Profile Send email button
    Way 2: the Send email button in the profile action bar (top-left of the drawer).
3.1.3Way 3: From the Conversations rail (see history first)
  1. Open the contact → on the right edge click the vertical CONVERSATIONS tab to expand the rail.
  2. In the rail click New Email → compose opens, with the existing thread history right there.
    Conversations rail New Email
    Way 3: the Conversations rail: thread list + New Email (and ↩ reply arrows).
3.1.4Way 4: From a signal (the draft is written before you arrive)
What this way is forA signal is a piece of news, a raise, a carve-out, an appointment. Fintalent turns it into a ready-written email about that news, so instead of starting from a blank window you start from a draft that already references what happened. Your job is to pick who it goes to and make it sound like you.
  1. Two ways to reach a signal.
    FromHow
    A contact you are workingContacts → the Signals column on their row → click the signal. Best when you already have a person in mind.
    The news itselfSignals in the left menu → click any row. Best when you are hunting for a reason to reach out.
    The Signals column is off until you switch it onOut of the box the contact list shows 7 of 10 available columns and Signals is not one of them, Title, Account, Country, City, Lifecycle Stage, Last Contact and Action. Add it from the ⚙ Column settings gear at the right of the filter bar, where Signals sits in the list.

    🐛 Do not use the search box in that panel to find it. Typing signal returns an empty list even though the column is there, scroll the list instead. Reproduced every time.

    Simple / Full are two different presets, each with its own column set. Full does not include Signals either (it swaps in Owner, Work Experiences, Additional Emails, Campaign, Marketing Email), so switching preset is not a shortcut to getting the column.

  2. Read the signal before you use it. The detail opens as a panel: on the left the story and its facts, Subcategory, Published, Modified, Country and AI topic, then TOPICS, BIDDERS (with a Sponsor chip where it applies) and TARGETS. On the right, two tabs: Article and Email Template.

    Article is the source story in full, ending in a Link to original source. Read it: the draft on the other tab is only as good as your grasp of what actually happened. The 1 / 20 pager top-right walks you through the other signals without closing the panel.

    Signal detail with Article and Email Template tabs
    3.1.4b: Article, the source story · Email Template, the draft built from it · the 1 / 20 pager · the facts panel: topics, bidders, targets.
  3. Email Template: the draft is already there. Nothing to press to make it appear. Across the top: an English / German switch; on the right three actions:
    ButtonWhat it does
    Regeneratethrows the current draft away and writes another. Use it when the angle is wrong, not to fix a word. You can edit freely once it is in compose.
    Copy emailcopies the text only. For when you want it somewhere other than Fintalent.
    New Emailthe one you want: opens compose with the draft already in it.

    The body keeps {{contact.firstName}} as a variable, not a name, it resolves when the email goes out, which is why it still looks like that in the draft (3.x.1 ↗).

    The Email Template tab of a signal
    3.1.4c: English / German · Regenerate · Copy email · New Email · the draft, already written, with the merge variable intact.
  4. New Email → compose opens carrying the draft. The window arrives with From set to your mailbox, the subject filled in from the signal (Fundraising Plans), the body written out in full and your signature appended. The bottom bar has the usual 📎 attach, Snippets, Template and </> and Send.
    ⚠ To is empty: that is the one thing it cannot guessComing in from the Signals page there is no contact attached, so To arrives blank and you add the person yourself. Coming in from a contact's Signals column the person is already known, but check the field before you send either way: a draft this complete makes it easy to hit Send on an email addressed to nobody, or to the wrong person.

    From here it is the ordinary compose window, finish at 3.2 ↗. Edit it before you send. The draft names the deal correctly but it is written by a machine; a sentence in your own words is what stops it reading like a circular.

    Compose prefilled from a signal
    3.1.4d: From, your mailbox · To, empty · subject, filled · body, filled · Snippets / Template · Send.

Not yet covered: the same trick starting from Job Search, not walked, so nothing is claimed about it here.

Replying to someone who already wrote to you is a separate job, see Flow 4 · Answer replies.

3.2 · Compose & send (same window for all 4 ways)

The whole job here is to send a good email successfully, 4 steps:

  1. Check From / To / Cc. Both address fields are pre-filled: check them before sending:
    • From = your own mailbox, filled in automatically from the email set up on your SDR profile. You can't change it in compose: it's set by your Admin (you only view it → Flow 1 · your account ↗).
    • To = the contact's email, pre-filled from the person you started from. You can change it or add extra recipients, type an email and press Enter (each becomes a chip; the removes it).
    • Cc = copy someone else: click Cc at the right of the To row → a Cc field appears → type their email and press Enter.
    Compose window: From, To, Cc
    3.1: From = your profile email (view-only) · To = the contact's email (editable, add more) · Cc = copy someone in.
  2. Type the Subject yourself in "Add a subject" at the very top. For a new email it starts empty and does not auto-fill, even from a Template (known bug). The Send button blocks an empty subject, so you can't forget.
    Subject box
    3.2: the subject box (red frame): type it yourself.
  3. Write your message in the body (personalize with their role & signal from Flow 2). Want to start from a Template, drop in a Snippet, or attach a file? See Edge cases (3.x).
  4. Proofread → Send. It auto-logs into Conversations, your signature (Flow 1.x.5) is appended automatically, and there is no recall.
  5. See your sent email. The moment you send, your email is logged to the contact's Conversations. There are two ways to open it, both land on the same Conversation:
    • From the list: click the contact's 💬 conversation icon (Last Contact column) → the Conversations drawer opens with your email at the top of the thread, marked "just now", sent by you.
    • From the contact: open the contact and switch to the Conversations tab.
    The left pane lists every message; click yours to read it on the right (From = you, To = the contact, plus your signature).
    Your sent email at the top of the contact's Conversations
    3.5: your just-sent email sits at the top of Conversations ("just now"); the right pane shows it in full.

3.x · Edge cases: write faster with Templates · Snippets · Documents

Three helpers speed up composing. For each: use it in the compose bar, and build your own from its menu page. ✅ your SDR account can create / edit / delete all three.

3.x.1 · Templates: full pre-written emails

  1. Use it in compose: click Template in the compose bar → Insert appends to your draft, Replace overwrites it (incl. the EN 01–05 set). Even from a Template the subject box still needs typing (3.2 bug).
    Template picker
    Use: Template: Insert / Replace + search.
  2. Build your own: Message Templates (left menu) → + Create New → fill Name* (how it shows in compose, e.g. EN 06 - Follow-up), Topic*, Source Type, Subject EN / DE and body EN / DE (two rich-text editors) → Create. Edit/delete via row actions; filter by Topics.
    Template create form
    Create: Name* · Topic* · Subject EN/DE · rich-text body EN/DE.

3.x.2 · Snippets: short reusable blocks

  1. Use it in compose: click Snippets → search → click = inserted at the cursor (EN | DE toggle).
    Snippets picker
    Use: Snippets: search + EN/DE, insert at cursor.
  2. Build your own: Snippets (left menu) → + Create NewPrivate toggle (ON = only you; OFF = shared), Name*, Type and Content English* / Content GermanCreate. Edit/delete by hovering the row.
    Snippet create form
    Create: Private toggle · Name* · Type · Content EN*/DE.

3.x.3 · Documents & files: attachments

  1. Use it in compose: 📎 uploads a file from your computer; 🗂 attaches from the shared Document library (Common, Contact and Campaign filter checkboxes, Published files only).
    Select document
    Use: 🗂 Select Documents: shared files (Published only).
  2. Build the library: Documents (left menu) → + Create New. Fill in Name*, then Type*, which decides the compose tab it lands under: Common, Contact or Campaign. Set Status* to Draft or Published; only a Published document can be attached. Is Star and Is Public are optional. Attach the File*, then Upload FileCreate. Retire with Archived, not delete.
    Document create form
    Create: Name* · Type* · Status* (Draft→Published) · Upload File.

3.x.4 · No email? Get in touch on WhatsApp / LinkedIn instead

Instead of email you can get in touch on another platform, straight from the actions on the platform. Both icons live on the contact's action bar (profile drawer) and in each row's Action column. A coloured icon works; a gray one means that data is missing.

  1. WhatsApp. Open the contact (Flow 2) → the action bar shows Send email, WhatsApp and LinkedIn → click WhatsApp. Green = a usable phone is on file → it opens a WhatsApp chat in a new tab (wa.me/‹number›). Gray = no phone (or the number is too ambiguous to dial) → nothing happens; ask your Admin to add a phone.
    Contact action bar
    3.x.4: the action bar: Send email · WhatsApp · LinkedIn.
  2. LinkedIn. Click LinkedIn (action bar, or the icon in a row's Action column). Blue = a valid LinkedIn URL is on file → it opens that stored URL as-is in a new tab (the app only checks it's a linkedin.com/lnkd.in link, it doesn't rewrite it). Gray = no/invalid URL → nothing happens; ask your Admin to add the URL.
    Row action icons
    3.x.4: the ✉ · WhatsApp · LinkedIn icons in each row's Action column (coloured = usable).

SDRFlow 4 · View replies & answer replies 🔴

Goal (core): go through everyone who replied: read what they wrote, decide, and answer. Start: Inbox. Do this first each day. Filters and the "In Queue" tag are in Edge cases.

4.1 · View & answer a reply

  1. Open the replies: click Inbox in the left menu: one row per contact who wrote back (auto-replies / OOO land here too). Each row has two columns:
    • Account: who it's from: avatar, name, email address, phone, and city / country.
    • Last Email: the most recent message in that thread, shown in three parts:
      • Subject (bold, top line): the email's subject (e.g. "Re: How mid-cap PE firms staff DD in 5 days").
      • Preview (grey, middle): the opening line of the body, so you can triage without opening it.
      • Date (bottom): when it arrived (e.g. "Jul 17, 13:11").
    Inbox
    4.1: Inbox: one row per reply (Account | Last Email).
  2. Spot which messages are replies, and glance at the auto chip. The clearest signal is the direction arrow next to the sender in the thread:
    • ↙ inbound arrow + the contact's name = a reply from the prospect (their words), the message to read and answer.
    • ↗ outbound arrow + your own name = an email you sent (e.g. "Dong SDR ↗").
    Each message also shows an auto chip the system assigns from the content: the prospect's replies get a meaningful one (Out Of Office, Interested, Not Interested and Call Scheduled…), while your own sent emails carry a delivery-status chip (below). Read any chip as a hint only, you can't edit it and it doesn't change the contact's lifecycle by itself; use the arrow (not the chip) to tell a reply from a send.
    ChipOnWhat it meansYour move
    Deliveredyour sendSent & delivered: the prospect hasn't opened it yet.Give it time, then follow up.
    Openyour sendThe prospect opened your email (or it isn't classified yet).Warm signal: worth a follow-up.
    ⚠ Droppedyour sendThe email did NOT go out. It failed to send.Send it again: this one needs your attention.
    Interested Call Scheduledtheir replyThe system read the reply as a positive signal.Read it, then set the contact's Lifecycle.
    Out Of Office Not Interestedtheir replyThe system's quick read of what they wrote.Read it, then set the Lifecycle.
    Reply signals in a conversation (SDR view)
    4.2: a reply = ↙ inbound arrow + a real chip ("Out Of Office"); your send = ↗ outbound arrow + your name; your send's chip = a delivery status (Delivered · Open · ⚠️ Dropped).
    Reply chips in the thread list (Out Of Office, Interested and Not Now)
    4.2 · chips: the coloured reply chips down the thread list: Out Of Office · Interested · Not Now, the system's quick read of each reply. (Your own sent rows instead carry a delivery-status chip, Delivered · Open · ⚠️ Dropped.)
  3. Read the email, and know where it came from. Click any row → the contact opens on Conversations: the thread list is on the left, the selected message on the right. Expand all unfolds the whole exchange. Read what they actually wrote: the chip is only a hint.

    What a "thread" is: one conversation = every email exchanged with that contact under one subject, grouped together. Each item in the left list is a thread; a small count badge (e.g. 2, 3 and 12) shows how many messages it holds. Click to open it, then use the / Expand chevron to unfold every message in order.

    Anatomy of a thread row (left list):
    • Avatar + name: who the latest message is from.
    • Direction arrow: = an email you sent (e.g. "Dong SDR ↗"); the prospect's name with no outbound arrow = their reply.
    • Source icon (small ✉): hover it to see where a sent email came from (see the table). A reply has none.
    • Auto chip: the system's read (Out Of Office, Interested and Not Now …) → see 4.2.
    • Count badge = messages in the thread and Date = when the latest one arrived.
    Where a sent email came from: Campaign and Marketing Email use the same small ✉ badge, so you hover it to tell them apart (the tooltip spells out which). A Direct 1:1 send has no badge at all:
    SourceWhat it meansHow to tell
    DirectYou wrote & sent it yourself, 1:1 (Flow 3).↗ your name, no source icon.
    CampaignSent by an automated campaign sequence the contact is enrolled in.Source icon → tooltip "Campaign: [name]".
    Marketing EmailSent as part of a marketing email send.Source icon → tooltip "Marketing Email: [name]".
    Hover the source icon: tooltip names the email's source
    4.3: hover the ✉ source icon on a sent email → the tooltip names where it came from (here Marketing Email: V1 …). Direct 1:1 sends show no source icon; campaign sends read "Campaign: …".
    Reply vs no replyA thread with an inbound message means the prospect wrote back, answer it (4.4 / 4.5). A thread that's only your own ↗ sends has no reply yet, that's a follow-up candidate (Flow 5 ↗).
    Conversation thread
    4.3 · actions: the three action arrows sit at the top-right of the open message: ① Reply all · ② Reply · ③ Forward.
  4. Decide: reply or not. If it needs an answer, reply (4.5). If it doesn't (e.g. a plain "not interested" or an auto-reply), skip replying and just classify the contact (Flow 3) so it leaves the queue.
  5. Click Reply: the single ↩ arrow at the top-right of the open message (circled below). It answers only the person who wrote, the normal choice for 1:1 outreach. The subject auto-fills as RE: [the original subject] (you can still edit it). (The double-arrow Reply all and the Forward arrow sit right next to it, see Edge cases.)
    Reply button circled
    4.5: the Reply button (single arrow) at the top-right of the message.
  6. What opens: a compose window with the subject already set to RE: …, the sender pre-filled in To, and the original message quoted below. It stays in the same thread.
    Reply compose window
    4.6: Reply clicked: RE: subject, the sender in To, the quoted original.
  7. Write your message → Send.

4.x · Edge cases

  1. Reply all: the double ↩↩ arrow (left of Reply, circled below) answers the sender plus everyone else on the thread's To/Cc. Use it only when several people are genuinely in the conversation (an assistant or colleague was copied). Same compose window as Reply, but the To line is pre-filled with every email address in the thread, so your one reply goes out from your mailbox to all of them at once. Hover the button to preview the full recipient list (e.g. To: oemer.gueven@fintalent.com, dz@dzadvisory.de), and remove anyone you don't want before you send. Like Reply, the subject auto-fills as RE: [original subject].
    Reply all button hovered: tooltip previews every recipient
    4.x.1: hover Reply all (leftmost of the three) → the tooltip previews every recipient (To: tien@fintalent.com, tin@cyberhq.net) before you send.
  2. Forward: the ➡ arrow (right of Reply, circled below) sends this message on to someone new. Same window, but To starts empty for you to type the new recipient; the original message is carried in the body. The subject auto-fills as FW: [original subject].
    Forward button circled
    4.x.2: the Forward button (arrow pointing right), rightmost of the three.
  3. Filters. The Inbox bar carries the full set; + Add filter opens Customize Quick Filters (pin filters, Reset defaults) to build your own quick bar. Use it to slice big queues (only DACH, only CFOs). Full Inbox-filter reference → Flow 8.3 ↗
    FilterWhat it narrows · how to use
    Lifecyclesby contact stage, same ✓/✕ tool as 2.x.1
    Contact Classificationcontact type: Talent · Client · Other (each ✓/✕; Has/No radios + Paste list)
    Ownerwhich teammate owns the contact, pick yourself to see only yours
    Work Experiencecareer facts, the power filter (fields below)
    Countries · Citiesthe contact's location, pick a geography (DACH, UK…)
    + Add filterCustomize Quick Filters, pin/unpin which filters show on the bar (Reset defaults)

    Every dropdown works the same: each value has a ✓ include (keep only these) / ✕ exclude (hide these); Has / No … radios catch records with/without any value; Paste list takes one value per line; several ✓ together = OR.

    Work Experience filters by career, not just the contact record. A toggle at the top, Match any (OR) / Match all (AND), decides whether a person has to meet one of your conditions or every one of them. The conditions on offer: Company type (Sponsor, Corporate, Portfolio), Email validity (Valid, Invalid, Validating, None), Currently / Past, Position (job title), Company (or Has / No linked company, plus + Filter by linked company: city, country, bucket, classification), Company Description, and Company country / city. E.g. Work Experience → Company type = Sponsor took a 27-reply queue to 25 (every remaining row a sponsor firm).

    Inbox filters
    4.x.3: the Work Experience filter inside Inbox; + Add filter pins more.
    Work Experience filter panel
    4.x.3 · panel: the full Work Experience panel: Match any/all · Company type · Email validity · Currently/Past · Position · Company/linked · Description · country/city.
  4. The orange "In Queue" tag. A message tagged In Queue is accepted but not sent yet (waiting in the send queue). It clears to a normal sent message once it goes out. It just means "on its way", don't re-send.
    In Queue tag
    4.x.4: the orange In Queue tag on a message (circled): accepted, waiting in the send queue, not sent yet.
  5. Show / hide columns. The gear ⚙ (top-right, next to Simple / Full) opens Column Settings, tick the columns you want in the Inbox, untick the rest (search the list, or Reset to defaults). Account stays locked on; expand it to choose which fields show inside that cell (Phone, Location, LinkedIn, Lifecycle, Contact type, Lists and Labels…). Handy for trimming a busy Inbox down to just what you triage on.
    Inbox Column Settings picker
    4.x.5: the gear ⚙ Column Settings: tick / untick columns, expand Account to pick its in-cell fields, or Reset to defaults.

4b · Schedule a call (spot it in your replies → book → reply with the link → manage)

Goal (core): a prospect replies asking for a call. Book it, send them the link in the same email thread, and keep the booking tidy afterwards. Fintalent creates the Zoom meeting and its link for you the moment you save.
This flow starts inside Flow 4It is not a separate errand. You are already reading replies (Flow 4 ↗); one of them wants a call. Everything below happens without leaving that conversation.

4b.1 · Spot the call in your replies

  1. Find the ones that asked for a call. There are four ways in, not one. The signal is almost always a reply; the difference is where you go looking for it.
    The call came up in…Where you look
    Any reply, all channels at onceInbox in the left menu → Lifecycles filter → Call Scheduled. The widest net, and the usual starting point.
    A reply to one marketing emailOpen the ME → its own Inbox tab. It has its own filter bar: Last replied · Lifecycles · Contact Classification · Owner · Work Experience, so you can narrow to Call Scheduled within that one send. URL carries &marketingEmailTab=Inbox.
    A reply to one campaignSame shape: open the campaign → its Inbox tab → same filters.
    A direct 1:1 message, or no reply at allContactsLifecycles filter → Call Scheduled, then open the person. Booking proactively? Skip the filter entirely and go straight to the contact, nothing downstream requires a reply to exist.

    The per-ME and per-campaign inboxes are the same screen scoped down. Use them when you are working one send and do not want the rest of your replies in the way; use the global Inbox when you are clearing the day.

    Unresolved: what the ME Inbox Lifecycles filter actually readsThat tab lists Account and Last Email and its search box says “Search contacts by keyword”, which points at it filtering the contact’s lifecycle, same as the global Inbox. There is a view that it filters each reply’s lifecycle instead. Which would make it a different tool entirely. Not settled (the dropdown would not open long enough to capture the request). Do not build a habit on this until somebody confirms it.
  2. Two chips share the name: know which one you are looking at. This trips people up, because both say much the same thing at different levels:
    ChipSits onMeans
    Scheduled Call (dark)a single reply, next to the sender's name in the threadthe system read that message and judged it to be about arranging a call. This is the one that tells you what to do.
    Call Scheduled (green)the contact, in the Lifecycle Stage columnwhere this person sits in the pipeline. This is what the Lifecycles filter searches.

    So you filter on the contact's lifecycle to build the worklist, then read the reply chips inside the thread to find the message that actually asks for something.

    The reply chip can be buriedA thread collapses to its most recent message. A conversation showing No Categories at the top can still hold Scheduled Call replies further down, expand the thread before deciding nothing is there.
    Scheduled Call chips on replies inside a thread
    4b.1.2: two replies the system tagged Scheduled Call, inside a thread whose own chip reads No Categories.
  3. Open it and read what they are asking for. The chip only says “this is about a call”. It does not say which call, or what they want doing about it. Real example:
    What a Scheduled Call reply looks like“Apologies for the short notice — our investment committee moved to Thursday morning, so I need to shift our 10am call. Could we do Thursday 4pm CET instead, or alternatively Friday 9am CET? Same agenda, and please keep Katharina on the invite…”

    Read closely: that one is a reschedule, not a new booking, and it names two options in their timezone. Sort out which you are dealing with before touching the Meetings screen. A reschedule goes through 4b.x.1 ↗, not through 4b.2.

    Clicking the row opens the contact on Conversations, with Meetings as the tab beside it, carrying a count, so you can see whether this person is already booked before you read a word.

    A reply asking to move an existing call
    4b.1.3: the part that decides what you do next: they are moving an existing call, and offering two slots in CET.

4b.2 · Book the call

  1. Two ways in, and they are not identical. The difference is who fills in the participant:
    FromHowParticipant email
    The contact: any row in a list, Contacts, or a ME's People tabthe 📅 icon in the Action column, “View meetings with <name>”+ Create meetingfilled in already, with a picker if they have several addresses
    Meetings in the left menu+ Create meeting, top rightempty and required, you type the address yourself

    Prefer the contact route when you are answering a reply. It carries the right address for you, and it is one click from the conversation you are already in. The Meetings route is for when you have the address in your head and not the contact on screen.

    Typing the address on the Meetings route still resolves the person: the title comes back as “Fintalent call — <their name>”.

    The contact route is two clicks, and the second one catches people out. The calendar icon does not open the booking form. It opens the contact, on its Meetings tab. The form is behind + Create meeting in the top right of that panel:

    1. 📅 on the contact's row → the contact opens on Meetings.
    2. + Create meeting, top right, or the Create meeting link in the middle when the contact has none yet. Both open the same form.
    Where the Create meeting button sits on a contact
    4b.2.1: what the 📅 icon opens: the contact on its Meetings tab · + Create meeting. The button that opens the form.

    The Meetings route is one click. Meetings in the left menu, then + Create meeting in the top right, the same corner as on the contact panel, so the two routes feel alike once you know them.

    The Create meeting button on the Meetings page
    4b.2.1: the other way in: Meetings in the left menu · + Create meeting, which opens the same form.

    One difference from here: Participant email arrives empty, and it only accepts an address that already belongs to a contact, see 4b.x.3 ↗.

    Create meeting opened from the Meetings page
    4b.2.1: the Meetings route: Participant email empty and marked required · Date & time · the title, waiting to be resolved from the address.
  2. Fill the form. Only one field can stop you.
    FieldRequiredWhat to do with it
    Participant emailyesPrefilled on the contact route. If they have several addresses, the picker decides which one gets the invite.
    Date & timeyesThe form says it outright: “the meeting cannot be created without a start time”. Confirm starts disabled, but do not trust it to stay that way: see 4b.x.9 ↗.
    TimezoneprefilledDefaults to yours, not theirs. Read it again if you agreed a time in their local clock, see 4b.x.2 ↗.
    Duration30 minutesChange only if you agreed otherwise.
    Title · NotesoptionalThe title is prefilled and is what shows in their calendar. Notes are for you.
    The Create meeting form from a contact
    4b.2.2: Date & time, the one field that blocks you · the timezone it will be read in, yours, not theirs.
  3. Save, and copy the link before you close the panel. The confirmation shows the meeting, the full Zoom join link, and a Copy join link button. Nothing has been emailed to anyone.

    Closed it too soon? The link is not lost: Copy join link is on the meeting's row for as long as the booking exists (4b.4 ↗).

    Meeting created, with the Zoom join link
    4b.2.3: the link is generated for you; the only thing to do here is Copy join link.

4b.3 · Reply to their email with the details

  1. Answer in the same thread. Go back to the reply that asked for the call and use the ↩ reply arrow on it, exactly as in Flow 4 ↗. Keeping it in-thread is what makes the booking make sense to them.
    The compose window does not carry the linkWhether you reply in the thread or use Send email from the meeting row, the message opens with the participant filled in, your signature, the quoted original, and no join link. Paste it in yourself, or they get a confirmation they cannot act on.
    Replying inside the original thread
    4b.3.1: the subject carries RE: and the original wording, which is what keeps it in their thread · Send, once the link is in.
  2. Write the three things they need: the date and time with the timezone spelled out, the duration, and the join link. Time is the part that goes wrong, “Friday 31 July, 15:00 CET (08:00 UTC)” is worth the extra seconds.

    Doing this often? Build it once as a Snippet with the fixed wording and paste the link into it, 3.x ↗.

    The compose window opened from a meeting
    4b.3.2: the body arrives with your signature and nothing else, paste the link here · then Send.

4b.4 · Manage booked calls

  1. Where to look, depending on what you are asking:
    You want…Go to
    Every call you hostMeetings in the left menu. Tabs All · Upcoming · Completed · Cancelled, plus search and filters by Host · Contact · Activity Date. The Contact filter is the quick way to pull every call with one person without leaving the page.
    Which contacts have a call booked at allContactsAdd filterHas meeting (under OUTREACH, beside Campaign and Marketing Email). Turns the contact list into “everyone with a booking”, the reverse of the Contact filter on the Meetings page.
    One contact's callsthe 📅 icon on their row → the contact opens on its Meetings tab, same four sub-tabs, scoped to them.
    Just the number, without opening anythingthe small badge on that same 📅 icon. No badge means no calls.
    The Meetings tab in a contact you already have openit sits next to Conversations, with its own count.
    To cancelthe meeting's row → Cancel meeting.
    Finding a meeting on the Meetings page
    4b.4.1: how you narrow the list: the four tabs with their counts · search by keyword · filters by Host · Contact · Activity Date.
  2. What each control on a row does. Four of them, and the first two are not the same thing:
    ControlOpensUse when
    Join meetingthe ordinary join link, the same one the contact gotyou want to see what they see, or you are joining a call somebody else hosts. You may land in the waiting room.
    Start as hostthe host start link, carrying a host tokenthis is the one to use on the day. It opens the room with host rights, admitting people, recording, ending the call. The token is short-lived, so start it near the time, not hours before.
    Copy join link: sending or resending the link to the contact.
    Send email · Cancel meetingthe only two row actions. There is no edit.
    If you take one thing from this sectionSend the contact the join link. Open the call yourself with Start as host. Handing out a host link would let whoever holds it run your meeting.
    The four controls on a meeting row
    4b.4.2: the four, left to right: Join meeting · Start as host · Copy join link · , which holds Send email and Cancel meeting.
  3. Cancelling, and what it destroys. ⋮ → Cancel meeting asks first, and the dialog is worth reading: “This removes the Zoom meeting and its join link for everyone.”

    Confirm and the booking leaves Upcoming and lands in Cancelled. It is not deleted, so the history stays. The contact is not told. If a real person was expecting that call, the cancellation email is yours to write.

    The tab counters do not refresh on the spot, they still read the old numbers until you reload the page. Do not take that as the cancellation having failed.

    The cancel meeting confirmation
    4b.4.3: read the warning, then Cancel meeting commits it. Keep meeting backs out.

4b.x · Edge cases

  1. They ask to move it, the whole sequence. This is the common one, and there is no reschedule button, so it goes:
    1. Their reply arrives asking to move or drop the call.
    2. ⋮ → Cancel meeting on the old booking. The old link is dead from that moment.
    3. New time agreed? Create meeting again, and it mints a completely new Zoom meeting. Checked in practice: cancelling meeting …630530 and rebooking produced …971737, a different number and a different password.
    4. Reply in the same thread with the new link, and say plainly that the earlier invitation no longer works. Their calendar still holds the old one.
    5. No new time? Cancel and leave it. The contact keeps the Call Scheduled lifecycle until somebody changes it, so fix the stage by hand or the inbox filter will keep offering them to you.
  2. The form warns you before you start. Your account has no Zoom. Meetings are created on a Zoom account tied to you as the host. If nobody has linked one to your admin record, the form says so in a banner the moment it opens, and Create meeting stays greyed out no matter what you fill in:
    What you will see“Your account has no Zoom user linked yet. Ask an admin to set your Zoom user ID before scheduling meetings.”

    There is nothing to fix on your side, no setting, no retry. Ask an Admin to set your Zoom user ID. Meanwhile, either ask a colleague who is set up to host the call, or send a link from your own Zoom by hand. Know what that costs you, though. A booking made outside Fintalent will not appear on the Meetings page, it will not show on the contact, and it gives you no Start as host button.

    Verified on a real SDR account with no Zoom user (SDR Internal Fintalent). Note the block is a guard, not a failure: the form refuses up front rather than letting you fill everything in and erroring on save.

    Create meeting blocked because the account has no Zoom user
    4b.x.2: the Zoom warning, shown before you type anything · the second guard from 4b.x.3 ↗ · Create meeting, greyed out · the account this was reproduced on.
  3. The address has to belong to a contact. On the Meetings route you type the address yourself, and typing one the system does not recognise produces a second guard:
    What you will see“No matching contact found for this email. A contact is required to create a Zoom meeting.

    So the Meetings route is not a free-text shortcut. It is a search. A booking always hangs off a contact record, which is what makes it show up on their Meetings tab and behind the calendar icon on their row.

    If the person is not a contact yet, create the contact first, then book from their row, the contact route (4b.2 ↗) sidesteps this entirely, because the participant is already resolved. Watch for it when the same person writes from a second address: the address on the thread may not be the one on their record.

  4. Every row shows the time twice, and the second one is the safety net. First line: the start in the meeting's timezone (31 Jul 2026, 15:00 GMT+7). Underneath, in orange, the same moment in GMT+0. Since the create form defaults to your timezone and not the contact's, the GMT+0 line is how you check you booked the hour you actually agreed.
  5. A contact with several addresses. The invitation follows whichever address is selected in Participant email. If the thread you are replying to runs on a different address, change it on the form, afterwards the only fix is cancel and rebook.
  6. The contact has several addresses: which one gets the invite. On the contact route the Participant email field is a picker, not a label: it opens with the address on the contact record already chosen, and the chevron on the right drops down the rest.

    Check it whenever you are answering a thread. A contact can hold a work address, a personal one and a platform sign-up address, and the one the conversation is running on is not always the one the field defaults to. Pick the address they actually wrote from. The invitation goes to the selected one and nowhere else.

    There is no changing it afterwards. Wrong address means cancel and rebook ↗, which mints a new link.

    The participant email picker
    4b.x.6: the picker, opened on a contact who holds two addresses. The first is already chosen; the second is what you came here for.
  7. Two ways to read the list, and the calendar shows what the table hides. Top right of the Meetings page sits a List view / Calendar view toggle. Calendar view adds Month / Week and a Today button, and answers “what does my week look like?” far quicker than the table.

    Cancelled bookings appear struck through rather than hidden, so a slot you gave up is still visible in its place, useful when a contact asks what happened to the call you had agreed.

    The choice sticks: come back to Meetings later and it opens in whichever view you left it in.

    Calendar view of the Meetings page
    4b.x.7: a cancelled booking stays in its slot, struck through, instead of disappearing.
  8. The booking does not email anybody, at any point. Not on create, not on cancel. Every message the contact receives is one you wrote. It is the single most common way a call goes wrong.
  9. 🐛 The Create button can switch on while the start time is still empty. Reproduced every time. Open the form, fill the participant, then touch the Date & time box without finishing it, type the date but not the time, or click in and back out. Create meeting goes from greyed to clickable while the field is still blank, and the red “Required — the meeting cannot be created without a start time” line is still on screen underneath it.

    Click it and the request goes out with nothing in the time field. What comes back is not a friendly message. It is the raw server error:

    BAD_USER_INPUT: Variable “$input” got invalid value null at “input.startTime”; Expected non-nullable type “FintalentDate!” not to be null.

    Nothing is booked: the meeting count does not move. Read the date box, not the button. If the field looks empty, it is empty, whatever the button is doing.

  10. 🐛 “No matching contact found” on someone who is a contact. 4b.x.3 ↗ covers the honest version of this guard. The address genuinely belongs to nobody. This is the other version: the address is on a contact record and the form still refuses it.

    Worked example: dong@cyberhq.net, tin@cyberhq.net and long@cyberhq.net all sit on real contacts and all three came back “No matching contact found for this email” with the button locked. A contact created minutes earlier was matched instantly. Cause not established: it is with the backend.

    What to do meanwhile: stop fighting the Meetings route and book from the contact instead (4b.2 ↗). The 📅 icon on their row carries the address across for you and never asks you to type it, so this guard never fires.

SDRFlow 5 · Follow up on silent prospects

Goal: nudge the people who went quiet, in the right order. Start: your list, sorted by Last Contact: the 💬 icon colors point at who's overdue.
  1. Open your assigned list: left menu → Segments (Lists) → open your list.
    Assigned lists
    5.1: your assigned lists; click one to open it.
  2. View the contacts: the members table. Look at the Last Contact column (far right). Each row has a 💬 icon next to its date, the follow-up radar.
    List members with Last Contact column
    5.2: the members table; the Last Contact column with its 💬 icons is on the right.
  3. Pick who's overdue: click the Last Contact header to sort (oldest first), then read the 💬 aging icon next to each date. Its colour tells you how long since you last touched that contact, so you work the coldest first. The little red dot is a "due" flag that clears the moment you make contact.
    💬 iconHow oldWhat it meansYour move
    grey Last Contact icon grey≲ 2 weeksFresh, you contacted them recently.Leave it for now.
    💬 yellow~2–4 weeksComing due: the gap is opening up.Line it up for a nudge.
    red Last Contact icon with due dot red + dot≳ 1 monthOverdue, waited the longest; the red dot is a "due" flag on the icon.Follow up first; the dot clears once you make contact.
    Aging icons
    5.3: 💬 icons shading gray → yellow → red as Last Contact ages.
  4. Read the context. Click the 💬 icon on that row → a conversation-first drawer opens with the last thread on screen. Read the exchange to confirm they haven't replied yet (that's what "follow up" means) and to pick your angle.
    Conversation-first drawer
    5.4: 💬 clicked: the last thread on screen (New Email · ↩ reply · 1/N pager).
  5. Nudge them. Then either ↩ reply to the last email in that thread (keeps the context), or click New Email for a fresh angle. Sending resets Last Contact → the row drops down and the 💬 turns gray. Use the 1/N pager (top right) to step to the next contact without going back to the list.
  6. 2–3 unanswered nudges → label Not Now / Not Interested (Flow 3) so they leave your rotation.
💬 stateMeaningDo
Gray, no dotRecent (~under 2 weeks)Nothing yet
Yellow + dot~2–4 weeks silencePlan the nudge
Red + dot~A month+, overdueClick & follow up now

SDRFlow 6 · Manage a campaign

Goal: reach the same people several times over several days instead of once. You write each email, say how long to wait before the next one, and the campaign sends them in order and keeps a record of what every contact did. A Marketing Email (Flow 7) is a single send. A campaign is a sequence: first email, wait, second email, wait, third.

6.1 · Create a campaign (folder first)

Campaigns live inside folders. So, unlike a Marketing Email, which you create directly, you create a folder first, open it, and only then create the campaign.

  1. Open Campaigns. Left menu → Campaigns. The list of campaigns opens, with the folder rail on the right.
  2. Create a folder. Click + Create Folder (top-right) → fill Owner (usually you), Name (required) and DescriptionCreate.
    Create Folder form
    6.1.2: the Create Folder form: ① Owner (here: you) · ② Name (required) · ③ Description · ④ Create.
  3. Open your folder. You land inside the new folder: it's highlighted in the right-hand folder rail. (Come back to it any time by clicking it in the rail; rename it later via its menu, 6.x.3 ↗.)
    Inside a folder, Create Campaign appears
    6.1.3: inside your folder: the folder is selected in the rail · the + Create Campaign button appears.
  4. Create the campaign. Click the + Create Campaign button, top right. It only appears once you are inside a folder, which is why the folder came first.
  5. Name it and pick the timezone. A single form opens with three things on it and nothing else: the name (it arrives pre-filled with New Campaign, so type over it), the timezone the sending clock runs on, and Create. The next to the name just puts your cursor in the field.
    Create campaign form: name, timezone, Create
    6.1.5: the whole form: name (pre-filled New Campaign) · timezone · ③ Create.

    Neither one is locked in. You can rename the campaign later from its header (6.x.15 ↗).

  6. Create, and you land in the campaign. There is no second wizard page and nothing to skip. Create drops you straight into the new campaign, on the Steps tab, with the tab bar reading Steps · People · Data Health · Timeline. The campaign is a Draft with no steps and nobody in it, so the two jobs waiting for you are 6.2 · the sequence and 6.4 · the people.

    Two tabs are missing at this point and that is normal. Inbox and Preview only appear once the campaign has a step and some people in it.

6.2 · Build the sequence (steps)

A campaign is a list of steps. Each step is one email with a timing (send right away, or wait N days) and one or more variants (A/B). The step editor is identical to a Marketing Email step.

  1. Open the Steps tab and click + Create new step. A new campaign lands here with nothing in it, so the button sits in the middle of the empty pane rather than in a corner.
    Empty Steps tab with the Create new step button
    6.2.1: the Steps tab on a campaign with no steps yet, and the + Create new step button.
  2. Write the step. Every field of the editor, and what goes in it:
    #Field / controlWhat it does · how to write it
    1SubjectThe email's subject line. Type it plainly, and you can personalize it with variables via the { } icon (2).
    2{ }Inserts a variable (merge field) into the Subject, e.g. {{contact.companyName}}. Details: 6.x.8 ↗.
    3CCCopy someone on every send of this step, click CC, an Add cc field opens.
    4Language (EN / DE)The flags switch between the English and German version of this step, write one per language you send in.
    5Select an email templateYes, templates work here, prefill the whole step from a saved template instead of writing from scratch. Details: 6.x.7 ↗.
    6Formatting toolbarRich text: H1/H2, font & size, B/I/U/S, quote, lists, indent, colour, link, clear-format.
    7BodyThe message itself. Variables (9) and Snippets (10) both work in the body; write short, personal, one clear ask.
    8Force UpdateOnly matters when editing a step later, tick it to push your edit onto previews already generated. Details: 6.x.12 ↗.
    9VariablesYes: insert merge fields ({{contact.firstName}}…) that fill in per contact. Details: 6.x.8 ↗.
    10SnippetsYes: drop in a saved reusable block (enables once your cursor is in the body). Details: 6.x.9 ↗.
    11Create / SaveCreate saves a new step; re-open a step later and the button reads Save.
    12Upload filesAttach files to the email; each attachment shows with an to remove. Details: 6.x.10 ↗.
    13SignatureAppends your email signature (set up in Flow 1.x.5).
    Campaign step editor: every field numbered
    6.2.2: the step editor with every field numbered 1–13 (same numbers as the table).
  3. The step lists as Step 1 - Day 1 with its timing ("Right away") and variant A.
    Step 1 in the sequence
    6.2.3: Step 1 · Day 1 · Right away · variant A.

    The header carries a running day count, not just the delay. Right away is Day 1; a step set to Wait for 10 days after a Day 2 step reads Step 3 - Day 12. Read the last step’s day to see how long the whole sequence runs.

    The Steps badge counts every step in every branch. Once the campaign has sidesteps the badge exceeds the main sequence, 2 main steps plus 4 branches reads Steps 8. That is correct, not a miscount (6.x.2 ↗).

  4. Timing. Click the timing pill to set Deliver after a delay (Days). 0 = right away; N = this step goes out N days after the previous one, that's the "Day X" label on the step.
    Deliver after a delay
    6.2.4: Deliver after a delay: Days = N (0 = Right away).
  5. Add follow-ups with + Create new step. A follow-up usually waits a day or two, for example Step 2 - Day 2 and Wait for 1 day. Build the whole sequence this way.
    Two-step sequence
    6.2.5: a 2-step sequence: Step 1 Right away, Step 2 Wait 1 day.

    There is a second button beside it, and it does something different. + Create new step adds the next email everyone gets. + Create sidestep adds a branch that only fires when a contact’s reply lands in a category you choose, an automatic answer to an Out Of Office being the usual case. Building one is an edge case rather than part of the main sequence, so it lives at 6.x.2 · Sidestep ↗.

Where to click once the sequence exists, everything lives on the Steps tab:

Where to click to build the sequence
6.2: building the sequence: ① + Create new step (next email) · ② + Create sidestep (conditional) · timing pill · ④ + Add variant (A/B) · click a variant row to edit it · right icons: duplicate / delete.

Two campaign-only extras. A/B variants put two versions of the same step side by side and send each contact one of them at random (6.x.1 ↗). Sidesteps are a branch that fires on a condition rather than in sequence (6.x.2 ↗).

6.3 · View campaigns (the list)

Left menu → Campaigns lists every campaign, grouped into folders (right rail). The top tabs filter by status: All, Scheduled, Draft, Running, Finished, Paused and Archive. Each row shows the campaign’s name and assignees, then its numbers: Total Steps, People, Open / Reply / Bounce rates, Progress, Delivered and Last run.

Campaigns list
6.3: the status tabs, which filter the list · the folder rail, which groups the campaigns. Everything between them is one row per campaign.

The numbers on the row are the campaign's report card, and you can read the whole thing without opening it. Every figure has a tooltip, so hover anything you are unsure of.

#ColumnWhat it is telling you
1Total Stepshow many emails the sequence holds. It counts every branch too, so a campaign with sidesteps reads higher than the main sequence (6.x.2 ↗).
2Peoplehow many contacts are in the campaign right now.
3Open Rateopens measured against what was actually sent, not against the whole list. The bracketed figure is the raw count.
4Reply Ratethe one that matters. A reply is a person, not a statistic, so go and read it.
5Bounce / Dropped Rateaddresses that refused it. Treat it as a to-do list rather than a number (6.8.7 ↗).
6Progresshow far through the sequence the campaign is. The bar fills as steps go out, and a green tick means every queued email has left.
7Deliveredhow many emails have actually gone out.
8Last runwhen it last sent anything. A dash means it has never run.
The metric columns on a campaign row
6.3: one row read across, DACH PE · DD Capacity Q3: 2 steps · 0 people · Open 50% (1) · Reply 100% (2) · Bounce 0% (0) · Progress full, with the green tick · Delivered 2 · Last run Jul 29. The rows above it have never run, which is why their bars are empty and their Last run is a dash.

A blank rate and 0% are not the same thing. Blank means nothing was sent yet. 0% means it went out and nobody opened or replied, which is a result about the writing, not the sending.

6.4 · Add people to the campaign

  1. Open the campaign and move to the People tab. The tabs run along the top of the campaign, and People is the third one, between Steps and Preview. The number beside it is how many people are in the campaign at the moment, so on a campaign you have just created it reads 0.

    Once you are on that tab, the button you want is + Add contacts, over on the right-hand side, level with the search box. It is the only purple button on the screen.

    Where the People tab and the Add contacts button are
    6.4.1: the People tab in the tab bar, and + Add contacts on the right.
  2. You land on the Contacts page, and it arrives already filtered. The button does not open a picker inside the campaign. It moves you to Contacts, which is every contact across the lists you have been assigned, and on the way it switches on one filter chip for you: Campaign : No.

    That chip is the whole point of the screen. Everything you can see is somebody who is not in a campaign yet, because a contact belongs to one campaign at a time. The count at the top, next to the word Contacts, is counting only those people.

    Do not clear that chipClearing it, or clicking Clear all, puts back the people who cannot be added anyway. All you get is a longer list and a better chance of picking the wrong person.

    Add filters on top of it instead. That is how you narrow 229 contacts down to the group you actually want in this campaign: country, seniority, work experience, whatever the campaign is aimed at. The chip row stacks, so Campaign : No stays on while you filter. See Flow 8 · Using filters ↗.

    Filters you set on your last visit to Contacts are still on. Read the whole chip row before you trust the count.

    Contacts page with the Campaign : No filter chip
    6.4.2: the Campaign : No chip is already on when you arrive, and the count at the top reflects it.
  3. Find your people and tick them. Same tools as Flow 2 · Find a target contact ↗. Tick the rows, or tick the header box to take the whole page, then click Add to campaign on the action bar.
    Contacts with rows ticked and the Add to campaign button
    6.4.3: ticking anything brings up the action bar, with Add to campaign on it. Select all N matching beside the count reaches past the page you can see.
  4. The drawer: pick the campaign, then pick who actually gets mailed. It opens headed Add N contacts to campaign and splits in two.

    Left: Choose campaign. Your campaigns, each showing owner, status and how many people it already holds, with a search box and a Status filter. There is an 👁 on each row to look at one before you commit. Tick exactly one.

    Right: the people, sorted into four groups. A contact can hold several addresses and a campaign sends to one address per contact, so the drawer sorts them by how good that address is:

    GroupWhat is in itTicked for you?
    Valida verified address. These are the ones you want.Yes
    Missing + Invalidno address at all, or one that failed validation.No
    In campaignalready in another campaign, so they cannot join this one.No
    Platform Signuponly the address they signed up to the platform with.No

    The line along the bottom spells out what it left alone, for example Not ticked by default: 5 Missing + Invalid · 15 Platform Signup. Nothing stops you ticking those groups by hand; just know you are choosing to mail an address the system is not confident about.

    Add to campaign drawer with four groups
    6.4.4: Choose campaign, tick one · the four groups · the tick adds them, the dot picks which address · what was left unticked · ⑤ Add to campaign.
    In campaign is usually empty, and that is the filter's doingBecause step 6.4.2 already filtered out everyone who is in a campaign, this group normally reads 0. It fills up when you clear that chip, or when you reach the contact list some other way. Either way the rule is the same: they cannot be added. To move one of them, use Move to other campaign from their current campaign instead (6.x.17 ↗).
  5. Click Add to campaign. They appear on the People tab and the campaign's People count on the list goes up to match.
    The button stays greyed out until both halves are answeredYou need a campaign ticked on the left and at least one person ticked on the right. Miss either and the button simply does not respond, with no message telling you which half is missing. If it looks dead, check the left panel first: that is the half people forget.

The People tab carries three filters the contact list does not: Done (finished the whole sequence), Skipped, and Personalize (whose copy you have rewritten by hand, 6.5.4 ↗).

Campaign People tab
6.4: the People tab · the three filters only a campaign has: Done, Skipped, Personalize.

6.4b · Remove people from the campaign

  1. Go to the People tab and tick the people you want out. As soon as anything is ticked, an action bar appears above the table. It shows what you have selected on the left, and what you can do with them on the right. The one you want is Remove from campaign.
    People tab with Remove from campaign on the action bar
    6.4.6: tick the rows on the People tab, then Remove from campaign.
  2. Click it, and they are out straight away. Nothing asks you to confirm and no message appears afterwards. The only sign it worked is the count: Showing 15 of 15 becomes Showing 12 of 12, and the number on the People tab follows.
    One click, no undoIt removes everyone ticked, and there is no way back except adding them again. Read the count on the action bar before you click, above all after using Select all N matching, which reaches past the rows you can see.

6.5 · Preview, personalize & review

Before the campaign runs, review what every contact will actually get on the Preview tab, the campaign's review gate, exactly like a Marketing Email's.

If the campaign was created by an Admin, the step is not drawn herePreview shows the contact and no step block at all, so there is nothing to read, personalize or mark done. It is not an empty campaign, it is the tab. Logged as CMP-18 ↗, still open.
First, clear out anyone you are not allowed to mailSome rows carry a 🚫 blocked icon beside the name. Hover it and it says so plainly: “This contact is marked as ‘Opted Out’. Sending is blocked as they requested no more messages.”
The blocked icon and its tooltip on the Preview tab
6.5: the message you get on hover · the row it belongs to, with the 🚫 in front of the name. The two rows under it are normal.

Three lifecycle stages do this, and they are the same three that stop a campaign anywhere else: Opted Out, Not Interested and Do Not Contact (6.9 ↗). These people asked not to hear from you.

Take them off the campaign before you review anything else, so you are not reading emails that will never be sent:

  1. Open the Lifecycles filter and tick Opted Out, Not Interested and Do Not Contact. The chip reads Lifecycles : Opted Out +2.
  2. Tick All to take everyone the filter found.
  3. Bulk Actions → Remove all from campaign (6.5.5 ↗).
  4. Clear the filter before you carry on, or you will review a list of three people and think you are finished.
The Lifecycles filter set to the three blocking stages
6.5: the chip after ticking three values · Opted Out, Do Not Contact and Not Interested ticked together · what is left, Showing 1 of 1, which is the set to remove.

Removing them is tidier than leaving them: the campaign will not mail them either way, but a blocked contact still counts in People, still appears in your review, and still makes the numbers on the campaign row harder to read.

Everything here has a keyboard shortcutReviewing a long list is faster from the keyboard than from the mouse. Click the keyboard icon at the top of the contact list, beside the sort controls, and the full list of shortcuts opens.

It covers moving between contacts, expanding a step, saving, and the three row actions from 6.x.20 ↗. Some of them are a single letter and they act at once, including the one that removes a contact from the campaign, so read the list before you start typing in this tab.

  1. Open the Preview tab → click a contact on the left. The right pane loads that contact's header (name, email, title and company, plus a row of icons that open them elsewhere, 6.x.21 ↗) with every step of the sequence below it as collapsible rows, Step 1 - Day 1, Step 2 - Day 2, …

    Branches show up here too, under their own heading. A campaign with a sidestep reads Main Step first and then Sidestep: ‹condition›, so what you are looking at is everything that could reach this person, not only what they are certain to get (6.x.2 ↗).

    Campaign Preview tab, pick a contact
    6.5.1: the Preview tab with a contact picked on the left. The right pane carries their header, then Main Step with its two steps, then Sidestep: Out Of Office.
  2. Expand a step and read it. Each row opens into the exact email that contact will get, merge fields resolved (“Hi Long Nguyen,”, their real name, title, company). Read every step the way the prospect will.
    Expanded step: resolved email
    6.5.2: an expanded step: the resolved email in a full editor.
  3. Not every contact should get every step. Skip the ones that should not. Each step row carries a Skip button, and skipping is per step and per contact: that one person will not receive that one email, while everybody else still does.

    What that looks like when the campaign runs. Say the sequence has two steps, A and B:

    contact X    step A  (skipped)     step B
    contact Y    step A               step B
    
    when step A goes out  →  only Y receives it
    when step B goes out  →  X and Y both receive it

    X is still in the campaign and still on the People tab. They are not removed, not stopped, and not unsubscribed. They simply sit out that one email and rejoin at the next.

    The buttons and what each one reaches, including Skip all main step, how to undo it with Rollback Skip, and the order that costs you the bulk button: 6.x.13 · Skip ↗.

  4. Personalize a step for this one contact if it needs it. The expanded step is a full editor, so type your personal line straight in, then click Save (top-right). A ✨ Personalized icon appears on their row and the variant is tagged ✨ Personalized; everyone else keeps the standard copy. (Editing works while the campaign is Draft / Scheduled / Running, a Finished campaign's preview is read-only.)
    Typing a personal line, then Save
    6.5.4: the line typed just for this contact, highlighted here so you can see it against the standard copy · Save, which only appears once you have changed something.
    Personalized icon on the row and variant
    6.5.4: after Save: the contact's row gets the icon and the variant is tagged ✨ Personalized.
  5. Mark the contacts done. Once you have been through them, tick All at the top of the contact list. A Bulk Actions button appears beside the count. Open it and choose Mark all as Done.
    Bulk Actions menu on the Preview tab
    6.5.5: how many you have selected · Bulk Actions · the five things it can do.

    Every row then carries a (Done) tag, and the green tick on the row is replaced by an undo arrow. That is the whole signal: the Done filter at the top now splits the list into reviewed and not.

    Rows carrying the Done tag
    6.5.5: after Mark all as Done: the (Done) tag · the undo arrow that replaced the tick.

    What Done means: these contacts have been read and their emails are ready to go out. It is a record of your review, not an instruction to the campaign. Marking someone Done does not send anything, hold anything back, or change a single word they receive. What it buys you is knowing where you stopped on a list you cannot get through in one sitting.

    One at a time works too, and each row has its own tick, undo and a bin that removes just that person. Worth it for one or two, not for a list: 6.x.20 ↗.

    Menu itemWhen you reach for it
    Mark all as Doneyou have read everyone’s steps and they are ready to go out. This is the one you use at the end of a review pass.
    Mark all as Undonesomething changed after you reviewed, so the review no longer counts. Puts them back to unreviewed and clears the tags.
    Mark all as Unpersonalizedyou rewrote the step, so the personal lines were written against an email that no longer exists. Drops the per-contact copy and puts everyone back on the standard step (6.x.18 ↗).
    Bulk update stepsthe email needs a change and you do not want to open two hundred contacts to make it. Edit it once, push it to all of them (6.x.19 ↗).
    Remove all from campaignthey should not be in this campaign at all. They stop receiving anything, and each of them is free to join another campaign.
    None of the five asks you to confirmThe single-row tick pops a dialog. The bulk versions do not. Click the menu item and it has already happened to everyone selected, including Remove all from campaign, which sits one row below Bulk update steps in the same menu. Read the count on the left before you open the menu.

    Your selection is cleared after each action, so a second bulk action means ticking All again. Slightly annoying, and the only thing standing between two clicks and the wrong list.

6.6 · Hand it over to be run

You do not run the campaign. Admin / Ops does. Your part finishes the moment the review is finished, and the handover is four steps:

  1. Finish the review. Every contact you intend to mail has been read (6.5 ↗), anybody who should sit out a step has been skipped (6.5.3 ↗).
  2. Mark those contacts done. This is the signal, not a formality. Done is how Admin knows which contacts you have actually looked at, and the run dialog counts the ones you have not (6.5.5 ↗).
  3. Tell Admin / Ops it is ready. Nothing notifies them on its own. A campaign sitting in Draft with everything marked done looks exactly like one nobody has touched.
  4. They review what they want to review, then run it. The campaign moves from Draft to Active and the first step starts going out. What happens on their side: A4.6 ↗.
Anything left unmarked becomes a questionAdmin sees N contact are not marked as done on the run dialog and has to decide whether to send anyway or come back to you. Leave a contact unmarked only when you mean to, and say why when you hand over.

After it runs, your job becomes watching: the queue (6.7 ↗) and the replies (6.8 ↗).

6.7 · The Email Queue

Running the campaign creates the tab. It does not fill it. Once Admin has run it (A4.6 ↗) an Email Queues tab appears on the campaign, and the first thing you notice is that it is empty. Nothing is wrong. A step only enters the queue when somebody pushes it there.

  1. Admin / Ops opens the Steps tab and presses Force Send on a step. Every step carries its own Force Send button, main steps and sidesteps alike, so this is a decision per step rather than for the campaign as a whole.
    Force Send on each step of the Steps tab
    6.7.1: the Steps tab · and a Force Send on each main step · the sidestep has its own. Nothing here pushes the whole campaign at once.
  2. Read the dialog. Force Send Campaign Flow repeats the Subject and the opening of the Content, then states the size of the send: The step will be sent immediately to 12 Peoples. Exit changes nothing, Yes queues it.
    The Force Send Campaign Flow dialog
    6.7.2: the headcount, which is not the send count · Yes. Exit is safe: opening this dialog to read the number sends nothing.
  3. Now the queue has rows. Four tabs across the top:
    TabWhat is in it
    Alleverything, whatever happened to it.
    In Queuewritten, waiting, not sent yet.
    Deliveredgone out.
    Cancelpulled back before sending, so nobody received it (6.x.22 ↗).

    Each row shows the Subject, the Content, the Status, Attachments, the from and to addresses, and three dates: Created, Expected Run and Expected Delivery.

    The Email Queues tab
    6.7.3: the Email Queues tab, which appears once the campaign runs · the four tabs, nine of them still In Queue · the same status on every row · Created at 11:09 against Expected Run at 07:00, the pair that shows the send is scheduled on a different clock.
12 people does not mean 12 emailsThe dialog counts everybody on the campaign. The queue does not. In a worked example the campaign held 12 people, Force Send announced 12 Peoples, and the queue came out at 9.

To work out the real number, start from the People count and take away:

people on the campaign          12
  minus contacts not marked done
  minus contacts you skipped for THIS step
                                 ---
  emails actually queued           9

The count in the dialog is a headcount, not a send count. If the two differ and you cannot say why, the answer is on the Preview tab: the Done and Skipped filters (6.5.3 ↗).

When do the queued emails actually go?At the start of the day, in the timezone the campaign was created with. Not when you pressed Force Send. That is why the Expected Run column can read an earlier hour than Created: the send is scheduled against a different clock from the one you are looking at.

So the timezone you pick when creating a campaign decides what time of day your prospects are mailed (6.1.5 ↗). Get it wrong and a DACH campaign lands overnight. Check it before the first Force Send, not after.

In a hurry? A single queued email can be pushed out without waiting for the daily release: 6.x.23 ↗.

Heads-up: as with Marketing Emails, the Email Queues list can be slow or show 0 or Couldn't load even when the campaign has already delivered. If it looks empty, refresh, or confirm from the campaign Inbox (6.8) and the contact's Conversations.

6.8 · Verify: Conversations & the campaign Inbox

Once the queue starts delivering, the campaign stops being something you build and becomes something you read. From here on the work is what came back: the numbers on the list, the replies in the Inbox, and what you do with each one.

  1. Read the numbers on the campaign row. The Campaigns list carries the result of the send in a single line, and it is the fastest way to see where a campaign stands. Each column is explained on its own in 6.3 ↗; what matters here is reading them together.
    The metric columns on a campaign that has run
    6.8.1: the metric columns · the same row on a campaign that has finished a step: 100% (2) opened, 100% (2) replied, bounce and unsubscribe at 0%, the progress bar full with a green tick, Delivered 2 · Last run, here 32 minutes ago.
    ReadTo answer
    Progress + Deliveredhow much of the sequence has actually gone out. The bar fills per step, not per person.
    Open Ratewhether the subject line earned the click. The weakest of the three, and the easiest to over-read.
    Reply Ratethe number the campaign is judged on.
    Bounce / Dropped Ratea to-do list, not a score (6.8.7 ↗).
    Unsubscribe / Spamthe one that should stay at 0. Anything else is a content problem to raise before the next send.
    Last runwhen a step last went out. Steps remaining plus an old Last run means the campaign has stalled.

    A blank rate is not a bad rate, it means nothing has been sent yet. 0% on a campaign that has delivered is a real result, and a different conversation.

  2. Open the Inbox tab. Nothing lands here until mail is actually Delivered (6.7 ↗). Once it is, every send and every reply for this campaign sits on Inbox, and that is where you work from now on. Down the left is the category rail: Prospect, Interested, Scheduled Call, Not Now, Not Interested, Out Of Office, Do Not Contact, Opted Out, No Categories, Bounced / Dropped, Open, Click. On the right, one row per contact with the last email on it.
    The campaign Inbox tab
    6.8.2: the Inbox tab, with the count of what is waiting · the category rail · one row per contact, newest email first.

    It is the same inbox as Flow 4 ↗, narrowed to this campaign. New replies also raise the 🔔 bell (6.x.14 ↗).

  3. Read the reply, and the chip the system put on it. When a contact answers, the reply is categorised for you and carries a chip. The chip then travels with the conversation: on the message itself, on the row in the list, and on the rail, where a count appears beside the category.
    A reply with its automatic chip
    6.8.3: the reply in the conversation list, chipped Interested · the same chip on the message itself · your own sends carry a status chip instead: Open, In Queue.
    The rail showing a count beside Interested
    6.8.3: the tab count · the same reply counted on the rail, under Interested. Categories with nothing in them stay blank.

    The chip is a reading of the reply, not a decision. Check it against what the person actually wrote before you act on it, because wording that scans as interest is sometimes a polite no. Setting the label yourself, and which labels stop the sending, is 6.9 ↗.

  4. Click a category to filter the list. Clicking a category on the rail puts a green on it, drops a Lifecycles : Interested chip into the filter row, and narrows the list to that group. It is the Lifecycles filter, reached in one click.
    Filtering the Inbox by clicking a category
    6.8.4: Interested clicked, now ticked · the chip it added to the filter row · the list narrows to Showing 1 of 1.

    Clicking the same category a second time flips it to exclude, which hides that group instead of showing it (6.x.24 ↗). Clear all puts the list back.

    Three of these categories return nothing todayOpen, Click and Bounced / Dropped come back empty however much traffic the campaign has, because the rail sends them through the Lifecycles filter and none of the three is a lifecycle. Logged as CMP-13 ↗, still open. Last replied also misses the day you filter on (CMP-14 ↗).
  5. Answer it, or leave it alone. What the chip says decides which:
    ChipWhat to do
    Interested · Scheduled Callanswer now, this is the point of the sequence. Book the call in Flow 4b ↗.
    Out Of Office · Not Nowleave it. The later steps will reach them again, and a sidestep can handle the out-of-office case on its own (6.x.2 ↗).
    Email Updated · Left The Companythe person is reachable, the address is not. Get the contact corrected before anything else goes out.
    Not Interested · Opted Out · Do Not Contactdo not answer. Take them off the campaign instead (6.8.6 ↗).
    To answer, click the arrow on the message. The composer opens over the thread with From, To and the Re: subject already filled in, so you are only writing the body.
    Replying from inside the campaign Inbox
    6.8.5: the reply arrow on the message · the composer, prefilled, with the thread quoted underneath.

    Writing the reply itself, tone and what to send, is Flow 4 · View & answer replies ↗. New Email at the top of the list starts a fresh thread rather than a reply.

  6. Chips that end the conversation: Not Interested, Opted Out, Do Not Contact. A campaign is not one email. Later steps keep going to anyone still on it, so a person who has said no and stayed on the campaign gets chased again by the next step. Take them off.
    There is no action for this on the Inbox yetYou can see the group here, but you cannot act on it here. Until that is built, remove them from the Preview tab, where the Lifecycles filter and Bulk Actions → Remove all from campaign both exist (6.5 ↗), or one at a time from People (6.4b ↗).

    Removing them from the campaign does not remove the label. The lifecycle stays on the contact, which is what stops the next campaign from picking them up.

  7. Bounced / Dropped: the ones that never arrived. These are not replies. Nobody read anything. The send failed, and the usual reasons are a wrong or dead address, a full or closed mailbox, a receiving server that refused it, or something going wrong mid-send. Click Bounced / Dropped on the rail and the list is exactly the failed sends.
    Sending them again is not built yetThere is no retry on this screen. Until there is: get the address corrected on the contact, flag it to Admin / Ops if you cannot edit it yourself, and reach the person another way, a 1:1 email (Flow 3) ↗ to an address that works, or WhatsApp / LinkedIn (3.x.4) ↗. Once the address is right, Admin / Ops can put them into the next run.

    Read the Bounce / Dropped Rate on the campaign row the same way: it is a count of people to chase, not a score to feel bad about.

6.9 · Label the replies, and know which labels stop the sending

  1. Two different labels, and only one of them stops anything. This trips people up constantly:
    LabelSits onSet by
    Category (the chip on a reply)a single reply, and on the recipient inside this campaignthe system reads the message and guesses; you correct it by hand
    Lifecycle Stagethe contact, across everythingalways you (Flow 4 ↗)
  2. The twelve categories, and the three that matter. Read straight off the API: a recipient can hold any of 12, an individual reply any of 11 (the same list minus Unknown).
    GroupCategoriesEffect on sending
    Stops the sendingOpted Out · Not Interested · Do Not ContactNo further mail goes to this person. Three labels, that is the whole list.
    Reporting onlyCall Scheduled · Interested · Not Now · Out Of Office · Left The Company · Email Updated · No Categories · Not Responded · UnknownSending continues. They describe what happened; they do not hold anything back.

    Where this comes from: the twelve / eleven values are read straight off the API. The three that block are named in the code as a constant, MarketingEmailRecipientBlocklistEnforcementOptions = [OptedOut, NotInterested, DoNotContact], and the same three appear in Fintalent's own feature documentation. Not proven by a send test of my own; proving it would mean mailing a real contact.

    The three look exactly like the other nineNothing in the interface marks them out, same chip, same colour, same list. So the label that quietly keeps mailing someone who asked you to stop is one row away from the one that stops it. Before you label a negative reply, decide which of the two you mean: “not now, try later” is Not Now and keeps them in rotation; “stop emailing me” is Opted Out or Do Not Contact and takes them out.
  3. Out Of Office is not a rejection. It is the most common auto-reply and it is reporting-only, so the person stays in the run. Which is right, they are just away. Do not upgrade it to Not Interested to clear it off your screen; that is a different meaning and it is permanent.
  4. Nothing reminds you. Categorising is entirely manual: no prompt, no badge, and no count of how many replies are still unlabelled. If you do not work the inbox deliberately, an opt-out can sit there unread while the next send goes out.

    Practical habit: after every send, open the Inbox and clear it to zero before you do anything else. Filter the category rail to No Categories to find what nobody has touched.

    There is also no bulk categorise: thirty auto-replies is thirty separate actions. Sort by the auto chip first so the identical ones are together.

  5. Where you do it. Open the Inbox tab of the campaign, pick the category rail on the left to filter, click a reply, set its category. The same reply also appears in your own Inbox (Flow 4), labelling in either place is the same record.

6.10 · Finish a campaign

  1. Finishing is an Admin action. Two things bring a campaign to it: it has run to the end of its sequence, or somebody has asked for it to stop. Either way an SDR does not close a campaign, they hand it back the way they handed it over to be run (6.6 ↗).

    Only a campaign that is Active or Paused can be finished. A Draft has never run, so there is nothing to close.

    What an SDR sees insteadSigned in as an SDR the button is not there at all, and the status switch beside it is drawn but disabled, so it reads the status back to you without letting you change it. Nothing on screen explains why, so the honest reading of a greyed switch is this campaign is not mine to start or stop, which is correct.

    The avatar in the campaign header is the owner, not you. It carries the owner's name and address whoever is looking, which is worth knowing before you conclude from a screenshot that an SDR can press something.

  2. Open the campaign and click Mark Campaign as Complete. The button sits in the header of the campaign, top right, beside the Active switch. It is the only control that ends a campaign; nothing in the list row does it.
    Mark Campaign as Complete in the campaign header
    6.10.2, an Admin session: the status switch, live · Mark Campaign as Complete, beside it. The name in the header is the campaign's owner, not the person signed in.

    The campaign moves to Finished and stops sending. Queued mail that has not left is not a leftover to deal with later, so check the queue is empty first (6.7 ↗) rather than finishing on top of it.

  3. The system decides “Finished”. You decide “done”. They are not the same moment, and the gap between them is where the work actually is.
    What it means
    Finished (the status)every queued email has left. Progress shows a full bar and a green ✓, the queue has nothing in In Queue. This is about mail, not about outcomes.
    Done (your call)every reply has been read, answered and labelled; every bounce has been chased another way; every hot lead has been moved on. Nothing in the product marks this: you do.
  4. The closing checklist. Run it before you stop looking at the campaign:
    CheckWhereWhat you want to see
    Nothing still queuedEmail Queue → In Queue0. Anything left will still go out.
    Delivered matches what you sentthe row's Delivered vs the people you reviewedthe same number. A gap means someone was skipped: find out who.
    Bounce / Dropped clearedthe row's Bounce/Dropped Rateeither 0, or every one of them chased another way (6.8.7 ↗).
    No unlabelled repliesInbox → category rail → No Categoriesempty.
    Opt-outs actually recordedthe same railanyone who asked to stop carries Opted Out or Do Not Contact, not a softer label.
    Hot replies moved onLifecycle Stage on the contactInterested / Call Scheduled set, and the meeting booked (Flow 4b ↗).
  5. Finished does not mean frozen. Replies keep arriving after the last email lands, often for weeks. The Inbox stays live, so keep checking it after the status has moved on. A blast that reads Finished on Monday can still produce a meeting on Friday.
  6. Read the rates once at the end, and read them honestly. A blank rate means nothing was sent. 0% means it went out and nobody opened or replied. That is a content result, not a delivery one, and it is the number worth raising before the next send. Reply Rate is the one that matters; Open Rate mostly tells you about the subject line.
A campaign has more than one stepUnlike a marketing email, a campaign keeps sending later steps to anyone who has not been stopped. That makes the three blocking categories more consequential here, not less: mislabel an opt-out on step 1 and they still receive steps 2 and 3.

6.x · Edge cases

  1. A/B variants: two versions of the same step. A step normally holds one email. + Add variant under the step adds another, lettered A, B and so on, and each contact receives exactly one of them, picked at random when the step goes out. Nobody gets both. That is how you test a subject line or an opening against real replies rather than against an opinion.

    Where you write them: the Steps tab, one row per variant under the step, each with its own subject, body and attachment.

    One step holding two variants on the Steps tab
    6.x.1: one step, two variants. variant A, here with a file on it · variant B, a different opening · + Add variant for a third. The Steps badge still reads 1: variants are versions of one step, not extra steps.

    Where you check them: the Preview tab. The step line says “A random option will be sent” and both variants are listed underneath, each openable and editable, so you review every version that could reach that person.

    Preview showing both variants under one step
    6.x.1: A random option will be sent, on the step line · variant A · variant B below it. Which one this contact gets is not decided yet.
    Preview cannot tell you which one they will getThe pick happens at send time, not at review time, so the Preview shows you every possibility rather than the outcome. Read all of them: personalizing only variant A leaves half your contacts receiving the unedited B (6.5.4 ↗).

    The split is a weighting, not a coin toss. Each variant carries a percentage weight, and the weights on a step always add up to 100, checked across every step, 118 records, all summing to exactly 100. One variant is 100; two variants are 50 / 50. So “random” means drawn against the weights, not even by accident.

    No control for the weight was found in the editorThe number exists on the record and is always an even split in the data, so whether it can be changed, and where, is unverified. Do not promise a client a 70/30 test until that is answered.

    Variants live inside a branch. A sidestep gets its own + Add variant per step, independent of the main sequence (6.x.2 ↗).

    Which address it sends from. Every variant stores its own From address and signature, but the editor never shows either. Across 36 campaigns every campaign uses exactly one sender, the owner’s address, so a variant does not change who the email comes from. The risk sits on the owner: reassign the campaign and the sender changes with it, silently, because nothing on screen names the address in use.

  2. Sidestep: a conditional branch. A sidestep is an email that fires automatically when a contact's reply lands in a chosen category, e.g. an auto-response to an Out Of Office. Build one:
    1. Steps tab → + Create sidestep.
    2. Pick the trigger conditions: the chip control, top-left of the editor. It takes more than one. A new sidestep opens with Out Of Office already selected; each condition sits in a chip with an × to remove it. The list offers nine: Call Scheduled, Interested, Not Interested, Do Not Contact, Not Now, Opted Out, Out Of Office, Left The Company and No Categories.
    3. Write the email: same editor as any step (template / variables / snippets / attachments all work) → Create.
    Sidestep conditions, multi-select
    6.x.2: the condition control is a multi-select: Out Of Office × is already a chip and the tick marks it in the list. Add as many conditions as should fire the same branch.

    What the Steps tab looks like afterwards. Main Step comes first, then one block per branch, each headed Side Step: ‹conditions›. Several branches can live side by side, and a branch is a sequence of its own, its own steps, its own day offsets.

    Main Step and four Side Step branches
    6.x.2: Campaign 1 1 1 1 2 0 2 5: Main Step (2 steps) plus four branches. Side Step: Out Of Office runs three steps of its own on Day 2, Day 3 and Day 4.
    Main Step
       Step 1 – Day 1    Right away
       Step 2 – Day 2    Wait for 1 day
    
    Side Step: Do Not Contact - Out Of Office
       Step 1 – Day 2
    
    Side Step: Out Of Office
       Step 1 – Day 2
       Step 2 – Day 3            ◄ a branch can be a whole sequence
       Step 3 – Day 4
    
    Side Step: Left The Company
       Step 1 – Day 2
    
    Side Step: Not Now - Out Of Office
       Step 1 – Day 2

    Two conditions in one header are joined by a hyphen, Side Step: Do Not Contact - Out Of Office is one branch that fires on either category, not two branches.

    The Steps badge counts every step in every branchThe campaign above reads Steps 8, two main steps plus six across the four branches. A badge higher than the main sequence is not a miscount; open the tab and count the branches.
    The same category can sit in two branchesAbove, Out Of Office appears in three of the four headers. Nothing warns about the overlap and nothing states which branch wins. Untested: do not build two branches on one category until this is settled.

    What is actually in use. Across the 21 sidestep records: Out Of Office 19, Not Now 3, Left The Company 2 and Do Not Contact 1. The other five offered conditions are unused, Out Of Office is what this feature is really for.

    Three categories exist in the data model but are not offered in the dropdown: Unknown, EmailUpdated and NotResponded. The last would let a branch fire on silence rather than on a reply. Not available today.

  3. Folders & owner, and editing your own. Campaigns are organised into folders (right rail, each with a count). A folder has an Owner: set on create (6.1.2); it decides whose group the campaign shows under. Use folders to keep campaigns per teammate / segment / region. Edit your own folder: hover it in the rail → the menu → Edit/ View Details → the Update Folder drawer (Owner, Name and Description) → Update.
    Folder three-dot menu
    6.x.3: hover your folder → Edit/ View Details.
    Update Folder drawer
    6.x.3: the Update Folder drawer: change Name / Description → Update.
  4. Enabled toggle. The Enabled column on the list turns a campaign's sending on / off without deleting it. Flipping it on (running) is an Admin / Ops action.
  5. Status tabs. Beyond Draft/Running: Scheduled (set to start later), Paused (running but temporarily stopped), Finished (sequence complete), Archive (put away, out of the active list).
  6. Assigned a ready campaign: skip “Add people”. Often you're handed a campaign Admin / Ops has already loaded with people, with instructions not to add more, just work those contacts. Then skip 6.4 · Add people entirely and go straight to the People tab and the sequence.
  7. Start from a saved Template. In the step editor, click Select an email template (top) → the list of saved templates opens → picking one prefills the whole step (subject + body). You build & manage the templates themselves in Flow 3.x.1 · Templates ↗.
    Select an email template
    6.x.7: Select an email template opens the saved-template list; picking one prefills the step.
  8. Variables (merge fields): the right way to personalize at scale. Never type a name by hand ("Hi [Name]" stays literal). Put your cursor in the body → click Variables → pick a field, it inserts a token like {{contact.firstName}} that fills in per contact at send time. The list covers First name, Last name, Full name, Phone number, Title, Location and Company name and more (searchable). For the Subject line, use the { } icon (top-right, next to CC).
    Variables picker
    6.x.8: Variables: pick a merge field; it fills in per contact when the step sends.
  9. Insert a Snippet. Click Snippets (it enables once your cursor is in the body) → search & pick a saved reusable block. The picker has EN / DE tabs for each language. You build snippets in Flow 3.x.2 · Snippets ↗.
    Snippets picker
    6.x.9: Snippets: drop in a saved block (EN / DE).
  10. Attachments & Signature. Upload files (bottom-left of the editor) attaches files to the step; each attachment shows with an to remove. Signature (bottom-right) appends your signature (Flow 1.x.5). Both are visible in the editor screenshot at 6.2.2 (fields 12 & 13).
  11. Language versions (EN / DE). The flag toggle (top-right of the editor) switches between the English and German version of the step, write both if your list mixes languages; each contact gets the version matching their language.
  12. Force Update. When you edit a step later (after per-contact previews were generated), tick Force Update before Save to push the new copy onto those existing previews.
    Use with cautionIt overwrites existing content, per-contact personalization and saved versions on this step are replaced by the new template. Leave it unticked on a fresh step.
  13. Skip: three buttons, and they do not cover the same ground. Skip means that email is not sent to that contact. Nothing asks you to confirm, and the step is tagged Skipped straight away with the button becoming Rollback Skip.
    ButtonWhere it isWhat it skips
    Skipon a step rowthat one step, for that one contact.
    Skip all main steptop-right of the contactevery step under Main Step. It does not touch a sidestep.
    Skip on a sidestep rowunder the Sidestep headingthat branch step. Branches have no bulk button of their own.
    Skip buttons on a main step and on a sidestep
    6.x.13: a main step still to go · the branch, listed separately · its own Skip, which Skip all main step never reaches.

    Changed your mind? Rollback Skip puts it back. A skipped step turns green and the Skip button is replaced by Rollback Skip, sitting in the same place. Click it and the step is back in the sequence for that contact, with the Skipped tag gone. It asks nothing, the same as skipping did, and you can go back and forth as often as you like while the campaign has not sent that step yet.

    A skipped step showing Rollback Skip
    6.x.13: a step after Skip: Rollback Skip, where the Skip button was · the Skipped tag. The whole row goes green.

    Skipped contacts are what the Skipped filter at the top of the list surfaces, so that is where you find everyone you have taken out of a step without leaving the campaign.

    Skip one step by hand and you lose the bulk buttonMeasured: skipping a single main step makes Skip all main step disappear for that contact, with the remaining steps still unskipped and no bulk way to reach them. You are left skipping the rest one at a time, or rolling the first one back to bring the button home.

    So if you want the whole main sequence skipped, use Skip all main step first. Doing it in the other order costs you the shortcut.

  14. The 🔔 bell: Campaign Notifications. The bell (top-right, next to Create Folder) opens Campaign Notifications, a feed of every reply your campaigns pulled in: the campaign name, the reply-category chip, the contact, a snippet of the reply and how long ago. A purple dot = unread; See More loads older ones. Use it as your morning sweep: spot fresh replies without opening each campaign.
    Campaign Notifications panel
    6.x.14: the bell opens Campaign Notifications: campaign + category chip + reply snippet.
  15. Rename a campaign, or give it a description. Both sit in the header of the campaign, and both are live text boxes rather than a form you open. Click the name (or the beside it, which only moves the cursor there), type, then click away. The description box sits next to it reading Enter description until you fill it in.
    Campaign header: name and description
    6.x.15: the name, always editable · the description.
    There is no Save button, and no message eitherThe change is written the moment the box loses focus. Nothing flashes to confirm it, so if you want to be sure, reload the page and read it back. Equally, a stray keystroke in the name field is already saved by the time you notice.

    The description is for you and your team; it is never sent to anyone.

  16. Edit a step you already created. On the Steps tab, click the variant row under the step (the row marked A). The same editor opens with your subject and body loaded, and two things change: the button now reads Save instead of Create, and a Force Update control appears next to it.

    Force Update decides whether the edit reaches previews that already exist. Leave it alone and your change applies from here on; tick it and it overwrites the per-contact copies already generated, including personalization someone typed by hand. Full warning at 6.x.12 ↗.

  17. Move to other campaign. The same action bar on the People tab carries Move to other campaign next to Remove. It hands the people you ticked to a different campaign in one action, instead of removing them here and adding them there.

    Noted, not yet written up. The steps and what it does to their place in the sequence have not been walked through, so treat this as a pointer rather than an instruction.

  18. Mark all as Unpersonalized. In Bulk Actions (6.5.5 ↗), it strips the per-contact copy off everyone selected and puts them back on the standard step. Useful after a rewrite, when the personal lines were written against the old email and no longer make sense.

    It runs without asking, and there is no undo. Anything anyone typed for a specific contact is gone. If only some of them are stale, fix those by hand instead.

  19. Bulk update steps. The last of the editing actions in Bulk Actions. It opens the step editor full screen, with every step of the campaign listed, so you can change the copy once and push it to everyone selected rather than opening them one at a time.
    The bulk update steps editor
    6.x.19: the subject, carrying a warning · Update, which stays greyed out until you change something.

    The warning beside the subject is worth reading. It says the subject is reused across the campaign, so changing it here changes it on every step, unless a step has already been submitted. Bodies are per step; the subject is not.

    Same family as Force Update (6.x.12 ↗), and the same caution applies: pushing a step over people who have personalized copy replaces what they wrote.

  20. The buttons on a single contact row. On the Preview tab, each contact in the left-hand list carries its own controls. Which ones you see depends on whether that person is already marked done.
    ButtonShows whenWhat it does
    green tickthe contact is not doneasks Done this contact?, then tags that one person (Done).
    undothe contact is doneasks Undone this contact? and clears the tag. It replaces the tick, so a row never shows both.
    🗑 binalwaysremoves that one contact from the campaign.
    The buttons on a contact row and the remove dialog
    6.x.20: undo, on a contact already marked done · the bin · what the bin asks first.
    This bin does ask. The bulk one does not.Removing one person here opens Remove this contact from campaign? with No and Yes. Removing people from the People tab with Remove from campaign happens immediately, with nothing asked (6.4.7 ↗). The safer control is the one that handles one person.

    Removing is not skipping. The bin takes them out of the campaign altogether; skipping leaves them in and drops one email (6.x.13 ↗).

  21. The icons under the contact’s name. The little row of icons in the Preview header opens this person somewhere else, without losing your place in the campaign.
    IconWhere it takes you
    View Inboxthe Conversations tab on their contact record: every email and call thread with them.
    View Contact Infothe contact drawer: phone, location, LinkedIn, experience, work history.
    View Companythe company drawer: industry, website, classifications, email domains.
    View on LinkedIntheir LinkedIn profile, in a new tab.
    A missing icon is informationYou will not always see four. An icon is only there when the contact has that piece of data, so no company icon means no company is linked, and no LinkedIn icon means no LinkedIn URL on the record. Count them before you conclude the record is complete.

    Same row of icons, same behaviour, in the Marketing Email flow at 7.x.4 ↗.

  22. Cancel a queued email. An email sitting in In Queue has not been sent, so it can still be stopped. On the row, open the menu and choose Cancel Email Queue. It moves to the Cancel tab and nobody receives it.
    The row menu on a queued email
    6.x.22: the four tabs, with nine still In Queue · the on the row · Set as Delivered, which sends it (6.x.23 ↗) · Cancel Email Queue.
    The queue after all nine were cancelled
    6.x.22, afterwards: the tab still reads 9 · but the split is now In Queue 0, Cancel 9 · every row says Cancel · the dates stay on the row even though the send never happens.

    Cancelling does not delete the row. It stays in the queue with the status Cancel, which is what you want: the record of what was going to go out, and the fact that it was stopped.

    The menu only exists on rows that are still In Queue. Once a row is Delivered or Cancel there is nothing left to decide, so the is gone.

    This is the last point at which you can take something back. Once a row reaches Delivered, it has left, and the only remaining moves are on the reply side (6.8 ↗).

    Cancelling one queued email is not the same as skipping the step for that contact. Skip is a decision about the sequence and survives; cancel applies to this one queued row only (6.x.13 ↗).

  23. Send one queued email now: Set as Delivered. Queued mail waits for the start of the day in the campaign's timezone. To push a single one out without waiting, open the menu on its row and choose Set as Delivered. It leaves In Queue and lands under Delivered. Both menu items are in the picture at 6.x.22 ↗.

    Useful when somebody is waiting on a specific email, or when a demo cannot wait for tomorrow morning. It affects one row. To move a whole step, that is Force Send on the Steps tab (6.7 ↗).

    The name says less than the action doesSet as Delivered reads like a bookkeeping change, a status you are correcting by hand. It sends the email. Treat it as a send button that has been labelled as a status.
  24. Hide a category instead of showing it. On the Inbox rail, one click on a category includes it: green , and the list shows only that group. Click the same category again and it flips to exclude: the list now shows everyone except that group.

    Useful for reading what is left rather than what is done. Exclude Not Interested, Opted Out and Do Not Contact and what remains is the part of the campaign still worth working. It is the same include / exclude behaviour as the Lifecycles filter itself (8.1 ↗), which is what the rail is driving.

    A third click clears it. If a count on the rail stops matching what you see in the list, check whether a category is sitting on exclude, then use Clear all.

SDR6† · Manage a campaign, audited

A decision-maker’s view of Flow 6 ↗, what breaks, how often, and what to fix first. The step-by-step instructions stay on the flow page.

Measured against live data · Sections 1–5

Manage a campaign, audited

Every campaign read through the API and through its own health snapshot, then compared against what the screen prints. Scope: the campaign list, the People and Preview tabs, Email Queue, and Data Health β.

Measured
30 Jul 2026
Access
Read‑only
Campaigns read
49 · 13 with a health snapshot
Defects
8 · 3 quick wins
Worst
a blocker that double‑counts

Headline finding

The number that blocks the Start button is roughly double the truth. Data Health counts a cross-campaign overlap once by contact id and again by email address, then adds the two together, so the same person is counted twice. On Corp Dev outreach — DD capacity (DACH) the issue reads 15 while its own evidence list holds 8 contact ids: 8 by id + 7 by email = 15.

9 of the 10 campaigns that carry this issue match the formula exactly. The only one that does not is the campaign where the email count is zero, nothing to double. Every SDR with an overlap is being blocked on an inflated figure.

01

Executive summary

Audience: Product / PM / CEO
  1. Quick win 1, stop adding the two overlap counts together. The snapshot already stores duplicatedByContactId and duplicatedByEmail separately, and the issue's own contactIds list is the correct answer. Use the length of that list. Worth: unblocks campaigns that were never really blocked. Hours, not days.
  2. Quick win 2: never print a percentage without checking the denominator. 24 of 49 campaigns: 48% have an empty email queue, and the Cancelled row renders as NaN% with no count beside it. Two of them are real campaigns with 585 and 511 people in them.
  3. Quick win 3: make the People tab agree with itself. One campaign reports 21 contacts through the API, shows 18 to an admin and 17 to an SDR. The tier breakdown inside Data Health explains the 18: contacts with no health tier are dropped. Nothing explains the 17.
  4. Data Health contradicts itself on the same screen. The card says 0 — no overlap, the panel says “No cross-campaign overlap”, and the issue list says “In another campaign — 15”. A reader has no way to tell which one to believe.
  5. A permission error is drawn as a zero. The Email Queue endpoint returns 403 for an SDR and the screen renders an empty queue rather than an error. The reader concludes there is nothing to send.
  6. Two pages disagree about whether SDRs may see contacts. Contacts is hidden from the SDR menu, yet + Add contacts inside a campaign navigates straight to it, where it loads in full, filters, twenty rows, and an Export CSV button.
  7. The folder rail leaks other people's numbers. An SDR with three campaigns still sees tin's (22), Sang (8), Sponsors USA (8). Opening one shows nothing: the data is scoped, the counts are not.
  8. Four campaigns have no health snapshot at all, so Data Health has nothing to show and no message explaining why.
  9. The tier breakdown does not always add up: 118 tiers against 122 contacts on one campaign, 15,219 against 15,221 on another. Small, but it is the same class of fault as the People tab.
  10. The register below scores 8 defects. Three are quick wins. The most valuable thing to fix is the overlap double-count, because it is the only one that stops work outright.
02

What the screen reads

Audience: engineering

Where each number on the campaign screen comes from. The two that disagree with each other are marked.

On screenSourceNotes
People tab count campaign targets joined to contact health Disagrees with totalTargets. Contacts with no health tier are dropped, 21 becomes 18, and 17 for an SDR
Cross-campaign card stats.contact.crossCampaign.duplicatedByContactId counts people
“In another campaign” issue dataHealth.issues[CROSS_IN_OTHER_CAMPAIGN].metadata.count Disagrees with the card. Equals byContactId + byEmail: the same person twice
Health tiers contactStats.countGroupByDataHealthTier Healthy · Degraded · Critical · Unknown. Does not always sum to totalContacts
Queue percentages emailQueueStatusStatistic Empty on 48% of campaigns → division by zero
Email Queue list /email-queues 403 for an SDR, rendered as an empty list
Status tab label status Tab prints Finished, the API returns Completed

The blocker banner counts issues of severity Critical. Since the overlap issue is Critical and inflated, the banner it feeds is inflated too.

03

The overlap double-count, in full

Audience: engineering / Product

The one defect worth reading end to end, because it is the only one that stops an SDR from working.

Corp Dev outreach — DD capacity (DACH)

  stats.contact.crossCampaign.duplicatedByContactId  = 8
  stats.contact.crossCampaign.duplicatedByEmail      = 7
  dataHealth.issues[CROSS_IN_OTHER_CAMPAIGN]
        .metadata.count                              = 15   ◄ 8 + 7
        .metadata.contactIds                         = [ 8 ids ]

The same person is matched twice, once because their contact id appears in another campaign, once because their email address does. The evidence list carries the correct answer and is ignored by the count beside it.

Campaignby idby email issue saysids listedFormula holds
New Campaign test1516912051yes
20 - 08 - 2025536611953yes
New Campaign 24/09 CLONE36347036yes
Long test 19/08 - 221406121yes
Tin’s 26 08 202511132411yes
Corp Dev outreach, DD capacity87158yes
Campaign 0 5 0 9 2 0 2 5 - side steps55105yes
T - 202508183363yes
New Campaign 20/09 emailDomain1121yes
addToCampaign22022n/a, nothing to double

9 of 10. The exception is the only campaign whose email count is zero, which is what you would expect if the formula is byId + byEmail.

04

Defect register

Audience: Product / PM / CEO

Priority = Impact − Effort. A quick win is Impact ≥ 4 with Effort ≤ 2.

IDSymptomConsequenceI EPQuick win
CMP-01 The cross-campaign issue count adds the by-id and by-email matches together. The blocker that gates Start reads roughly double. SDRs are stopped on campaigns that are not really in conflict. 9 of 10 affected. 514 Quick win
FixReport metadata.contactIds.length, which the issue already carries, and keep the two raw counts for diagnostics only.
CMP-02 Data Health prints NaN% when the email queue is empty. 24 of 49 campaigns (48%), including two with 585 and 511 people. The Cancelled row loses its count as well as its percentage. 413 Quick win
FixRender when the denominator is zero, and keep the raw count visible.
CMP-03 The People tab drops contacts that have no health tier: 21 → 18 → 17. An SDR works a shorter list than the campaign will actually send to, and nobody is told. Three numbers for one campaign, none of them labelled. 422 Quick win
FixLeft-join the health table instead of inner-joining it, and show untiered contacts as Unknown. Which is already a tier the snapshot uses.
CMP-04 /email-queues returns 403 for an SDR and the UI draws an empty queue. The reader concludes nothing is queued. A permission problem is indistinguishable from an empty result. 532:
FixSurface the status. Decide separately whether SDRs should have the page at all, see CMP-05, which resolves the opposite way.
CMP-05 Contacts is hidden from the SDR menu but fully reachable from inside a campaign, Export CSV included. Either the menu is wrong or the page is. Right now the product answers both ways depending on the route taken. 321:
CMP-06 The Manage assignee drawer lists 38 accounts and their roles to an SDR. Staff directory exposed to a role that has no need for it. 321:
CMP-07 The folder rail shows other owners' folders with live campaign counts. An SDR learns how much work everyone else has. Opening a folder correctly shows nothing, so only the count leaks. 211:
CMP-08 Four campaigns have no health snapshot; the tab renders with nothing and no explanation. Tier counts also fail to sum on two campaigns. A blank Data Health tab reads as “healthy” rather than “never computed”. 220:

Also seen, not scored: the status tab prints Finished while the API returns Completed; the Steps tab writes “Side Step” and Preview writes “Sidestep”; and O removes a contact from the campaign with no confirmation, sitting next to E on most keyboards.

05

Open questions

Audience: Product / engineering
Open question

Should the overlap check dedupe across the two match methods, or report them separately as “same person” and “same address”? They are not the same signal: a shared address across two contact records is itself a data problem.

CMP-01

Open question

Are SDRs meant to reach Contacts and Email Queue at all? The product currently answers “no” via the menu, “yes” via the campaign, and “403” via the API. One decision would settle CMP-04 and CMP-05 together.

CMP-04 · CMP-05

Unverified

Why an SDR sees 17 where an admin sees 18. The untiered-contact theory accounts for 21 → 18 and nothing else.

CMP-03

Unverified

Whether the four campaigns without a snapshot were never computed or failed. No message on screen distinguishes the two.

CMP-08

Unverified

The permission findings (CMP-04, 05, 06, 07) were observed in an earlier pass under an SDR login and were not re-checked in this sweep, which ran as an admin.

Method

SDRFlow 7 · Manage a Marketing Email

Goal: run a marketing email (ME) end to end, build or open one, load the right people, review & personalize every mail, get it sent, then watch what comes back. One ME sends the same templated email, personalized per contact, to a whole list at once.
Yours vs your Admin'sYou do everything except turning the ME on and sending it. Both Draft → Active ("run marketing email") and Force Send are Admin / Ops actions, you prepare & review, they activate and force-send, then you monitor the Email Queue and handle replies.

7.1 · Create a Marketing Email

  1. Left menu → Marketing Emails+ Create Marketing Email (top-right).
    Marketing Emails page with the Create button
    7.1.1: the /marketing-emails page: open it from the left menu, then hit + Create Marketing Email (top-right).
  2. Fill the header bar:
    • Name: required. It is the title at the top-left (starts as "New Marketing Email"); click the ✎ pencil and type your own.
    • Timezone: optional; defaults to (UTC+01:00) Europe. It decides the clock your sends run on.
    • Description: optional free text (top-right); leave it blank if you don't need it.
  3. Click Next → you move to step ② Template.
  4. ⚠ Next already creates it. The marketing email is saved the moment you press Next. Before you have written a single line of the email. The address bar picks up an ?id= and the list count goes up straight away (measured: All 91 → 92, Draft 57 → 58).

    So closing the wizard at step ② does not cancel anything. It leaves a named, empty Draft behind. If you opened it by accident, go back to the list and delete it (A5.2 ↗); a Draft can still be deleted. This is worth knowing before you wonder why the Draft tab keeps growing.

Create Marketing Email form
7.1: Name (required, click ✎) · Timezone (defaults to UTC+01:00) · Description (optional) · Next → Template.

7b · Create / edit a template

A sub-flow inside managing the ME. Still on the Templates tab, you build the actual email a ME sends, a step (= one email) with its subject, body, variables and attachments. A brand-new ME opens with no step yet, it says "Please add an email step to start viewing preview email". Click + Create new step. A step = one email. (The Preview tab is gated on people, not on steps. It appears once the ME has at least one recipient. See 7.2.4 ↗.)

Empty ME, Create new step
7b · empty state: a new ME's Templates tab: no step yet → + Create new step.

The step editor opens: the core fields:

Field / controlWhat it does
SubjectThe email's subject line (top of the editor). You can drop variables in here too, via the { } icon (see 7.x.9).
Body + formatting toolbarThe message. Full rich text: H1/H2, font & size, B/I/U/S, quote, lists, indent, colour, link, clear-format.
Create / SaveCreate saves a brand-new step; re-open a step and the button reads Save instead. The 🗑 bin on the step header deletes it.

Everything else in the editor has its own edge case below, jump to it: saved Template (7.x.7) and Variables (7.x.9) and Snippets (7.x.8) and CC (7.x.10) and Upload files (7.x.12) and Signature (7.x.12) and Force Update (7.x.11).

Marketing Email step editor
7b: the step editor: Subject · start from a saved template · formatting toolbar · Variables / Snippets · Force Update · Save · attachments · Signature · CC.
Template tab with Step 1
7b · result: the Template tab now shows Step 1 with your subject + body (merge fields still shown raw here).

7.2 · View your Marketing Emails

  1. Left menu → Marketing Emails shows every ME you can work on. They arrive two ways:
    Where it came from
    You created itsee 7.1 ↗.
    Admin / Ops created it and assigned youalready set up, often with people already added. This is the usual case.
  2. The tabs across the top filter by status, each with a count:
    TabWhat it means
    Allevery ME you can access.
    Draftcreated but never activated. Fully editable: where a ME sits while you build and review it.
    Runningactive and sending. Shows a Started on… chip. Admin flips it here from Draft (A5.8 ↗).
    Pausedwas Running, temporarily stopped: nothing goes out until resumed.
    Finishedthe run is complete; every queued email has gone.

    The five tabs account for every record, 57 + 11 + 19 + 4 = 91 in one snapshot. There is no Archived or Scheduled tab; see A5.x.1 ↗.

    Marketing Emails list
    7.2.2: the status tabs and their counts.
  3. Reading the numbers on a row. Every row carries the ME's whole health check:
    ColumnWhat it actually counts
    Namethe name, the From address it sends as, and the status chip.
    Peoplewho is in it right now. An old ME can read 0 if people were removed after it ran.
    Deliveredemails, not people: one contact can receive several over time, so 1 person / 12 delivered is normal.
    Open Rate% opened, raw count in brackets. 100% (1) = the one mail delivered was opened.
    Reply Rate% that got a reply, total replies in brackets. The number that matters most.
    Bounce/Dropped Rate% that failed. Anything above 0 is a to-do: those people never got it; reach them via Flow 3 ↗.
    Progressempty grey bar + 0% while Draft; full purple bar + green ✓ once everything has gone.
    Last runwhen it last actually sent (, if never).

    The three rates stay blank on a Draft. Nothing has been sent, so there is nothing to measure. Blank is not zero.

    Marketing email metrics
    7.2.3: the per-row metrics.
  4. Inside a ME: the tabs. Open one and it splits:
    TabWhat it is for
    Inboxreplies that came back on this ME, same read/answer flow as Flow 4 ↗.
    Template (count)the email step itself: the content that gets sent (7b ↗).
    People (count)the recipient list, with the ME-only Content Reviewed / Personalize filters (7.3 ↗).
    Previewthe review gate: see and personalize each contact's real email, then mark reviewed (7.4 ↗).
    Email Queues (count)the queued emails (7.6 ↗).
    Timelinewhat happened and when.
    Two tabs are conditional: do not read their absence as a faultPreview only exists once the ME has at least one person; on an empty ME it is simply not rendered. Email Queues only exists once the ME is past Draft. A Draft ME has no queue tab at all, because it has no queue. Verified across three MEs: the Running one had Email Queues, the two Drafts did not.

7.3 · Add contacts to the ME

🔒 Not yours to do yet, ask an AdminOn the SDR login the save is refused: the add returns a 403 permission error, so the contacts never attach. The steps and screenshots below are the Admin run of the same flow (A5.5 ↗), identical screens, identical drawer. Read them so you can say exactly what you need, then hand the list to whoever has the rights. When the permission is opened up this becomes yours with nothing else to learn.
Most of the time you will not need this at allAn ME assigned to you usually arrives with its people already added. Check the People count first: if it is already populated, skip straight to 7.4 ↗.
  1. Start from the marketing email, not from Contacts. Open the ME → People tab. An empty one says so plainly, and tells you the only way in:

    “No people yet — Contacts added to this marketing email via the Contacts V2 bulk flow will appear here.”

    Empty People tab with the Add contacts button
    7.3.1: + Add contacts, top right of the tab · the empty state naming the bulk flow.
  2. + Add contacts does not open a picker. It takes you to Contacts. You land on the full Contacts list with a filter already applied, a chip reading Marketing Email: 1 excluded. That chip is doing real work, because it hides everyone already in this ME, so whatever you tick next is genuinely new.
    You have left the marketing emailThis is a normal Contacts page now. The full filter bar is yours: Lifecycles, Has signal, Countries, Work Experience, keyword search. Narrow the list here rather than ticking your way down 15,000 rows.
    Contacts pre-filtered to exclude this ME
    7.3.2: the Marketing Email: 1 excluded chip · the row count you are working against.
  3. Tick the contacts you want. A selection bar appears with the count, Select all N matching for the whole filtered set, and Clear. Of the actions on the right, the one you want is Add to marketing email, the neighbours add to a list or a campaign instead, and Delete contacts sits two buttons away.
    Selection bar with Add to marketing email
    7.3.3: the count and Select all N matching · Add to marketing email.
  4. The drawer is two panes, and both matter. It opens titled Add N contacts to marketing email.
    PaneWhat it does
    Left: Select marketing emailevery ME you can reach, searchable and sortable. Each row shows name · owner · status chip · N recipients, so you can tell a Draft from something already sending before you pick it.
    Right: the contactssplit into three buckets: Valid · Missing + Invalid · Platform Signup, each with its own count. They are not a quality ranking: which ones you tick depends on what the email is for. See below.

    Read the legend above the table: “☑ Tick to add and ◉ Email to send”. Two different controls: the checkbox decides whether the contact goes in, the radio beside each address decides which address gets used.

    What each bucket actually means, and when to tick it:

    BucketWhat is in itTick it?
    ValidThe safe ground. The address is confirmed working, so a send has a high chance of landing rather than being dropped.Yes: pre-ticked for you.
    Missing + InvalidNeeds a human look. The work address is missing or unusable, so the pick falls back to a personal one, unverified rather than proven bad. Most are reachable; nobody has checked.Your call. Tick individually if you are willing to risk a bounce on that name; leave it if you would rather not spend the sender reputation.
    Platform SignupPeople who already have a Fintalent account, talent or client. Nothing to do with whether the address works.Depends entirely on the campaign. See the rule below.
    Platform Signup is a business decision, not a data-quality oneAsk what the email is for:
    The email is aimed at…Platform SignupWhy
    TalentsTick all of themThese are your talents. Leaving them out means mailing everyone except the audience.
    Prospective clientsJudgement callHaving an account already suggests they may be a client. Whether that makes them a target or means you should leave them alone depends on the campaign. Decide deliberately, do not let the default decide for you.

    When a contact has more than one address, the system has already chosen one. It picks by priority: a valid address first, then one belonging to a sponsor company, and so on down. The chosen address carries the filled radio; any others sit under Additional Emails.

    You can overrule it right here. Click the radio next to a different address and that is where the email goes. Worth a look whenever someone has a work address and a personal one. The automatic pick is a sensible default, not a decision about which inbox this particular message belongs in.

    The add-to-marketing-email drawer
    7.3.4: pick the ME (status and recipient count on every row) · the three buckets · tick-to-add vs email-to-send · the confirm button and the line above it.
  5. Tab 1, Valid. Everything here is already ticked: rows are shaded and the header checkbox is on. The address being used sits in the Work Experiences column beside the company, the work address, right under the Sponsor chip. In one example, 52 of the 62 picked there and not one fell back to a personal address.

    Whatever is listed under Additional Emails is an alternative. It is normal for those to be red. They are not the address being sent to, so a red alternative is not a problem to fix.

    Remove N from selection, top right, unticks the whole tab in one click. Useful when you meant to send only to the other buckets.

    The icons mean the same thing in all three tabs. Hover any of them; these are the tooltips:

    IconTooltipWhat it means for you
    green tickValidthe address is confirmed working
    red triangleInvalidknown bad. Sending here costs you sender reputation
    grey circleNot verifiednever checked. Not proven bad, just unknown
    blue arrowReplied from this emailthis person has written back from that address before
    green personPlatform Signupthey hold a Fintalent account
    Valid tab, everything pre-ticked
    7.3.5: Valid. the three counts, adding up to your selection · header checkbox on, every row ticked · Remove 62 from selection · the address in use, on the work experience · an alternative address · an alternative that is Invalid. Harmless, it is not the one selected.
  6. Tab 2, Missing + Invalid. Nothing is ticked, and the pick has fallen back. In one example, 17 of the 22 had no usable work address, so the radio landed on a personal one under Additional Emails while the Work Experiences column shows the job with no address against it. That is what the tab name means: the work address is missing or unusable, not that the person is unreachable.

    The blue Replied from this email arrow is the best reason to tick one of these by hand. Someone who has already written back from an address is a far safer bet than the bucket label suggests.

    ⚠ One row had no address selected at allNot every row here has a pick. Tick a contact whose radio is empty and you add someone with nowhere to send, check the radio, not just the checkbox.
    Missing + Invalid tab, nothing pre-ticked
    7.3.6: Missing + Invalid. the tab · nothing ticked · the pick fallen back to a personal address · a row with no address picked at all · Replied from this email.
  7. Tab 3, Platform Signup. These people already hold a Fintalent account. Nothing is pre-ticked. All 16 rows picked a personal address; none had a work one. The marker is the green person icon at the end of the row, hover it and it reads Platform Signup.

    This tab says nothing about address quality. An address in here can be green Valid and still sit outside the Valid tab, because holding an account is what put it here. Judge it on who the email is for, not on the data.

    ⚠ Skip this tab and you may miss the whole audienceIf the email is aimed at talents, these are your talents, leaving the tab unopened mails everyone except the people it was written for. Go back to the bucket table in 7.3.4 ↗ and decide deliberately.
    Platform Signup tab
    7.3.7: Platform Signup. the tab · the green Platform Signup marker · a personal address, Not verified · a work experience carrying no address · the line that names both unticked buckets.

    The N results count and page numbers along the bottom belong to the marketing email list on the left, not to the contacts, 93 results was 93 MEs. The buckets are not paginated; each tab shows all of its rows.

  8. ⚠ Read the button before you click it. It will not add everyone you ticked. Confirm reads Add 2 of 6 contacts, and directly above it: Not ticked by default: 4 Missing + Invalid.

    Only the Valid bucket is pre-ticked. Contacts with a missing or unusable address are carried into the drawer but left unticked on purpose, so selecting six people and adding two is the expected outcome, not a fault. Worked example: six selected → Valid 2, Missing + Invalid 4 and Platform Signup 0 → button Add 2 of 6 contacts.

    If you want the excluded ones anyway, open the Missing + Invalid tab and tick them yourself, but fix the address first, or they will bounce (7.7a ↗).

  9. Confirm, and read the toast. It names both the number and the email: “Added to marketing email — 2 contacts added to M&A Executive Briefing - Berlin, October 2026.” That is your receipt, and the only moment the system tells you what actually went in.
    Success toast naming the count and the marketing email
    7.3.9: the toast, bottom left over the sidebar. It names both numbers that matter: how many contacts went in and which marketing email they went into, and it clears on its own after a few seconds, so read it as it appears. A count lower than what you selected is the dialog holding back contacts with a missing or invalid email.
  10. Check the People tab. Go back to the ME: the People tab badge should carry the new total. If it does not match what the toast said, something was dropped; re-run the add rather than assuming it landed.

7.3b · Remove contacts from the ME

The other half of the listAdding is 7.3 ↗; this is how people come back out. Same tab, same selection bar, but the confirmation behaves differently enough to be worth its own read.
  1. Open the ME → People tab and tick whoever should not receive it. The selection bar is the same one you used to add: the count, Select all N matching, Clear. The action you want is Remove contacts.

    Removing takes them off this marketing email only. The contact record itself is untouched: this is not Delete contacts, which lives on the Contacts page and is a different thing entirely.

  2. You get told twice, in two places, and they do not say the same thing.
    WhereWhat it says
    Banner, above the tableRemoved 1 contact, with an Undo beside it. Stays until you dismiss it.
    Toast, bottom leftRemoved 1 contact from M&A Executive Briefing - Berlin, October 2026, the only one that names the email. Clears on its own.

    If you work several MEs at once, the toast is the one that tells you which list you just cut into.

    Remove banner with Undo, and the toast naming the email
    7.3b.2: the banner and its Undo · the toast, the only place the email is named.
  3. Undo really does put them back. Worked example: two recipients, removed one, People went 2 → 1; clicked Undo and it went back to 2 with the contact returned. Because the banner waits for you rather than fading, a wrong bulk remove is recoverable, as long as you notice before you navigate away.
    🐛 After Undo the table lies until you reloadThe People badge corrects itself, but the list underneath keeps the post-removal total, it read People 2 and Showing 1 of 1 at the same time. Refresh before you trust the table, and count off the badge, not the footer.
  4. Once you leave the page, Undo is gone. There is no removal history and no bin to fish them out of, the only way back is to add them again from scratch (7.3 ↗). On a Select all N matching removal that is a real cost, so read the count in the bar before you confirm, not after.

7.4 · Preview, personalize & mark as reviewed

The Preview tab is the review gate. Nothing should go out unchecked.

  1. Open the Preview tab → click a contact on the left.
    Preview tab: pick a contact
    7.4.1: open the Preview tab · click a contact in the left list.
  2. Read the contact header. Above the email you get the contact's name, email and title & company, plus three quick reads:

    1. Company-type badge: the coloured letter next to the email:

    BadgeMeans
    S badgeSponsor company
    C badgeCorporate company
    PPortfolio company
    green tickEmail address is valid

    2. Quick-jump icons: the little row under the name; each opens this contact elsewhere (full detail & screenshots → 7.x.4):

    IconOpens
    Inbox iconView Inbox: their Conversations.
    Profile iconView Profile: their contact record.
    Company iconView Company: their company page.
    LinkedIn iconView on LinkedIn: their LinkedIn profile (new tab).

    3. Row indicators: shown on each contact's row in the left list (full detail → 7.x.5):

    MarkMeans
    Personalized sparklePersonalized: you edited this contact's email and hit Save (7.4.4).
    (Reviewed)Content-reviewed: the “done” mark, after Mark as reviewed (7.4.5).
    Preview header: badge, valid-email tick, quick-jump icons
    7.4.2: a contact row + header: the company-type badge, green ✓ valid email, and the quick-jump icons.
  3. Read the email they will actually get on the right. Merge fields are resolved here (e.g. "Hi Tin Nguyen," plus their real title & company).
    Merge fields resolved for this contact
    7.4.3: the merge fields resolve to this contact's real data (First name: Tin · title · company); the body opens "Hi Tin Nguyen,".
  4. Personalize if it needs it: the body is a full editor, so you can tweak this one contact's copy, then click Save. Work down the list.
    Typing a personal line for this contact
    7.4.4: typed a personal line just for this contact (highlighted) → Save; everyone else keeps the standard copy.
  5. When the batch is done: select the contacts (All at the top selects everyone) → Bulk ActionsMark as reviewed. That sets Content Reviewed on them. Bulk Actions holds three items: Mark all as Reviewed, Mark all as Not Reviewed and Mark all as Not Personalized.
    Nothing is queued until this is doneThe send queue is built only for contacts marked reviewed. Worked example: an ME with 3 recipients was set Active and force-sent while 0 were reviewed, the Email Queues tab stayed empty and no error or warning appeared anywhere. Marking all 3 reviewed and force-sending again produced all 3 rows immediately. If the queue is empty after a force send, check this first.
    Personalizing is not reviewingWriting a personal version for a contact and clicking Save does not tick Content Reviewed. On the same walk one contact was personalized and the Run dialog still read 0 reviewed, with “3 of 3 recipients have not been reviewed”. The two flags are independent: come back and mark reviewed explicitly.
    Select All → Bulk Actions → Mark all as Reviewed
    7.4.5: Select All · Bulk Actions · Mark all as Reviewed (sets Content Reviewed).

7.5 · Force Send + Run the marketing email (Admin/Ops)

Not your button, and not your call to make earlyRunning a ME is an Admin/Ops action. Your part is to ask for it, and to ask only once 7.4 ↗ is genuinely finished, every contact previewed, personalised where it matters, and marked reviewed. Force Send only reaches reviewed contacts (A5.x.2 ↗), so asking early just sends a smaller batch than you meant.

What you hand over: the ME name, that review is complete, and the number you expect to go out. What comes back: the ME switched to Active and the queue filled. Everything in 7.6 ↗ only exists after this step has happened.

No Force Send on the SDR viewForce Send is an Admin / Ops action, on the SDR login there is no Force Send button (the ME's ⋮ menu only offers Edit / View Details). Your Admin both flips the ME Draft → Active and clicks Force Send. The Admin side is Flow A5.8 ↗.

Your review is what your Admin is waiting on. The confirm they get when they flip the ME on counts recipients, email steps and reviewed, and warns them that anyone unreviewed “will receive the default template as-is”. At 0 reviewed the queue is not built at all, silently. Their side, dialog by dialog, is A5.8.3 ↗.

Once your Admin has force-sent, your job is to check the queue:

  1. Open the marketing email detail.
  2. Go to the Email Queue tab.
  3. Check the count: the number of queued emails should match the number of contacts you marked as reviewed (7.4.5). If it doesn't, something's off; flag it, don't just carry on.

7.6 · The Email Queue: your control room

  1. Two ways in, and they are not the same view. The Email Queue tab inside a ME is already scoped to that ME. Sales Management → Email Queues in the left menu is the whole platform, it mixes three sources:
    SourceWhere the email came from
    Email Marketinga marketing email, this flow.
    Campaigna campaign step (Flow 6 ↗).
    Taska one-off task email.

    The Campaign / Marketing Email column tells you which, with a chip for the source and a link to the campaign or ME by name. On the global page, read that column before you act on a row. It is easy to cancel a campaign email thinking it belongs to your ME.

  2. Three states, plus an All that holds them. Every row sits in exactly one of In Queue, Delivered and Cancel, and All is simply the three added together. Each carries a live count:
    TabWhat is in it
    Alleverything, whatever its state, the tab people forget exists.
    In Queuewill be sent, has not gone yet. The only tab where the row actions do anything.
    Deliveredalready sent.
    Cancelpulled out of the queue: these will never be sent.
    When the In Queue rows actually go outYou do not send them one by one. Everything sitting in In Queue is released automatically at the end of the day, read in the timezone set on the ME when it was created, not your timezone, and not the contact’s. So “In Queue” means not sent yet, but it will be, and the clock that decides when belongs to the ME.

    Cancel is only reachable from In Queue. Once a row has moved to Delivered the email is gone and there is nothing left to stop, so anything you want pulled has to be pulled before that daily release.

    Two worked examples. A large ME: All 20,168 and In Queue 1,013 and Delivered 18,742 and Cancel 413. And Talent Handbook Launch — Aug 2026: All 5,197 and In Queue 1,451 and Delivered 3,741 and Cancel 5, and 1,451 + 3,741 + 5 = 5,197 exactly, so the three do add up to All.

    The three Email Queue states
    7.6.2: All 5,197 · In Queue 1,246 · Delivered 3,946 · Cancel 5, and 1,246 + 3,946 + 5 lands exactly on 5,197.
    Email Queues with four tabs
    7.6.2: the four tabs with their counts · the filter bar · rows-per-page and the column settings gear.
  3. Narrowing it down. Quick filters are Sources, Campaigns and Expected Run Date, plus Add filter to pin more. The search box has a Simple / Advanced toggle.
    The date filter changes meaning with the tabOn Delivered you filter by sent date. On In Queue and Cancel there is no sent date yet, so you filter by queued date instead. Same-looking control, different question: worth knowing before you conclude a date range is empty.
  4. Read a row. Beyond Subject and Status: from and to under the subject, a Content preview of the actual body, Attachments, and three dates, Created, Expected Run, Expected Delivery, with Sent Date filled in once it has gone.

    The recipient carries a small coloured dot: green when the contact has an email on file, grey when it does not.

    Email queue columns
    7.6.4: scroll the table sideways for the rest: Status, Attachments, Sent Date, Created Date, Expected Run, Expected Delivery.
  5. Act on one row: the at the far right of an In Queue row:
    ActionWhat it does
    Set as Deliveredsend it now, without waiting for its slot.
    Cancel Email Queuepull it out: it will never be sent.

    Both ask first. The confirmation names the email by subject, so you can check you have the right row before committing. Exit backs out; Yes commits: red on Cancel, because that one cannot be undone from here.

    Cancel Email Queue confirmation
    7.6.5: the confirmation carries the subject of the email you are about to cancel.
  6. Act on many rows. Tick the header checkbox and a bar appears: how many are selected, Select all N matching to take the whole filtered set rather than just this page, Clear, and a red Cancel N Email Queues.

    Bulk cancel is the only bulk action. There is no bulk “send now”. Filter first, then select, then cancel: that is the fast way to stop a whole batch.

    Bulk selection bar
    7.6.6: the count and Select all 1,013 matching · the red bulk cancel, naming how many rows it will take.
  7. You can still edit the email while it waits. Click the row and it opens in an editor, subject at the top, the full body in a rich-text field, and Save. Whatever you save is what goes out.
    This is a live email, not a draftIt is queued and will send on its own. Fix a typo here and it goes out corrected; leave the editor open and it still sends on schedule. If the email should not go at all, cancel it. Editing does not hold it back.
    Editing a queued email
    7.6.7: the body, fully editable · Save.
  8. If the list looks empty or stale, do not panic. The SDR view of Email Queues can be slow or show 0 / “Couldn't load” for a while after a send, even when the mail has already gone. Refresh, or confirm the send in the contact's Conversations (7.7 ↗), that never lies.
  9. Before you walk away: anything still sitting in In Queue will go out. If someone should not receive it, cancel their row. Ignoring it is not the same as stopping it.

7.6b · Monitor the ME: the numbers decide what you do next

This is the habit, not a one-off checkOnce Admin has run it (7.5 ↗), your job stops being setting up and becomes watching. Everything you need is on the Marketing Emails list row, the same figures introduced in 7.2 ↗. You do not have to open the ME to know whether it needs you.
  1. Read the row, and hover anything you are unsure of. Each figure has a meaning and a tooltip, hover it and the detail behind the number appears. Together they are your overview of the send, and the figures you quote when somebody asks how it went.
    NumberWhat it is telling you
    Peoplehow many contacts the ME holds.
    Deliveredhow many actually went out, with (N In Queue) beside it, still waiting for the daily release.
    Open Rateopens measured against what was sent, not against the whole list. Bracketed figure is the raw count.
    Reply Ratethe one that matters. A reply is a person, not a metric, go read it.
    Bounce / Dropped Rateaddresses that refused it. Treat as a to-do list, not a statistic.
    The numbers on a marketing email row
    7.6b.1: one row, Talent Handbook Launch — Aug 2026: People 5,197 · Delivered 3,743 with (1,255 In Queue) still waiting · Open Rate 43% (1594) · Reply Rate <1% (9) · Bounce/Dropped 5% (199). Caught mid-send: the figures move every time you reload.
  2. Replies > 0 → open the Inbox tab and deal with them. Go to the ME’s own Inbox tab, read what each person actually wrote and what chip the system put on it, and decide whether it needs an answer. That is 7.7 ↗ and 7.8 ↗, and if one of them is asking for a call, Flow 4b ↗.
  3. Bounce / Dropped > 0 → find out who, then decide. Same Inbox tab, filter the lifecycle down to Bounce / Dropped so you are looking at names rather than a percentage. Then it is a judgement call per person: worth chasing a corrected address and sending again, or not worth it. If you do resend, it goes back through the normal send flow, see 7.7a ↗.
  4. 🐛 The delivered figure does not agree with itself. Four screens claim to tell you how many went out, and they give four different answers for the same ME:
    Where you read itTalent Handbook Launch — Aug 2026
    Inbox tab3,733
    Email Queue → Delivered3,741
    the figure behind the header % (totalDelivered)3,738
    the event log (statusCount.delivered)2,040

    Not a one-off. Frankfurt Event - June 2026: Inbox 359 vs Delivered 406. Frankfurt - Active/Passive Talents: Inbox 804 vs Delivered 816. The Inbox count comes out lower every time.

    Which to trust: for “did it go out”, use Email Queue → Delivered. It is the only one that reconciles (In Queue + Delivered + Cancel = All, exactly, on all three). Use the Inbox count for reading conversations, not for reporting. And do not quote two of them in the same sentence.

    The header percentage is totalDelivered ÷ (totalDelivered + bounce + dropped), on Talent Handbook that is 3,738 ÷ 3,922 = 95% delivered and 5% bounced, which is what the header shows.

7.7 · Verify in the contact's Conversations

The moment your Admin force-sends, each email is written into that contact's conversation, even while it's still queued. To check:

People tab → open the contactConversations → find the thread with the marketing icon. Its chip tracks the whole life of the send:

ChipMeans
In QueueQueued, not sent yet.
DeliveredIt went out.
OpenThey opened it.
ClickThey clicked a link in the email.
⚠ Bounce / DroppedIt failed, that address didn't take it.
Marketing email in the contact's Conversations with a status chip
7.7: the marketing send in the contact's Conversations: the thread carries the ✉/↗ marketing icons and a status chip (captured here as In Queue), and the body shows the personalized copy.
After delivery the In Queue pill disappears
7.7: after delivery the In Queue pill disappears, the ✉ marketing icon stays on the thread (hover it to see which ME sent it).

When they reply, the thread also picks up the reply icon and a lifecycle chip per email (the system's read of the reply, see Flow 4.2 ↗).

7.7a · Find who bounced / dropped, and fix it

A bounce / drop means that contact never got the email. Check for them after every send: step by step:

  1. Spot it on the list. On Marketing Emails, read the Bounce/Dropped Rate column, anything above 0% (count in brackets) means failed sends inside.
    Bounce/Dropped Rate column on the ME list
    7.7a.1: the Bounce/Dropped Rate column on the ME list.
  2. See exactly who. Open the ME → Inbox tab → click the Bounced / Dropped category (left rail). The filter applies and everyone listed is a failed send.
    ME Inbox: Bounced / Dropped category
    7.7a.2: Inbox tab → Bounced / Dropped the filter applies → everyone here failed.
  3. Fix & re-reach. For each failed contact: get the email address corrected on their profile (flag it to Admin / Ops if you can't edit it), then reach them another way: a 1:1 email (Flow 3) ↗ to a working address, or WhatsApp / LinkedIn (3.x.4) ↗. Once fixed, Admin / Ops can include them in the next send.

7.9 · Label the replies, and know which labels stop the sending

Mostly this runs without youLabelling is the system’s job first: every reply that lands is read automatically and given a category, which is why the chips are already there when you open the Inbox. Nothing below asks you to label from scratch.

Your part is narrower and more important: check the ones the system got wrong, and set the three that actually stop future sending. Read this straight after 7.7 ↗: the chips you are reading there are what this section explains.

  1. Two different labels, and only one of them stops anything. This trips people up constantly:
    LabelSits onSet by
    Category (the chip on a reply)a single reply, and on the recipient inside this marketing emailthe system reads the message and guesses; you correct it by hand
    Lifecycle Stagethe contact, across everythingalways you (Flow 4 ↗)
  2. The twelve categories, and the three that matter. Read straight off the API: a recipient can hold any of 12, an individual reply any of 11 (the same list minus Unknown).
    GroupCategoriesEffect on sending
    Stops the sendingOpted Out · Not Interested · Do Not ContactNo further mail goes to this person. Three labels, that is the whole list.
    Reporting onlyCall Scheduled · Interested · Not Now · Out Of Office · Left The Company · Email Updated · No Categories · Not Responded · UnknownSending continues. They describe what happened; they do not hold anything back.

    Where this comes from: the twelve / eleven values are read straight off the API. The three that block are named in the code as a constant, MarketingEmailRecipientBlocklistEnforcementOptions = [OptedOut, NotInterested, DoNotContact], and the same three appear in Fintalent's own feature documentation. Not proven by a send test of my own; proving it would mean mailing a real contact.

    The three look exactly like the other nineNothing in the interface marks them out, same chip, same colour, same list. So the label that quietly keeps mailing someone who asked you to stop is one row away from the one that stops it. Before you label a negative reply, decide which of the two you mean: “not now, try later” is Not Now and keeps them in rotation; “stop emailing me” is Opted Out or Do Not Contact and takes them out.
  3. Out Of Office is not a rejection. It is the most common auto-reply and it is reporting-only, so the person stays in the run. Which is right, they are just away. Do not upgrade it to Not Interested to clear it off your screen; that is a different meaning and it is permanent.
  4. Nothing reminds you. Categorising is entirely manual: no prompt, no badge, and no count of how many replies are still unlabelled. If you do not work the inbox deliberately, an opt-out can sit there unread while the next send goes out.

    Practical habit: after every send, open the Inbox and clear it to zero before you do anything else. Filter the category rail to No Categories to find what nobody has touched.

    There is also no bulk categorise: thirty auto-replies is thirty separate actions. Sort by the auto chip first so the identical ones are together.

  5. Where you do it. Open the Inbox tab of the marketing email, pick the category rail on the left to filter, click a reply, set its category. The same reply also appears in your own Inbox (Flow 4), labelling in either place is the same record.

7.8 · Then: replies, bounces & drops

  1. Watch the Inbox. Replies to this ME land in its own Inbox tab as well as your main one. Read and answer them the usual way, Flow 4 ↗.
  2. Treat any Bounce / Dropped as a to-do, not a statistic. That send failed, so the person never saw it. Find out who in 7.7a ↗, then reach them another way: a 1:1 email (Flow 3 ↗) or WhatsApp / LinkedIn (3.x.4 ↗).
  3. A rate of 0% is not the same as a blank one. Blank means nothing has been sent yet; 0% means mail went out and nobody opened or replied. That is a content problem, and it is worth saying so before the next send.

7.10 · When the marketing email is finished

Closing it is an Admin action, you watch it happenYou do not mark a ME finished. Admin/Ops does, the same people who ran it in 7.5 ↗. Your side of the ending is monitoring: keep reading the numbers (7.6b ↗) until the queue has drained and the replies have stopped arriving, answer what is still open, and tell Admin it is done from your end.

The checklist below is still yours: it is what you work through before handing it back, not something you tick after somebody flips a status.

  1. The system decides “Finished”. You decide “done”. They are not the same moment, and the gap between them is where the work actually is.
    What it means
    Finished (the status)every queued email has left. Progress shows a full bar and a green ✓, the queue has nothing in In Queue. This is about mail, not about outcomes.
    Done (your call)every reply has been read, answered and labelled; every bounce has been chased another way; every hot lead has been moved on. Nothing in the product marks this: you do.
  2. The closing checklist. Run it before you stop looking at the marketing email:
    CheckWhereWhat you want to see
    Nothing still queuedEmail Queue → In Queue0. Anything left will still go out.
    Delivered matches what you sentthe row's Delivered vs the people you reviewedthe same number. A gap means someone was skipped: find out who.
    Bounce / Dropped clearedthe row's Bounce/Dropped Rateeither 0, or every one of them chased another way (7.8 ↗).
    No unlabelled repliesInbox → category rail → No Categoriesempty.
    Opt-outs actually recordedthe same railanyone who asked to stop carries Opted Out or Do Not Contact, not a softer label.
    Hot replies moved onLifecycle Stage on the contactInterested / Call Scheduled set, and the meeting booked (Flow 4b ↗).
  3. Finished does not mean frozen. Replies keep arriving after the last email lands, often for weeks. The Inbox stays live, so keep checking it after the status has moved on. A blast that reads Finished on Monday can still produce a meeting on Friday.
  4. Read the rates once at the end, and read them honestly. A blank rate means nothing was sent. 0% means it went out and nobody opened or replied. That is a content result, not a delivery one, and it is the number worth raising before the next send. Reply Rate is the one that matters; Open Rate mostly tells you about the subject line.

7.x · Edge cases

The People / Preview cases first (7.x.1–5), then the template-editor ones (7.x.6–12).

  1. Filter the People / Preview list. Both tabs carry the same filter bar as your lists, Lifecycles, Has signal, Contact Classification, Owner, Work Experience, Countries and Cities, plus two ME-only ones: Content Reviewed (checked yet?) and Personalize. Handy to review in batches, e.g. "show only the ones I haven't reviewed". Full reference: Flow 8 · Using filters ↗.
    People/Preview filter bar with the ME-only filters
    7.x.1: the same filter bar, plus the ME-only Content Reviewed + Personalize filters.
  2. Un-mark: Not Reviewed / Not Personalized. The same Bulk Actions menu (7.4.5) also has Mark all as Not Reviewed (clears the Content-Reviewed flag, use it if you need to re-check a batch) and Mark all as Not Personalized (clears the personalize flag).
    Bulk Actions menu with the un-mark options
    7.x.2: the Bulk Actions menu carries Mark all as Reviewed, Not Reviewed and Not Personalized.
  3. Review a subset, not everyone. You don't have to Select All: tick just the contacts you want and mark those reviewed. This matters because only Content-Reviewed contacts go into the Email Queue when the ME is activated and force-sent: anyone not reviewed is skipped. So marking a subset reviewed is a deliberate way to send to only those people.
    Selecting only a few contacts
    7.x.3: tick a subset; only those (once reviewed) enter the queue on force send.
  4. Quick-jump icons: where each one takes you. The little row of icons under the contact's name (7.4.2) opens them elsewhere. Each icon and what it opens:
    View Inbox result
    View Inbox: the contact's Conversations: every email & call thread with them.
    View Profile result
    View Profile: their contact record: phone, location, LinkedIn, experience, work history.
    View Company result
    View Company: their company page: industry, website, classifications, email domains.
    View on LinkedIn
    View on LinkedIn, opens their LinkedIn profile in a new tab (hover shows the URL).
    A missing icon is informationAn icon appears only when the contact has that piece of data. No company icon means no company is linked; no LinkedIn icon means the record has no LinkedIn URL. Count them before you conclude the record is complete.
  5. Row indicators: Personalized & Reviewed. Once you've acted on a contact, their left-list row tells you at a glance: ✨ Personalized appears after you edit that contact's email and click Save (7.4.4); the green (Reviewed) “done” tag appears after Mark as reviewed (7.4.5). Only reviewed contacts enter the Email Queue on force send. Anyone not reviewed is skipped.
    Row indicators: Personalized sparkle and Reviewed tag
    7.x.5: the row shows ① (Reviewed) (the “done” tag) and ② ✨ Personalized once each is set.
  6. Edit a template step. Same place, same form: Templates tab → click the step → change the subject / body / attachments → Save. The 🗑 bin on the step header deletes it. If per-contact previews were already generated, tick Force Update (7.x.11) so your edit reaches them.
    The step editor open for editing
    7.x.6: click a step to open the full editor: subject, body, toolbar and all controls.
  7. Start from a saved Template. Rather than writing from scratch, use Select an email template (top of the step editor) to prefill the whole step from a saved template. You build & manage those in Flow 3.x.1 · Templates ↗.
    Select an email template dropdown
    7.x.7: Select an email template (top of the editor) prefills the whole step.
  8. Insert a Snippet. Click Snippets (bottom of the editor: it enables once your cursor is in the body) to drop in a saved reusable block. You build snippets in Flow 3.x.2 · Snippets ↗.
    Snippets button in the editor
    7.x.8: the Snippets button (enables once the cursor is in the body).
  9. Variables (merge fields): the right way to personalize. Never type a name by hand like "Hi [Name]". That stays literal and won't personalize. Instead: put your cursor where you want it → click Variables → pick a field. The list covers First name, Last name, Full name, Phone number, Title, Location, Company name, LinkedIn, Sponsor and Board observer. It inserts a token like {{contact.firstName}} that fills in per contact when it sends. You can also add variables to the Subject line, click the { } icon (next to CC, top-right).
    Variables merge-field picker
    7.x.9: click Variables (cursor in the body) · pick a merge field (don't type [Name] by hand) · the { } icon adds them to the Subject.
  10. CC someone. Click CC (top-right of the editor) → an Add cc field appears → type who to copy on every send of this step.
    CC → Add cc field
    7.x.10: click CC an Add cc field opens to type the copied recipient.
  11. Force Update. Tick this before Save to push your latest template edit onto everything already generated for this step. Its own tooltip: "Force Update will apply the latest version of this email template to the current step in the campaign flow within the Preview tab — including personalized emails, marked-as-done steps, and previously saved versions."
    Use with cautionIt overwrites existing content: any per-contact personalization, “reviewed” marks or saved versions on this step are replaced by the new template. Leave it unticked on a fresh step that has no previews yet.
    Force Update toggle
    7.x.11: the Force Update toggle (with its ⓘ tooltip), bottom of the editor.
  12. Upload files & Signature. Upload files (bottom-left) attaches files to the email; each attachment shows with an to remove. A Signature button (bottom-right) appends your signature (Flow 1.x.5).
    Upload files and attachment
    7.x.12: Upload files (bottom-left); each attachment shows with an to remove.
  13. Assigned a ready ME: skip “Add people”. Often you're handed an ME Admin / Ops has already loaded with people, with instructions not to add more, just review & personalize those contacts. Then skip 7.3 · Add people and go straight to 7.4 · Preview.
  14. Personalizing drops the attachment. If you personalize a contact’s email, that contact stops receiving the file. Everyone you did not personalize still gets it. Worked example: one ME, one step, one attachment, three recipients, only one personalized. The two template rows carried 1-1-log-in.md; the personalized row’s Attachments column was empty. Same subject, same step, same created time. The personalization is the only difference.
    You will not see it on screenPreview keeps showing the attachment for that contact, because Preview renders the file list from the template rather than from the contact’s own copy. It shows up only in the Attachments column of Email Queues, after the queue is built, so check that column before a send goes out whenever you have personalized anyone on an ME that carries a file. Removing a file deliberately is different: that is the beside the filename in Preview, and it affects only the contact you are looking at. Logged as ME-01.
    Queue row for the personalized contact has no attachment
    7.x.14: two rows carry the file, the personalized row does not.
  15. The row-actions button can be unreachable. The two actions themselves: Set as Delivered and Cancel Email Queue, are covered in 7.6.5. This is only about not being able to reach them: the queue table scrolls sideways and the sticky column can sit on top of the actions column. In one example the at the end of the row could not be clicked at all. The pointer landed on the cell covering it. Widen the window, or scroll the table fully to one side, until the actions column clears the sticky cell.
    Still openLogged as ME-02. When the menu was forced open and Set as Delivered chosen, nothing happened and no confirmation appeared, while 7.6.5 says both actions ask first. Whether that is the overlay or the action itself is not established; confirm by hand before relying on it.

SDR6‡ · Manage a campaign, issues

Found by walking Flow 6 ↗ by hand on 5 August 2026, signed in as Dong SDR and again as dev@fintalent.io. Twelve items: nine defects and three improvements. The IDs carry on from 6† Manage a campaign, audited ↗, which found CMP-01 to CMP-08 through the API. These were found through the screen, which is why none of them repeat.

6‡.0 · The register

IDWhat happensWhereKindSeverity
CMP-09An SDR sees every folder in the workspace, including other people's.Campaign listimprovementHigh
CMP-10The numbers on a campaign row lead nowhere.Campaign listimprovementMedium
CMP-11Reply Rate reads 100% when one of two people answered.Campaign listdefectMedium
CMP-12The Inbox list does not show which contact carries which lifecycle.InboximprovementMedium
CMP-13Open, Click and Bounced / Dropped always return nothing.Inbox raildefectHigh
CMP-14Last replied misses replies from the day you filter on.Inbox filtersdefectHigh
CMP-15The contact Owner picker finds nobody, including the owner on screen.Inbox filtersdefectHigh
CMP-16Total Steps says 2 on the list and 3 inside the campaign.List vs StepsdefectLow
CMP-17Reordering steps moves the delay with the content, so step 1 waits a day.StepsdefectHigh
CMP-18A campaign created by an Admin shows no step on Preview at all.PreviewdefectBlocker
CMP-19The Skipped filter changes nothing.Preview filtersdefectMedium
CMP-20Bulk update steps does nothing.Preview bulk actionsdefectMedium

Blocker stops the flow completely · High makes a control lie or leak · Medium costs time or trust · Low is a mismatch you can work around.

CMP-09 · The folder rail shows every folder in the workspace

What happens. Signed in as an SDR with 7 campaigns, the folder rail lists seventeen folders, among them Thao Test, tin’s, Sang, Tung Campaign, Sponsors EU and Sponsors USA, several with a count beside the name.

What should happen. An SDR should see a folder only when one of two things is true: they created it, or it holds a campaign assigned to them. Everything else belongs to somebody else's work.

Why it matters. The rail is a directory of who is running what, printed to a role that is not supposed to have it. The campaign data underneath is scoped correctly, which makes this worse rather than better: the names and counts leak while the contents do not, so nobody notices.

An SDR seeing the full folder rail
CMP-09: seven campaigns in the list, seventeen folders in the rail.

Related: 6† ↗ found the same rail printing other people's counts through the API. This adds the rule the rail should follow. Guide: 6.3 ↗.

CMP-10 · The numbers on a campaign row lead nowhere

What happens. Total Steps, People, Open Rate, Reply Rate and Bounce / Dropped Rate are printed as plain text. Reading one and wanting the detail behind it means opening the campaign and finding the right tab yourself.

What should happen. Every number opens the view that explains it:

ClickOpens
Total Stepscampaign → Steps
Peoplecampaign → People
Open Ratecampaign → Inbox, filtered to Open
Reply Ratecampaign → Inbox
Bounce / Dropped Ratecampaign → Inbox, filtered to Bounced / Dropped

Why it matters. The list is where the work starts every morning. A number that cannot be opened is a number you read and then have to go and find again.

The metric columns on the campaign list
CMP-10: the five numbers, none of them a link.

Two of these destinations do not work yet either, see CMP-13. Guide: 6.8.1 ↗.

CMP-11 · Reply Rate divides replies by people

What happens. A campaign with 2 contacts and 1 step, both delivered. One of the two answered, and that one person sent two replies. The row reads Reply Rate 100% (2).

What should happen. The count of 2 is right, the percentage is not. Reply rate is people who answered over people delivered to, which is 1 of 2, 50%. As printed, one talkative contact can carry the rate past 100%.

Why it matters. This is the number the campaign is judged on. It is also the same defect as ME-01 on the marketing-email side, where Open Rate printed 173.5%, so it is one fix in two places rather than two problems.

Reply Rate 100% on a campaign with 2 people
CMP-11: 2 people, 1 step, both delivered, one replier: 100% (2).

Guide: 6.8.1 ↗.

CMP-12 · The Inbox list does not say who carries which lifecycle

What happens. The rail reads Interested 1. The list next to it shows two contacts, neither carrying a chip, so there is no way to tell which of the two is the interested one without clicking the category and watching the list shrink.

What should happen. The row shows the lifecycle it holds, the way the conversation view already does on the message.

Why it matters. The rail says how many, the list says who, and the two are not joined up. On a campaign with two people it is a small annoyance. On one with two hundred it is the difference between reading the inbox and querying it.

Interested 1 on the rail, no chip on either row
CMP-12: Interested 1 on the left, two unmarked rows on the right.

Guide: 6.8.3 ↗.

CMP-13 · Open, Click and Bounced / Dropped always return nothing

What happens. Clicking Open on the rail applies a chip reading Lifecycles : Open and the list goes to Showing 0 of 0, No emails match your filters. There is an open to find: the same contact's conversation carries the Open chip on the message. Click and Bounced / Dropped behave the same way.

What should happen. The category returns the contacts whose mail was opened, clicked, bounced or dropped.

Why it matters. Worth reading the chip the filter produces, because it names the cause. Open is not a lifecycle. Neither is Click, nor Bounced / Dropped: they are email events, and the rail is pushing all of them through the Lifecycles filter, which can only match lifecycle values. That is why Interested works and these three cannot. It also means the whole delivery half of the rail is unusable, and CMP-10 would send people straight into it.

Lifecycles : Open returning nothing
CMP-13: Open ticked on the rail, chip reads Lifecycles : Open, list reads 0 of 0.
A message carrying the Open chip
CMP-13: the same period, the same contact, the message carrying an Open chip. The data exists; the filter cannot reach it.

Guide: 6.8.4 ↗.

CMP-14 · Last replied misses the day you filter on

What happens. Last replied : ≤ 2026-08-05 returns Showing 0 of 0. Two replies exist on that date, timestamped Aug 05, 12:51 and Aug 05, 13:39, and both are visible in the unfiltered list.

What should happen. ≤ 5 August includes everything that happened on 5 August.

Why it matters. A boundary compared at midnight rather than at the end of the day quietly hides today's replies, which are the ones you are looking for. Because the filter returns a clean empty state rather than an error, it reads as nobody replied.

Last replied filter returning nothing
CMP-14: the chip reads ≤ 2026-08-05, the list reads 0 of 0.
Two replies dated Aug 05
CMP-14: the same list without the filter, both replies dated Aug 05.

Guide: 6.8.4 ↗.

CMP-15 · The contact Owner picker finds nobody

What happens. Owner → Has an owner opens Choose contact owner. Typing Dong SDR returns No items found, 0 results, on a campaign whose contacts are owned by Dong SDR, which the contact drawer prints in plain text.

What should happen. The picker lists the owners that exist on the data, so the obvious question, which of these are mine, can be answered.

Why it matters. Has an owner and No owner work, so the filter looks alive while the only useful part of it is empty. The list it should be reading is not the one it is reading.

Choose contact owner returning no results
CMP-15: searching Dong SDR, 0 results.
The contact drawer showing Owner Dong SDR
CMP-15: the same contact, Owner: Dong SDR.

Guide: Flow 8 ↗.

CMP-16 · Total Steps says 2 on the list and 3 inside

What happens. US | PortCos | C-Levels & M&A – 2026 shows Total Steps 2 on the campaign list. Open it and the Steps badge reads 3: two main steps and one sidestep, Out Of Office.

What should happen. One definition, printed the same way in both places. Either both count the sidestep or neither does.

Why it matters. Small on its own, but Total Steps is one of the numbers used to judge whether a campaign is finished, and a sidestep is not an ordinary step: it fires on a condition, not in sequence. Counting it silently in one place and not the other means neither number can be trusted without opening the campaign.

Total Steps 2 on the campaign list
CMP-16: the list row, 2.
Steps badge 3 inside the campaign
CMP-16: the same campaign, Steps 3, made of two main steps plus Side Step: Out Of Office.

Guide: 6.2 ↗ and 6.3 ↗.

CMP-17 · Reordering steps carries the delay with the content

What happens. Before: Step 1 – Day 1, Right away and Step 2 – Day 2, Wait for 1 day. Move them with the arrows and it reads Step 1 – Day 2, Wait for 1 day and Step 2 – Day 3, Right away.

What should happen. The bodies swap; the schedule stays with the position. Step 1 is always Right away, because there is nothing for it to wait behind.

Why it matters. Two wrong things at once. The first email of the campaign now waits a day before anything is sent, and step 2 says Right away while being labelled Day 3, so the label and the setting contradict each other on the same row. Neither is announced, and the reorder arrows are exactly the control someone uses while tidying up a sequence they thought was finished.

Steps before the reorder
CMP-17, before: Day 1 Right away, then Day 2 Wait for 1 day.
Steps after the reorder
CMP-17, after: Day 2 Wait for 1 day in first position, Day 3 Right away in second.

Guide: 6.2 ↗.

CMP-18 · A campaign created by an Admin shows no step on Preview

What happens. Germany – M&A Advisory, created with the dev@fintalent.io admin account, badge reading Steps 1. On the Preview tab the contact list and the contact card are there, and the step block is absent: no subject, no body, nothing to read. A campaign created by the SDR shows its step normally.

What should happen. Preview shows the step whoever created the campaign.

Why it matters. Preview is the review gate for the whole flow. Personalize, Skip, Mark done and the blocked-contact check all live on the step block, so with the block missing there is nothing to review and nothing to mark. Everything after it in 6.5 ↗ is unreachable, and the hand-over in 6.6 ↗ asks for a done count that cannot be produced. Worth knowing that ownership decides this, since the obvious reading is that the campaign has no content.

Preview with no step block on an admin-created campaign
CMP-18: Steps 1 on the badge, contact card present, no step underneath it.

Guide: 6.5 ↗.

CMP-19 · The Skipped filter changes nothing

What happens. Skipped : Yes on the Preview tab, and the list still reads Showing 14 of 14. The contact opened next to it still offers a Skip button on its step, so it was never skipped in the first place.

What should happen. The list narrows to the contacts that carry a skip.

Why it matters. Skipping is per contact and per step, and the filter is the only way to see who you have skipped. Without it there is no way to answer who is not getting step 1 before the campaign runs, which is the check that belongs immediately before hand-over.

Skipped Yes returning every contact
CMP-19: chip reads Skipped : Yes, list reads 14 of 14, and the step still offers Skip.

Guide: 6.5.3 ↗.

CMP-20 · Bulk update steps does nothing

What happens. Tick a contact, open Bulk Actions, choose Bulk update steps. Nothing happens: no dialog, no toast, no change on the rows.

What should happen. Either it does the thing, or it is not offered. The neighbouring items in the same menu, Mark as Done, Mark as Undone, Mark as Unpersonalized and Remove from campaign, all work.

Why it matters. A dead item in a working menu is worse than a missing one. It sits in the list of things that operate on a selection, so a reader assumes it ran and moves on.

The Bulk Actions menu with Bulk update steps
CMP-20: Bulk update steps, third in a menu whose other four items all do something.

Guide: 6.5.5 ↗.

6‡.13 · What the twelve have in common

Read together rather than one at a time, they fall into three groups, and the groups matter more than the individual tickets.

PatternItemsThe shape of it
A filter that answers instead of failingCMP-13, CMP-14, CMP-15, CMP-19Four of the twelve. Every one returns a clean, confident, wrong answer: 0 of 0, No items found, or the full list unchanged. Nothing on screen distinguishes nothing matched from the query could not run, so the reader believes the number.
Two places that count the same thing differentlyCMP-11, CMP-16Replies against people, sidesteps against steps. In both the raw count is right and the derived figure is wrong, which is the hardest kind to notice.
The screen knows something it does not sayCMP-12, CMP-18, CMP-20, CMP-09The lifecycle exists but is not on the row. The step exists but is not drawn. The menu item exists but does nothing. The folder exists and should not be visible at all.

The one to fix first is CMP-18: it is the only item that stops the flow rather than misinforming it. After that the filter group, because four broken filters teach an SDR to stop trusting filters.

SDR7† · Manage a Marketing Email, audited

A decision-maker’s view of Flow 7 ↗, what breaks, how often, and what to fix first. The step-by-step instructions stay on the flow page.

Measured against live data · Sections 1–5

Manage a Marketing Email, audited

All 93 marketing emails read through the API and compared against what the list and the detail header print. Scope: the ME list, People, Preview, Inbox and Email Queues.

Measured
30 Jul 2026
Access
Read‑only
Emails read
93 · 20 with an event log
Defects
6 · 2 quick wins
Worst
every rate on the page

Headline finding

The rates on this page divide one unit by another. The numerator counts opens, one person opening three times counts three, and the denominator counts people. So the Open Rate can exceed 100%, and does: 173.5% on one live email, 132.1% on another.

Underneath it, “delivered” has two counters that do not agree on 13 of the 20 emails that have an event log. One reads 2,172 where the other reads 0; another reads 0 where the log reads 602. Nothing on the screen says which one you are looking at.

01

Executive summary

Audience: Product / PM / CEO
  1. Quick win 1. Count opens per person before dividing. Today the numerator is an event count and the denominator is a headcount, so the result is not a rate at all. Fixing the denominator alone will not help: it can still print above 100%. Worth: every percentage on the page becomes meaningful.
  2. Quick win 2: reconcile the two delivered counters, or stop showing one of them. totalDelivered drives the header and every rate; statusCount.delivered comes from the event log. 13 of 20 disagree, in both directions.
  3. An email can report replies it never delivered. Five emails have totalReplied > totalDelivered. The worst reads 34 replies against 0 delivered. The earlier explanation, one person replying twice, does not survive contact with the data.
  4. The send queue can hold people the email does not list. Five emails have more queue rows than people, and the gaps are not off-by-one: +472, +253, +253. Those people receive the email while appearing nowhere in People or Preview.
  5. Three of the five worst gaps are named test move …, which points at moving campaign targets leaving queue rows behind. Unverified: it needs one reproduction to confirm or drop.
  6. Inbox and the list disagree about what a reply is. Inbox counts conversations, Reply Rate counts messages. Same label, two numbers, no explanation on screen.
  7. Pausing an email marks the whole outstanding queue Cancel, 69 of 70 rows on the sample. That is correct behaviour, but combined with the rate bug it makes a paused email look like a failed one.
  8. The guide itself was wrong here and has been corrected: it claimed “100% (1) = the one mail delivered was opened” when the screen actually shows 1%.
  9. The register below scores 6 defects. Two are quick wins, and both are arithmetic rather than architecture.
02

Where each number comes from

Audience: engineering
On screenSourceCountsNotes
Open RatestatusCount.open ÷ totalTargetsevents ÷ people Mixed units. Prints above 100% on two live emails
Reply RatetotalReplied ÷ totalTargetsmessages ÷ people Same problem. Inbox counts conversations instead
Delivered (header)totalDelivered , Disagrees with the event log on 13 of 20
Delivered (event log)statusCount.deliveredevents Not shown anywhere on the screen
People tabtotalTargetspeople Lower than the queue on 5 emails
Email Queues tabemailQueueStatusStatisticqueue rows Holds addresses that are in no other tab
Inbox countreply threadsconversations Same Interested label as Reply Rate, different number

A worked example, [Prod] US-based Thanksgiving: totalTargets 962, totalDelivered 0 and statusCount = {delivered 602, open 1669, bounce 209, dropped 17} and totalReplied 33. The header says nothing was delivered; the log says 602 were; the Open Rate prints 173.5%.

03

The rate arithmetic

Audience: engineering / Product

Why changing the denominator is not enough on its own.

Open Rate as built
      statusCount.open   ÷  totalTargets
      = every open event    every person added
      → one person opening 3 times moves the rate 3 steps

[Prod] US-based Thanksgiving   1669 opens ÷  962 people  =  173.5%
[Prod] M&A Workshop             185 opens ÷  140 people  =  132.1%

Fixing only the denominator
      statusCount.open   ÷  totalDelivered
      → still events ÷ people, still able to exceed 100%

What it needs
      distinct openers   ÷  people actually delivered to
Marketing emailpeopleheader delivered log deliveredopensreplies
[Prod] US-based Thanksgiving9620602166933
[Prod] M&A Workshop & Networking140016618534
sang test0217201,
New Marketing Thanks Giving011772,
Marketing Email Bounced02810,
EVENT · Berlin M&A Exec Briefing681014

The Berlin email is the one the guide used as its worked example. One person was delivered to, opened it and replied, a 100% open rate by any sensible definition. The screen prints 1%.

04

Defect register

Audience: Product / PM / CEO

Priority = Impact − Effort. A quick win is Impact ≥ 4 with Effort ≤ 2.

IDSymptomConsequenceI EPQuick win
ME-01 Rates divide an event count by a headcount. Open Rate prints 173.5% and 132.1% on live emails, and 1% where the truth is 100%. Every percentage on the page is affected. 523 Quick win
FixCount distinct openers, divide by people actually delivered to, and clamp nothing, if it still exceeds 100% the inputs are wrong and should say so.
ME-02 Two counters for “delivered” disagree on 13 of 20 emails that have an event log. Header says 2,172 where the log says 0; says 0 where the log says 602. Nothing indicates which is shown. 422 Quick win
FixPick one source. If totalDelivered stays, backfill it from the event log and reconcile on write.
ME-03 totalReplied exceeds totalDelivered on 5 emails. One reads 34 replies against 0 delivered. Any funnel built on these two fields is unusable. 422:
FixFalls out of ME-02. The replies are real, the delivered counter is not.
ME-04 The send queue holds people who are in neither People nor Preview. 5 emails affected, gaps of +472, +253, +253, +2, +1. Those people are sent to while being invisible. 541:
FixFind the orphans first, three of the five are named test move …, so start by moving a campaign target and watching the queue.
ME-05 Inbox counts conversations, Reply Rate counts messages, both labelled Interested. The reader sees 1 in one place and 2 in another with no explanation. 321:
ME-06 Pausing marks the outstanding queue Cancel in bulk, 69 of 70 rows. Correct in itself, but undocumented, and together with ME-01 it makes a paused email look like a failed one. 211:
05

Open questions

Audience: Product / engineering
Open question

Should Reply Rate count people or messages? Both are defensible; the page currently shows one of each and calls them the same thing.

ME-05

Open question

Where is totalDelivered written, and why do two imported emails carry 0 against hundreds of delivery events? The suspicion is that it only increments on the newer send path.

ME-02

Unverified

That moving campaign targets leaves queue rows behind. Three of the five affected emails are named test move …, which is suggestive and not evidence.

ME-04

Unverified

How much of this is skewed by test data. A large share of the records read here are seeded rather than real, so the shapes are trustworthy but the volumes are not.

Method

Unverified

The Inbox V1 and People V1 tabs sit beside the current ones and were not audited. If they are being retired they should come out of the guide.

Scope

SDRFlow 8 · Using filters

Goal: know every filter you meet as an SDR, grouped by the page it lives on, so you can cut any list or inbox down to exactly the people you want. Each filter comes with a plain "I want to find…" so you know when to reach for it.

Filters live on three surfaces, and each page has its own set, so we walk them page by page. The tool itself works the same everywhere:

How every filter dropdown works: each value has a ✓ include, which keeps only those, and an ✕ exclude, which hides them. The Has / No … radios catch records with or without any value at all. The box at the top lets you search, type a custom value, or Paste a list, one per line. The exact wording changes a little from filter to filter. Several ✓ together = OR. All screenshots below are real SDR-login runs, watch the count before → after.

8.1 · On your list: the members bar (filters your contacts)

The bar over the table filters the people in your list. Which filters show depends on the table view (the Simple / Full toggle, top-right of the table):

  • Simple view (default) → Lifecycles and Has signal.
  • Full view → a fuller bar: Lifecycles, Campaign, Work Experience, Years of Experience, Countries and Cities (Has signal drops off; Work Experience here is the same power filter as in the Inbox, see 8.3).

Bonus: the keyword search has its own Simple / Advanced toggle (top-right of the search box). Advanced lets you -exclude a word, wrap "quotes" for an exact match, drag terms to group them, and switch AND / OR to join them.

Lifecycles: by stage (both views)

"I want to find contacts whose lifecycle is Prospect." → open Lifecycles → click the green on Prospect. ✓ include keeps only that stage; ✕ exclude hides it; several ✓ = OR; the Has / No lifecycle radios and Paste list are here too. Add ✕ Opted Out and ✕ Not Interested to also drop the dead ones.

In actionThe list opens at 359 contacts (all stages). ✓ Prospect359 → 107, and every remaining row shows "Prospect" in the Lifecycle Stage column. Why: ✓ include keeps only that stage, so the 252 at other stages are hidden.
Lifecycles filter result
8.1: chip Lifecycles: ProspectShowing 20 of 107; every Lifecycle Stage cell = Prospect.
Lifecycles dropdown
8.1 · control: ✓ include / ✕ exclude per value, Has / No radios, Paste list.

Has signal: people with fresh news (Simple view)

"I want to find contacts who personally have a signal." → open Has signal → tick Yes / No. Keeps people who have a ⚡ news / 💼 job signal, shown in the Signals column, the warmest people to reach out to. (This one lives on the Simple-view bar; switch to Full for Campaign, Work Experience, Years of Experience, Countries and Cities instead.)

In action359 → 246: every remaining row has a value in the Signals column.
Members Has signal result
8.1: chip Has signal: YesShowing 20 of 246; the Signals column is filled on every row.

8.2 · On your list: the company rail (filters the firms)

Expand the rail (» on the left). Its bar filters companies, not people, pick a firm and its people show in the table. It carries Lifecycle and Has signal (+ 🔍 search).

Has signal: firms with news

"I want to find companies that have a fresh signal." → on the rail, open Has signalYes. These are the best firms to open a conversation with; click one to see its people.

In actionRail opens at 111 companies → Has signal: Yes111 → 29 firms.
Company rail Has signal result
8.2: company rail Has signal: Yes29 firms.
Company rail filters
8.2 · bars: members bar = Lifecycles · Has signal; company rail = Lifecycle · Has signal (+ 🔍 search).
Same word, two levels"Has signal" on the rail = the company has news; "Has signal" on the members bar (8.1) = the person has news. Pick the level you actually want.

8.3 · In the Inbox (filters your reply queue)

The Inbox bar carries the fullest set, combine them to zero in (e.g. only DACH sponsors who replied). Same ✓ / ✕ tool everywhere:

Filter"I want to find…" & how to use
Lifecycles"…replies from contacts at a given stage." → ✓ / ✕ per stage (as in 8.1)
Contact Classification"…replies from a given contact type." → Talent · Client · Other (✓ / ✕; Has / No; Paste list)
Owner"…only replies on contacts I own." → pick yourself
Work Experience"…people by their career facts (firm type, title, location…)." → see the panel below
Countries · Cities"…contacts in a geography (DACH, UK…)." → pick the location
+ Add filterCustomize Quick Filters. The six above are pinned by default; open this to search the full catalog and pin / unpin any (Reset to defaults)

Pin more via + Add filter. Beyond the six defaults, the catalog lets you pin:

Extra filter"I want to find…"
Has signal"…replies from people who have a fresh ⚡ news / 💼 job signal."
New signal since follow-up"…contacts I've already emailed who just got a new signal." A strong re-engagement trigger. They went quiet, but now there's fresh news to reach out about.
Talent · Bucket · Labels"…by contact type, bucket, or label."
Inbox + Add filter, Customize Quick Filters catalog
8.3 · + Add filter: Customize Quick Filters: 6 pinned by default (Lifecycles · Contact Classification · Owner · Work Experience · Countries · Cities); tick to pin Has signal · New signal since follow-up · Talent · Bucket · Labels.
In actionInbox holds 27 replies → Work Experience → Company type = Sponsor (✓) → 27 → 25; every remaining row is a PE sponsor firm (Ardian, General Atlantic and Carlyle).
Inbox Work Experience Sponsor result
8.3: chip Work Experience: SponsorShowing 20 of 25; rows are all sponsor firms.

Work Experience: the power filter

"I want to find people who work at a Sponsor firm as a Managing Director." This filters people by their career, not just the contact record. The top toggle Match any (OR) / Match all (AND) decides whether a person must meet one or all of:

  • Company type: Sponsor, Corporate and Portfolio (✓ include / ✕ exclude), used in the demo above.
  • Email validity: Valid, Invalid, Validating and None.
  • Currently / Past: the role is ongoing or historical.
  • Position: job title (e.g. "Managing Director").
  • Company: a specific firm; or Has / No linked company, plus + Filter by linked company (its city, country, bucket and classification).
  • Company Description: a keyword in the firm's description.
  • Company country / city.
Work Experience filter panel
8.3 · panel: the full Work Experience panel: Match any / all · Company type · Email validity · Currently / Past · Position · Company / linked · Description · country / city.

SDRFlow 9 · FAQ & edge-case index

Symptom / questionAnswer
I forgot my password / want to change itNo self-serve reset, contact the Admin (Flow 1.x.2).
Where do I change my name / signature?Account card (bottom-left) → General Setting or Email Configuration (Flow 1.x.3–1.x.5).
Where do I land after logging in?On Campaigns. Re-opening while signed in skips login (Flow 1.2, 1.x.1).
My Segments page is emptyNo list assigned yet. Ask Ops (O5).
Can I edit a contact's phone / location / LinkedIn?No: these are read-only for you; ask your Admin to update them. Experience is read-only (shown in yrs).
WhatsApp / LinkedIn icon is grayNo phone / LinkedIn URL on file. Nothing to click.
Subject box is empty when composingAlways type it yourself (Flow 3.1).
I can't edit the chips on messagesCorrect, the system assigns them. You classify at contact level (Flow 3).
Orange "In Queue" tag on a messageAccepted, waiting in the send queue. Clears once sent. Don't re-send (Flow 4.x.4).
Gray contacts I don't recognize at the bottom of my listYou selected a company → the "held by teammates" block. Coordinate first (Flow 2.x.3).
Campaign / Marketing Email: what can I do?Permissions still being confirmed: those flows (8, 9) aren't documented yet.
I can't find Contacts/Companies pagesBy design, SDR has no Contacts/Companies; those are Ops tools (O3). Your lists and Inbox are the entry points.
(Ops) How do I get contacts to an SDR?Create a list (O2) → add contacts (O3) → assign it to the SDR (O5).