Jev call copilot CurrencyTransfer research and architecture built 2026-09-25

Policy red-pen sheet

Every line below is a DRAFT the copilot may show a rep word for word. Nothing reaches a rep until you approve it.

How to approve

  1. Open policy/src/playbook-onboarding.json or policy/src/playbook-customer-success.json and find the line by its text_id.
  2. To approve it, set "status": "approved", "approved_by": "<email>" (one of stevan@currencytransfer.com, from policy/approvers.json) and "approved_at": "<YYYY-MM-DD>".
  3. A line marked VERIFY contains a [VERIFY …] marker: confirm the fact or rewrite it, then remove the marker. The loader refuses any approved line that still contains [VERIFY.
  4. A line marked CONCRETE FACT names a time, date, decimal rate or "yesterday"-style detail from one call. The loader refuses it in an approved line: generalise it or delete it.
  5. To drop a line, delete its object. Do not renumber the other text_ids. A line with "status": "retired" is out of use and never shown; it is listed under "retired lines" with the rule it breaks. Delete it once you agree, or set it back to draft to reconsider it.
  6. Move headlines, concern headlines, caution notes, call-purpose labels and client fact labels and templates are approved the same way (same three fields), each in its own object:
    • a move headline is the headline of the move in policy/src/playbook-<scenario>.json (headline.<move id>): the situation in the client's words, 8 words or fewer;
    • a concern headline is concerns.<topic>.headline in the same file (concern.<topic>.headline), one per objection topic plus the buckets money and process;
    • a caution note is the live_note of the risk rule in policy/src/rules-<scenario>.json (caution.<risk id>): one line, never starting with "Careful", "Say", "Worth saying" or "Ask first", because the view already shows that tag. The build refuses one that does.
    • a call-purpose label is the label of the purpose in policy/src/plan-<scenario>.json (plan.purpose.<purpose id>): what the live view's purpose line shows, one per option of the purpose Choice.
    • a client fact label is one of the labels of a fact slot in policy/src/plan-<scenario>.json fact_slots (plan.fact.<slot>.<value>, a country id for residency): the chip the live view shows for that value. The amount and currency-pair slots have a template (plan.fact.<slot>.template) instead, whose {amount}, {currency}, {sell} and {buy} code fills with digits and ISO 4217 codes only; keep those placeholders.
    • a plan template item's title, hint and not_needed_reason sit in templates.<purpose> of policy/src/plan-<scenario>.json (plan.template.<purpose>.<item>.title, .hint, .not_needed); the rate-pressure item's title is rate_pressure.title (plan.rate_pressure.title). An item that does not always apply needs a not-needed reason; the build refuses an item naming a move, line, checklist id, fact, slot, stage or situation that does not exist.
  7. Situations (rate objections, docs/policy/rate-objections.md) sit under their move in situations: approve a point like a line (the verbatim ones are the approved playbook wording and are never rewritten), and the headline (situation.<id>.headline, the client's words) and hint (situation.<id>.hint) like a move headline. The build refuses a core_text_id that is not one of the situation's points, and a do-not flag that is not a risk rule.
  8. Checklist rows: change applies in policy/src/rules-<scenario>.json; the wording that ticks an item is the noul of the same id in the scenario bank.
  9. Re-run node scripts/redpen.mjs and commit the JSON together with this file.

Onboarding

Source: policy/src/playbook-onboarding.json, policy/src/rules-onboarding.json. 14 moves, 53 lines: 21 approved, 32 to review; 3 carry [VERIFY, 0 a concrete fact. 7 retired.

Onboarding lines

text_id move status text VERIFY CONCRETE FACT
open_with_agenda.1 Set the agenda draft Thanks for making time. In about ten minutes I'd like to understand the transfer you're planning, get you activated, and show you how booking works. Does that suit?
open_with_agenda.2 Set the agenda draft This is the activation call: I'll check a couple of things on your registration, and then we can talk through your first transfer.
open_with_agenda.3 Set the agenda draft Before I explain anything, can I just check what you're looking to do, so I don't waste your time?
open_with_agenda.h1 Set the agenda approved My name is [your name]. I'm calling from Currency Transfer. It's just regarding an application you made with us to transfer {currency pair}.
check_serviceability_first.1 Check we can serve them draft Before we go further, can I confirm where you're resident and which country your bank account is in? Some of our partners have country restrictions.
check_serviceability_first.2 Check we can serve them draft For a company account, which country is the business registered in, and are all the directors and owners resident there?
check_serviceability_first.3 Check we can serve them draft I want to be straight with you: if we can't open an account for your country I'd rather tell you now than after you've sent documents.
check_serviceability_first.h1 Check we can serve them approved Have you been working in {country} for a while?
check_serviceability_first.h2 Check we can serve them approved Do you have a UK address?
ask_about_the_transfer.1 Ask an open question about the transfer draft Tell me about the transfer you're planning: what it's for, which currencies, and roughly when.
ask_about_the_transfer.2 Ask an open question about the transfer draft How have you been sending money abroad so far, and what's changed?
ask_about_the_transfer.3 Ask an open question about the transfer draft What's the money for, and is there a date it needs to be there by?
ask_about_the_transfer.h1 Ask an open question about the transfer approved And how much are you looking to transfer?
ask_about_the_transfer.h2 Ask an open question about the transfer approved When are you looking to make your first transfer?
pin_down_timing_and_amount.1 Pin down amount and date draft Roughly how much are we talking about for the first transfer, and is that a one-off or something that repeats?
pin_down_timing_and_amount.2 Pin down amount and date draft Is there a hard date, like a completion or a payroll run, that the money has to be in the account by?
pin_down_timing_and_amount.3 Pin down amount and date draft Are we looking at one payment or a series over the coming months?
pin_down_timing_and_amount.h1 Pin down amount and date approved What is the amount that you plan to transfer?
pin_down_timing_and_amount.h2 Pin down amount and date approved What's the immediate amount you plan to send, and when?
confirm_funding_account.1 Confirm the funding account draft Which account will the money come from? It needs to be an account in your own name, or the company's name, sent by bank transfer.
confirm_funding_account.2 Confirm the funding account draft One thing that trips people up: the funds have to come from you, not a family member or a friend, or the partner can't accept them. Is that ok for this transfer? [VERIFY exact policy] VERIFY
confirm_funding_account.3 Confirm the funding account draft After you book, the partner's bank details appear on screen and you pay them directly from your account. Does that work for you?
confirm_funding_account.h1 Confirm the funding account approved And who is it that you bank with in {country}?
confirm_funding_account.h2 Confirm the funding account approved Whose account will the money come from, yours or someone else's?
close_the_document_gap.1 Name the missing document draft The only thing we're missing is a proof of address dated within the last three months: a utility bill, bank statement or council tax bill, in colour. Can you upload that today?
close_the_document_gap.2 Name the missing document draft For the company we need the registration document, ID for the directors, and ID plus address for anyone owning over 25 percent. [VERIFY threshold] Which of those can you send now? VERIFY
close_the_document_gap.3 Name the missing document draft I know it feels like a lot; it's a regulated industry and the partner has to verify you once. Most completed applications are activated the same day.
close_the_document_gap.h1 Name the missing document approved With the proof of life selfie, hold your passport next to your face; it's just to verify you're a real person.
close_the_document_gap.h2 Name the missing document approved I'll send you an email asking for the documents.
explain_who_holds_the_money.1 Explain who holds the money draft We're the platform; your transfer is contracted with a named FCA-authorised payment partner, and CurrencyTransfer never holds your money at any point.
explain_who_holds_the_money.2 Explain who holds the money draft Your funds sit with the partner in safeguarded, segregated accounts until they're paid out to your beneficiary, and that protection applies even if the partner or we were to fail. [VERIFY wording with compliance] VERIFY
explain_who_holds_the_money.3 Explain who holds the money draft You'll see the partner's name on every booking, so you always know exactly who is holding the funds.
explain_who_holds_the_money.h1 Explain who holds the money approved The funds are held in a segregated account, so they cannot be used for business operations; they're held entirely separate.
explain_who_holds_the_money.h2 Explain who holds the money approved This is going to be an account in your name, but it will be with {settlement_bank} in {settlement_city}.
explain_settlement_and_cutoff.1 Explain when the money arrives approved For major currencies, if your funds reach the partner before their cut-off, usually 2pm UK time, it settles the same day. Other currencies can take up to five working days.
explain_settlement_and_cutoff.2 Explain when the money arrives draft Given your completion date, I'd book and fund a few days ahead so the cut-off doesn't matter.
explain_settlement_and_cutoff.3 Explain when the money arrives draft Once funded, you can track the payment on the dashboard rather than wondering where it is.
explain_booking_is_binding.1 Explain that a booking is binding draft One important thing before you book: the moment you confirm, the partner buys that currency for you, so it's a contract. If the funds don't arrive, any loss on unwinding it is yours.
explain_booking_is_binding.2 Explain that a booking is binding draft If anything changes after you book, call me straight away; the earlier we know, the smaller the problem.
explain_booking_is_binding.3 Explain that a booking is binding draft That's why I'd only book once you know the funds are ready to send.
explain_booking_is_binding.h1 Explain that a booking is binding approved You can quote and see the amount you'd get, but don't book unless you're happy to make the transfer and happy with the amount.
explain_booking_is_binding.h2 Explain that a booking is binding approved Cancelling a trade can result in losses, because it's a live trade.
handle_alternative_provider.2 Address the bank, Wise or Revolut comparison draft What's been good and what's been frustrating about using them so far?
handle_alternative_provider.3 Address the bank, Wise or Revolut comparison draft You don't have to move everything; try one transfer with us alongside them and compare the settled amounts.
offer_alert_instead_of_waiting.1 Offer a bookable rate alert approved Nobody can predict the rate, but you can set a bookable alert at the level you'd be happy with, and it'll book or notify you the moment it's hit.
offer_alert_instead_of_waiting.2 Offer a bookable rate alert draft What rate would make you say yes? Let's set that as your alert.
offer_alert_instead_of_waiting.3 Offer a bookable rate alert approved If there's a date the money has to be there by, an alert with a fallback date protects you both ways.
offer_alert_instead_of_waiting.h1 Offer a bookable rate alert approved It's worth knowing that on our platform you can set rate alerts, and even bookable ones.
offer_alert_instead_of_waiting.h2 Offer a bookable rate alert approved Have you thought of setting a rate alert or a market order? If your target rate triggers, even briefly, you'd achieve it.
agree_next_step.1 Agree the next step draft So: you'll upload the proof of address this afternoon, I'll get you activated, and we'll book the transfer tomorrow morning. Shall I call you at ten?
agree_next_step.2 Agree the next step draft Would you like to book it now while we're on the call, or set the alert and I'll message you on the dashboard when it hits?
agree_next_step.3 Agree the next step draft I'll send you a summary on your dashboard with the partner's name and what happens next. Anything I've missed?
agree_next_step.h1 Agree the next step approved I'll take the next steps to get you activated; if you have any questions get in touch, and you'll hear from us once activated.

Onboarding retired lines

text_id move text rule broken
show_the_rate_against_mid_market.1 Compare the rate against mid-market On the dashboard you'll see the mid-market rate next to your rate, so you can see the margin rather than take my word for it. Breaks 'compare what lands, not mid-market' (mid_market_comparison): it makes the mid-market rate the benchmark and puts our margin on the table ('so you can see the margin').
show_the_rate_against_mid_market.2 Compare the rate against mid-market What rate did your bank quote you? Let's compare it against the live mid-market rate right now. Breaks 'move to a comparison that can actually be made': it compares a bank quote with mid-market, a number nobody trades at, instead of what lands from each, same day, same amount (mid_market_comparison.2).
show_the_rate_against_mid_market.3 Compare the rate against mid-market There's no transfer fee; the only cost is the difference between the mid-market rate and your rate, and that's shown on screen before you book. Breaks 'Do not explain the pricing' / 'Explain how the spread is built' (do-not): it tells the client our cost is the gap between mid-market and their rate.
handle_rate_objection.1 Handle a rate objection Was that quote against the mid-market rate at the time? Let's put both side by side now, because a headline rate on a different day isn't comparable. Breaks 'do not defend the number, change what is being compared': it lines the two quotes up against mid-market. Its point about stale and headline rates is now qualify_the_quote.1 and .2.
handle_rate_objection.2 Handle a rate objection Fair challenge. What I can do is show you the live quote with the margin visible; if we're not competitive on your amount, I'll tell you. Breaks 'Do not explain the pricing' ('the margin visible') and invites a discount: 'if we're not competitive on your amount, I'll tell you' concedes a better price exists for somebody.
handle_rate_objection.3 Handle a rate objection Banks typically build a margin of up to a few percent into the rate plus a flat fee; ours is shown transparently, so compare the total cost, not the fee. Breaks 'Do not explain the pricing': it explains how bank margins and ours are built. 'Compare the total cost' is now qualify_the_quote.3 and .4.
handle_alternative_provider.1 Address the bank, Wise or Revolut comparison Those are fine for small amounts. At your size the questions are the rate on that amount, whether you get a person handling it, and settlement timing; shall we compare on those? Breaks 'Do not suggest they are wrong ... do not rubbish the competitor': 'fine for small amounts' tells the client their provider is wrong for them, and it keeps the rate on one amount as the comparison (competitor_named compares what landed over three trades).

Onboarding situations

Compare the rate against mid-market (show_the_rate_against_mid_market)

Situation mid_market_comparison
text_id status locked text VERIFY CONCRETE FACT note
mid_market_comparison.1 approved verbatim That's the mid-market rate. It's the midpoint between buying and selling, so it's a reference number rather than a price. Nobody trades at it, banks included.
mid_market_comparison.2 approved verbatim The number worth comparing is what actually lands from us against what actually lands from your bank, same day, same amount.

Handle a rate objection (handle_rate_objection)

Situation qualify_the_quote
text_id status locked text VERIFY CONCRETE FACT note
qualify_the_quote.1 approved verbatim When did you get that rate?
qualify_the_quote.2 approved verbatim Was that a live quote on your amount, or a headline off a website?
qualify_the_quote.3 approved verbatim What were the fees on top, including the receiving bank's cut?
qualify_the_quote.4 approved verbatim What actually landed in the beneficiary account last time, against what you were quoted?
Situation no_quote_in_hand
text_id status locked text VERIFY CONCRETE FACT note
no_quote_in_hand.1 approved verbatim Better than what?
no_quote_in_hand.2 approved verbatim No. That's the price.
no_quote_in_hand.3 approved verbatim And it's live, so it's moving while we talk. Do you want it, or shall I requote in ten?
Situation competitor_named
text_id status locked text VERIFY CONCRETE FACT note
competitor_named.1 approved verbatim They probably do on the first one. What matters is what you're getting on trade twenty, when nobody's watching.
competitor_named.2 approved verbatim Pull your last three confirmations from them and let's compare what landed, not what was quoted.
Situation concession_terms
text_id status locked text VERIFY CONCRETE FACT note
concession_terms.1 approved verbatim Volume. A monthly or quarterly commitment that puts them in the band you are pricing them at.
concession_terms.2 approved verbatim Consolidation. The corridors they currently run elsewhere come to you.
concession_terms.3 approved verbatim Forward cover. The next tranche booked forward rather than left to shop.
concession_terms.4 approved verbatim Introduction. The finance contact at the group company, the supplier, the sister office.
concession_terms.5 approved verbatim The rate is one number on one day. What you're paying for is knowing what it'll be worth when it lands and when it'll get there. If you press send and then spend two days chasing, the half pip you saved cost you more than it was worth.

Address the bank, Wise or Revolut comparison (handle_alternative_provider)

Situation serial_shopper
text_id status locked text VERIFY CONCRETE FACT note
serial_shopper.1 approved verbatim Happy to quote you every time. If you want a better number without the ring-around, give me the flow for the quarter and I'll price it properly.
Situation bank_matched
text_id status locked text VERIFY CONCRETE FACT note
bank_matched.1 approved verbatim Good. That's the first time they've sharpened up for you. Ask them to hold it in writing for the next twelve months and see what comes back.
bank_matched.2 approved verbatim Worth looking at what they were giving you before we started quoting. That's their real price, the one that applies when nobody's pushing.

Onboarding move headlines

text_id move status text VERIFY CONCRETE FACT
headline.open_with_agenda Set the agenda draft Client doesn't know what the call is for
headline.check_serviceability_first Check we can serve them draft Client lives or is registered abroad
headline.ask_about_the_transfer Ask an open question about the transfer draft Client hasn't said what the transfer is for
headline.pin_down_timing_and_amount Pin down amount and date draft Amount and date of the transfer are unclear
headline.confirm_funding_account Confirm the funding account draft Client hasn't said where the money comes from
headline.close_the_document_gap Name the missing document draft Client still owes us a document
headline.explain_who_holds_the_money Explain who holds the money draft Client asks if their money is safe
headline.show_the_rate_against_mid_market Compare the rate against mid-market draft Client asks how good our rate is
headline.explain_settlement_and_cutoff Explain when the money arrives draft Client needs the money there by a date
headline.explain_booking_is_binding Explain that a booking is binding draft Client is about to book
headline.handle_rate_objection Handle a rate objection draft Client says the rate is too high
headline.handle_alternative_provider Address the bank, Wise or Revolut comparison draft Client already uses a bank or Wise
headline.offer_alert_instead_of_waiting Offer a bookable rate alert draft Client wants to wait for a better rate
headline.agree_next_step Agree the next step draft Client is ready for the next step

Onboarding concern headlines

text_id concern status text VERIFY CONCRETE FACT
concern.rate.headline rate draft Client thinks our rate is too high
concern.safety.headline safety draft Client is worried their money isn't safe
concern.timing.headline timing draft Client needs the money to land by a date
concern.fees.headline fees draft Client is comparing our fees with their bank
concern.trust_in_ct.headline trust_in_ct draft Client isn't sure who we are
concern.alternative_provider.headline alternative_provider draft Client would rather use their bank or Wise
concern.process_friction.headline process_friction draft Client finds signing up a hassle
concern.jurisdiction.headline jurisdiction draft Client may be somewhere we can't serve
concern.money.headline money draft Client has a worry about cost
concern.process.headline process draft Client has a worry about the process

Onboarding caution notes

text_id risk rule status text VERIFY CONCRETE FACT
caution.rep_made_guarantee Rep made a guarantee draft That sounded like a guarantee.
caution.rep_made_rate_prediction Rep predicted the rate draft That sounded like a rate prediction.
caution.funding_from_third_party Funds from a third party draft The money may come from someone else's account.
caution.jurisdiction_concern Country may block the account draft Their country may stop us opening the account.
caution.rep_improved_rate_unasked Rep moved on price for nothing draft That moved the price for nothing. Get something on the call for it.
caution.rep_explained_spread Rep explained the spread draft That explained our margin. Compare what lands instead.
caution.rep_said_standard_for_volume Rep said the rate is standard for their volume draft 'Standard for your volume' says somebody gets a better price.
caution.rep_rubbished_competitor Rep ran down a competitor or the client's quote draft Running them down makes us sound like the expensive option.
caution.rep_went_under_bank Rep offered to go under the bank draft Don't go under the bank. Test whether their price survives.
caution.booking_without_binding Booking agreed before "booking is binding" was said draft They agreed to book before hearing it is binding.

Onboarding call purposes

text_id purpose status text VERIFY CONCRETE FACT
plan.purpose.first_call_after_signup first_call_after_signup draft First call after sign-up
plan.purpose.document_chase document_chase draft Documents to chase
plan.purpose.first_transfer_walkthrough first_transfer_walkthrough draft First transfer walkthrough
plan.purpose.other other draft Other

Onboarding client fact labels

text_id slot: value status text VERIFY CONCRETE FACT
plan.fact.client_type.personal client_type: personal draft Personal client
plan.fact.client_type.corporate client_type: corporate draft Corporate client
plan.fact.amount.template amount: template draft About {amount} {currency}
plan.fact.frequency.one_off frequency: one_off draft One-off transfer
plan.fact.frequency.weekly frequency: weekly draft Weekly transfers
plan.fact.frequency.monthly frequency: monthly draft Monthly transfers
plan.fact.frequency.quarterly frequency: quarterly draft Quarterly transfers
plan.fact.frequency.irregular frequency: irregular draft Transfers now and then
plan.fact.currency_pair.template currency_pair: template draft {sell} to {buy}
plan.fact.transfer_purpose.property transfer_purpose: property draft For a property
plan.fact.transfer_purpose.family_support transfer_purpose: family_support draft Supporting family
plan.fact.transfer_purpose.salary_or_pension transfer_purpose: salary_or_pension draft Salary or pension
plan.fact.transfer_purpose.supplier_payment transfer_purpose: supplier_payment draft Paying suppliers
plan.fact.transfer_purpose.school_fees transfer_purpose: school_fees draft School fees
plan.fact.transfer_purpose.investment transfer_purpose: investment draft Investment
plan.fact.transfer_purpose.other transfer_purpose: other draft Another purpose
plan.fact.residency.GB residency: GB draft Lives in the UK
plan.fact.residency.IE residency: IE draft Lives in Ireland
plan.fact.residency.FR residency: FR draft Lives in France
plan.fact.residency.ES residency: ES draft Lives in Spain
plan.fact.residency.PT residency: PT draft Lives in Portugal
plan.fact.residency.DE residency: DE draft Lives in Germany
plan.fact.residency.IT residency: IT draft Lives in Italy
plan.fact.residency.NL residency: NL draft Lives in the Netherlands
plan.fact.residency.BE residency: BE draft Lives in Belgium
plan.fact.residency.CH residency: CH draft Lives in Switzerland
plan.fact.residency.AT residency: AT draft Lives in Austria
plan.fact.residency.SE residency: SE draft Lives in Sweden
plan.fact.residency.NO residency: NO draft Lives in Norway
plan.fact.residency.DK residency: DK draft Lives in Denmark
plan.fact.residency.PL residency: PL draft Lives in Poland
plan.fact.residency.GR residency: GR draft Lives in Greece
plan.fact.residency.CY residency: CY draft Lives in Cyprus
plan.fact.residency.MT residency: MT draft Lives in Malta
plan.fact.residency.US residency: US draft Lives in the US
plan.fact.residency.CA residency: CA draft Lives in Canada
plan.fact.residency.MX residency: MX draft Lives in Mexico
plan.fact.residency.AU residency: AU draft Lives in Australia
plan.fact.residency.NZ residency: NZ draft Lives in New Zealand
plan.fact.residency.SA residency: SA draft Lives in Saudi Arabia
plan.fact.residency.AE residency: AE draft Lives in the UAE
plan.fact.residency.QA residency: QA draft Lives in Qatar
plan.fact.residency.ZA residency: ZA draft Lives in South Africa
plan.fact.residency.IN residency: IN draft Lives in India
plan.fact.residency.CN residency: CN draft Lives in China
plan.fact.residency.HK residency: HK draft Lives in Hong Kong
plan.fact.residency.SG residency: SG draft Lives in Singapore
plan.fact.residency.JP residency: JP draft Lives in Japan
plan.fact.residency.TH residency: TH draft Lives in Thailand
plan.fact.residency.IL residency: IL draft Lives in Israel
plan.fact.residency.TR residency: TR draft Lives in Turkey
plan.fact.timing.this_week timing: this_week draft Needed this week
plan.fact.timing.this_month timing: this_month draft Needed this month
plan.fact.timing.within_three_months timing: within_three_months draft Within three months
plan.fact.timing.later timing: later draft Not for three months or more
plan.fact.timing.no_date timing: no_date draft No fixed date
plan.fact.decision_maker.caller decision_maker: caller draft Caller decides
plan.fact.decision_maker.colleague decision_maker: colleague draft A colleague books or decides
plan.fact.decision_maker.partner_or_family decision_maker: partner_or_family draft Decides with family
plan.fact.decision_maker.director_or_owner decision_maker: director_or_owner draft Director or owner decides
plan.fact.decision_maker.accountant decision_maker: accountant draft Accountant involved
plan.fact.funding_account.own_account funding_account: own_account draft Pays from own account
plan.fact.funding_account.company_account funding_account: company_account draft Pays from company account
plan.fact.funding_account.third_party funding_account: third_party draft Someone else pays
plan.fact.documents_status.complete documents_status: complete draft Documents complete
plan.fact.documents_status.proof_of_address_outstanding documents_status: proof_of_address_outstanding draft Proof of address to come
plan.fact.documents_status.id_outstanding documents_status: id_outstanding draft ID to come
plan.fact.documents_status.company_documents_outstanding documents_status: company_documents_outstanding draft Company documents to come
plan.fact.documents_status.source_of_funds_requested documents_status: source_of_funds_requested draft Source of funds asked for
plan.fact.current_provider.bank current_provider: bank draft Uses their bank now
plan.fact.current_provider.wise current_provider: wise draft Uses Wise now
plan.fact.current_provider.revolut current_provider: revolut draft Uses Revolut now
plan.fact.current_provider.other_broker current_provider: other_broker draft Uses another broker
plan.fact.rate_expectation.has_target_rate rate_expectation: has_target_rate draft Has a target rate
plan.fact.rate_expectation.wants_best_rate_now rate_expectation: wants_best_rate_now draft Wants the best rate now
plan.fact.rate_expectation.waiting_for_better_rate rate_expectation: waiting_for_better_rate draft Waiting for a better rate
plan.fact.rate_expectation.no_view rate_expectation: no_view draft No view on the rate

Onboarding plan templates

Item texts (title, hint, not-needed reason) are approved like a headline; their text_id is plan.template.<purpose>.<item>.title|hint|not_needed.

first_call_after_signup

item title hint applies not needed because points from done when
open_with_agenda Set the agenda (draft) The client knows what this call is for and how long it takes. always open_with_agenda its points delivered
understand_the_transfer Understand the transfer (draft) What the transfers are for, the amount and how often, before any explaining. always ask_about_the_transfer the transfer_purpose fact known and the amount fact known and the frequency fact known
check_serviceability_first Check we can serve them (draft) Where they live and bank decides whether a partner can take them on. always check_serviceability_first the residency fact known
confirm_funding_account Fund from your own account (draft) The money has to come from an account in the client's own name. always confirm_funding_account said_fund_from_own_account said
explain_who_holds_the_money Who holds the money (draft) The client hears who holds the funds before the call reaches booking. always explain_who_holds_the_money said_who_holds_funds said
explain_settlement_and_cutoff When the money arrives (draft) Cut-off and settlement timing for their currencies. always explain_settlement_and_cutoff said_settlement_timing said
explain_booking_is_binding Booking is binding (draft) Before the first booking: confirming a trade is a contract. always explain_booking_is_binding said_booking_is_binding said
close_the_document_gap Documents still needed (draft) The account cannot trade until the documents are in; agree when they will be uploaded. unless the documents_status fact is complete (applies while unknown) The documents are complete close_the_document_gap said_docs_needed said
minimum_transfer Minimum transfer (draft) Their amount may be below the minimum transfer. unless an amount of at least £5,000 equivalent was mentioned The amount is well above the minimum none said_minimum said
agree_next_step First transfer and next step (draft) Leave with one concrete action and a time. always agree_next_step next_step_agreed persisted

document_chase

item title hint applies not needed because points from done when
open_with_agenda Set the agenda (draft) The client knows what this call is for and how long it takes. always open_with_agenda its points delivered
close_the_document_gap Documents still needed (draft) The account cannot trade until the documents are in; agree when they will be uploaded. always close_the_document_gap said_docs_needed said
understand_the_transfer Understand the transfer (draft) What the transfers are for, the amount and how often, before any explaining. always ask_about_the_transfer the transfer_purpose fact known and the amount fact known and the frequency fact known
agree_next_step Agree the next step (draft) Leave with one concrete action and a time. always agree_next_step next_step_agreed persisted

first_transfer_walkthrough

item title hint applies not needed because points from done when
open_with_agenda Set the agenda (draft) The client knows what this call is for and how long it takes. always open_with_agenda its points delivered
confirm_funding_account Fund from your own account (draft) The money has to come from an account in the client's own name. always confirm_funding_account said_fund_from_own_account said
explain_settlement_and_cutoff When the money arrives (draft) Cut-off and settlement timing for their currencies. always explain_settlement_and_cutoff said_settlement_timing said
explain_booking_is_binding Booking is binding (draft) Before the first booking: confirming a trade is a contract. always explain_booking_is_binding said_booking_is_binding said
minimum_transfer Minimum transfer (draft) Their amount may be below the minimum transfer. unless an amount of at least £5,000 equivalent was mentioned The amount is well above the minimum none said_minimum said
agree_next_step First transfer and next step (draft) Leave with one concrete action and a time. always agree_next_step next_step_agreed persisted

other

item title hint applies not needed because points from done when
open_with_agenda Set the agenda (draft) The client knows what this call is for and how long it takes. always open_with_agenda its points delivered
understand_the_transfer Understand the transfer (draft) What the transfers are for, the amount and how often, before any explaining. always ask_about_the_transfer the transfer_purpose fact known and the amount fact known and the frequency fact known
agree_next_step Agree the next step (draft) Leave with one concrete action and a time. always agree_next_step next_step_agreed persisted

Client asks (a client-persisted fact inserts its move as a later item): none.

Onboarding checklist

id item applies ticked by (rep turns only)
said_who_holds_funds Who holds the money always In recent_transcript, has the rep explained that the client's money is held and safeguarded by a regulated payment partner and not by CurrencyTransfer?
said_rate_transparency Rate you see is the rate you get always In recent_transcript, has the rep told the client that the rate they see when they book is the rate they get, with no separate transfer fee?
said_quote_lifetime Quote lifetime never (not counted until decided) In recent_transcript, has the rep explained that a live quote is only valid for a short time and that booking locks the rate?
said_settlement_timing Settlement timing always In recent_transcript, has the rep explained when funds will arrive, including the cut-off time and that some currencies take longer?
said_fund_from_own_account Fund from own account always In recent_transcript, has the rep explained that the client must send the funds by bank transfer from an account in their own name (or the company's name) to the partner's account details shown after booking?
said_booking_is_binding Booking is binding always In recent_transcript, has the rep explained that a booked trade is a binding contract and that the client is liable for any loss if the funds are not sent?
said_minimum Minimum transfer unless an amount of at least £5,000 equivalent was mentioned In recent_transcript, has the rep mentioned the minimum transfer size?
said_docs_needed Documents needed once docs_status_known is persisted In recent_transcript, has the rep told the client exactly which documents are still needed and how recent they must be?
said_payment_reason Payment reason always In recent_transcript, has the rep explained why a reason for payment or a supporting document may be requested for a transfer?
said_rm_contact Onboarding-team contact and 100-day handover never (not counted until decided) In recent_transcript, has the rep told the client who their relationship manager is and how to reach them?
rate_pressure_handled Rate pushback handled once rate_pressure_raised is persisted In recent_transcript, has the rep answered the client's pushback on the rate without defending or moving the price, either by asking about the competing quote or by holding the price and changing what is being compared?
said_recording_disclosure Recording disclosure never (not counted until decided) no question yet (open question for Stevan)

Customer success

Source: policy/src/playbook-customer-success.json, policy/src/rules-customer-success.json. 13 moves, 48 lines: 26 approved, 22 to review; 1 carry [VERIFY, 1 a concrete fact. 3 retired.

Customer success lines

text_id move status text VERIFY CONCRETE FACT
resolve_the_issue_first.1 Deal with the live issue before anything else draft Let me look at that right now; give me the amount or the date and I'll pull up the trade.
resolve_the_issue_first.2 Deal with the live issue before anything else draft I can see exactly where it is: I'll tell you the status and what happens next before we talk about anything else.
resolve_the_issue_first.3 Deal with the live issue before anything else draft I'll chase the partner as soon as we hang up and message you on the dashboard by three o'clock with an answer.
resolve_the_issue_first.h1 Deal with the live issue before anything else approved Give them a call and ask if there's any way you can cancel that transaction.
give_status_with_specifics.1 State the status with specifics draft Your trade settled with the partner at 11:40 today; the beneficiary's bank usually credits it within the day for euros. [VERIFY typical timing per currency] VERIFY "at 11:40"
give_status_with_specifics.2 State the status with specifics approved It's showing as waiting for funds: the partner hasn't received your transfer yet. Can you check the reference you used?
give_status_with_specifics.3 State the status with specifics draft The payment is on hold for the supporting document the partner requested; as soon as that's uploaded it goes out.
give_status_with_specifics.h1 State the status with specifics approved The funds have already gone, so the {buy_currency} should be with you very shortly.
give_status_with_specifics.h2 State the status with specifics approved We've already received your {sell_currency}; the {buy_currency} should be released today as soon as the partner opens.
explain_document_request.1 Explain why a document was requested draft The partner is regulated and has to evidence the reason for larger or unusual payments; a copy of the invoice is normally all they need.
explain_document_request.2 Explain why a document was requested draft I'll ask them to tell us up front what they need for this payee, so you're not chased twice.
explain_document_request.3 Explain why a document was requested draft If you send it to me now I'll pass it straight to the partner and confirm when the payment is released.
explain_document_request.h1 Explain why a document was requested approved A bank statement for the account the funds are sent from.
explain_document_request.h2 Explain why a document was requested approved We just require the invoices for the payments going to {payee}.
review_upcoming_exposure.1 Ask about upcoming payments approved What do you have coming up over the next few months in terms of payments abroad?
review_upcoming_exposure.2 Ask about upcoming payments draft Are the supplier payments still roughly the same amounts and dates as before?
review_upcoming_exposure.3 Ask about upcoming payments draft Is there anything on the horizon, a purchase or a larger payment, where the rate really matters?
review_upcoming_exposure.h1 Ask about upcoming payments approved How much, roughly, do you need to do?
offer_forward_for_known_future_payment.1 Offer a forward for a known future payment approved For a payment that far out you can fix today's rate with a forward: a deposit at booking, typically ten percent, and the balance at the agreed date.
offer_forward_for_known_future_payment.2 Offer a forward for a known future payment draft You can draw it down in parts as invoices fall due, so you're not tied to one payment date.
offer_forward_for_known_future_payment.3 Offer a forward for a known future payment draft It removes the rate risk but it is a commitment; if the rate moves a lot the partner may ask for additional margin. Shall I get you a forward quote to compare?
offer_forward_for_known_future_payment.h1 Offer a forward for a known future payment approved Do you still want to lock the rate in today?
offer_alert_or_market_order.1 Offer a rate alert or market order approved Rather than watching the screen, set a bookable alert at your target and it books or notifies you the moment it's hit.
offer_alert_or_market_order.2 Offer a rate alert or market order draft What level would you be happy at? I'll set it now and you can change it any time.
offer_alert_or_market_order.3 Offer a rate alert or market order approved If you want it hands-off, a market order executes automatically when the rate is reached.
offer_alert_or_market_order.h1 Offer a rate alert or market order approved Are you looking at setting a rate alert?
set_up_recurring_or_batch.1 Set up recurring or batch payments approved Your regular beneficiaries are saved, so each month it's a quote and two clicks; you don't re-enter anything.
set_up_recurring_or_batch.2 Set up recurring or batch payments approved For the supplier run you can upload all the payments as one batch against a single trade.
set_up_recurring_or_batch.3 Set up recurring or batch payments approved Would it help to set a recurring alert so you're prompted before each payroll date?
add_user_access.1 Add a colleague or approval step approved You can add your bookkeeper with their own login and set exactly what they can do: quote, book, or add beneficiaries.
add_user_access.2 Add a colleague or approval step approved If you'd like a second pair of eyes, payments and new beneficiaries can require approval from a second user before they go out.
add_user_access.3 Add a colleague or approval step draft Send me their name and email and I'll set it up today.
add_user_access.h1 Add a colleague or approval step approved I can add other people on there, if that would help.
handle_service_complaint.1 Acknowledge a service failure and fix the process draft You're right, that shouldn't have happened, and I'm sorry. Here's what I'll change so it doesn't happen again.
handle_service_complaint.2 Acknowledge a service failure and fix the process draft Tell me exactly what happened and when, and I'll raise it with the partner today.
handle_service_complaint.3 Acknowledge a service failure and fix the process draft Going forward, I'll be your single point of contact for this; message me on the dashboard and I'll respond the same day.
handle_service_complaint.h1 Acknowledge a service failure and fix the process approved I just got your email and wanted to give you a quick call to cover any concerns; I understand you're not pleased with how long it took.
reengage_dormant_with_a_reason.1 Re-engage with a specific reason approved You last transferred in {month}; has the need gone away, or is something waiting on the rate?
reengage_dormant_with_a_reason.2 Re-engage with a specific reason draft The rate has moved quite a bit since your last trade; is that relevant to anything you have coming up?
reengage_dormant_with_a_reason.3 Re-engage with a specific reason approved Is there anything about the platform or the process that put you off using it again?
accept_no_need_gracefully.1 Accept there is no current need approved Understood. Your account stays open at no cost, and if anything comes up you can book online or call me.
accept_no_need_gracefully.2 Accept there is no current need draft Would a rate alert on your usual pair be useful, just so you hear if it moves in your favour?
accept_no_need_gracefully.3 Accept there is no current need approved Thanks for your time; I'll leave you alone until you need us.
agree_next_step.1 Agree the next step draft So: I'll send you a forward quote for the May payment today, and you'll upload the invoice for the pending one. I'll confirm both on the dashboard.
agree_next_step.2 Agree the next step draft Shall I set the alert at your level now, and call you the day it triggers?
agree_next_step.3 Agree the next step draft I'll message a summary of what we agreed; anything you want me to add?
agree_next_step.h1 Agree the next step approved You should be able to book the trade now.
agree_next_step.h2 Agree the next step approved You should have the delivery date; just choose the next day that's available.

Customer success retired lines

text_id move text rule broken
handle_rate_complaint.1 Handle a rate complaint Let's look at the mid-market rate at the moment you booked and the margin you actually paid; then we can compare like for like. Breaks 'Explain how the spread is built' (do-not): it walks the client through mid-market and the margin they paid. Compare what landed instead (competitor_named.2, qualify_the_quote.4).
handle_rate_complaint.2 Handle a rate complaint If a competitor quote is genuinely better on the same amount and date, tell me the rate and I'll see what the partners can do. Invites a discount and a chase: 'tell me the rate and I'll see what the partners can do' breaks 'a concession given for nothing is a permanent price cut' and 'every match sets the new ceiling'.
handle_rate_complaint.3 Handle a rate complaint Margins vary by pair and amount; for the sizes you're doing I can check whether a different partner on the platform prices tighter. [VERIFY that reps may do this] Breaks 'do not say it is standard for their volume': 'margins vary by pair and amount; for the sizes you're doing' concedes a better price exists for somebody, and it offers to find one.

Customer success situations

Offer a forward for a known future payment (offer_forward_for_known_future_payment)

Also shows concession_terms (listed under Handle a rate complaint).

Handle a rate complaint (handle_rate_complaint)

Situation qualify_the_quote
text_id status locked text VERIFY CONCRETE FACT note
qualify_the_quote.1 approved verbatim When did you get that rate?
qualify_the_quote.2 approved verbatim Was that a live quote on your amount, or a headline off a website?
qualify_the_quote.3 approved verbatim What were the fees on top, including the receiving bank's cut?
qualify_the_quote.4 approved verbatim What actually landed in the beneficiary account last time, against what you were quoted?
Situation no_quote_in_hand
text_id status locked text VERIFY CONCRETE FACT note
no_quote_in_hand.1 approved verbatim Better than what?
no_quote_in_hand.2 approved verbatim No. That's the price.
no_quote_in_hand.3 approved verbatim And it's live, so it's moving while we talk. Do you want it, or shall I requote in ten?
Situation competitor_named
text_id status locked text VERIFY CONCRETE FACT note
competitor_named.1 approved verbatim They probably do on the first one. What matters is what you're getting on trade twenty, when nobody's watching.
competitor_named.2 approved verbatim Pull your last three confirmations from them and let's compare what landed, not what was quoted.
Situation serial_shopper
text_id status locked text VERIFY CONCRETE FACT note
serial_shopper.1 approved verbatim Happy to quote you every time. If you want a better number without the ring-around, give me the flow for the quarter and I'll price it properly.
Situation mid_market_comparison
text_id status locked text VERIFY CONCRETE FACT note
mid_market_comparison.1 approved verbatim That's the mid-market rate. It's the midpoint between buying and selling, so it's a reference number rather than a price. Nobody trades at it, banks included.
mid_market_comparison.2 approved verbatim The number worth comparing is what actually lands from us against what actually lands from your bank, same day, same amount.
Situation bank_matched
text_id status locked text VERIFY CONCRETE FACT note
bank_matched.1 approved verbatim Good. That's the first time they've sharpened up for you. Ask them to hold it in writing for the next twelve months and see what comes back.
bank_matched.2 approved verbatim Worth looking at what they were giving you before we started quoting. That's their real price, the one that applies when nobody's pushing.
Situation concession_terms
text_id status locked text VERIFY CONCRETE FACT note
concession_terms.1 approved verbatim Volume. A monthly or quarterly commitment that puts them in the band you are pricing them at.
concession_terms.2 approved verbatim Consolidation. The corridors they currently run elsewhere come to you.
concession_terms.3 approved verbatim Forward cover. The next tranche booked forward rather than left to shop.
concession_terms.4 approved verbatim Introduction. The finance contact at the group company, the supplier, the sister office.
concession_terms.5 approved verbatim The rate is one number on one day. What you're paying for is knowing what it'll be worth when it lands and when it'll get there. If you press send and then spend two days chasing, the half pip you saved cost you more than it was worth.

Customer success move headlines

text_id move status text VERIFY CONCRETE FACT
headline.resolve_the_issue_first Deal with the live issue before anything else draft Client has a problem with a payment
headline.give_status_with_specifics State the status with specifics draft Client asks where their money is
headline.explain_document_request Explain why a document was requested draft Client is annoyed by a document request
headline.review_upcoming_exposure Ask about upcoming payments draft Upcoming payments are not known yet
headline.offer_forward_for_known_future_payment Offer a forward for a known future payment draft Client has a big payment coming up
headline.offer_alert_or_market_order Offer a rate alert or market order draft Client wants to wait for a better rate
headline.set_up_recurring_or_batch Set up recurring or batch payments draft Client sends the same payments one by one
headline.add_user_access Add a colleague or approval step draft A colleague also needs to book payments
headline.handle_rate_complaint Handle a rate complaint draft Client says the rate has got worse
headline.handle_service_complaint Acknowledge a service failure and fix the process draft Client is unhappy with how we handled it
headline.reengage_dormant_with_a_reason Re-engage with a specific reason draft Client hasn't traded in a while
headline.accept_no_need_gracefully Accept there is no current need draft Client has no transfers planned
headline.agree_next_step Agree the next step draft Client is ready for the next step

Customer success concern headlines

text_id concern status text VERIFY CONCRETE FACT
concern.rate.headline rate draft Client thinks our rate is too high
concern.service_issue.headline service_issue draft Client has a problem with a payment
concern.settlement_delay.headline settlement_delay draft Client's payment hasn't arrived
concern.fees.headline fees draft Client is comparing our fees with their bank
concern.alternative_provider.headline alternative_provider draft Client is looking at another provider
concern.no_need_now.headline no_need_now draft Client has nothing to send right now
concern.trust.headline trust draft Client has doubts about us
concern.money.headline money draft Client has a worry about cost
concern.process.headline process draft Client has a worry about the process

Customer success caution notes

text_id risk rule status text VERIFY CONCRETE FACT
caution.rep_made_guarantee Rep made a guarantee draft That sounded like a guarantee.
caution.rep_made_rate_prediction Rep predicted the rate draft That sounded like a rate prediction.
caution.rep_improved_rate_unasked Rep moved on price for nothing draft That moved the price for nothing. Get something on the call for it.
caution.rep_explained_spread Rep explained the spread draft That explained our margin. Compare what lands instead.
caution.rep_said_standard_for_volume Rep said the rate is standard for their volume draft 'Standard for your volume' says somebody gets a better price.
caution.rep_rubbished_competitor Rep ran down a competitor or the client's quote draft Running them down makes us sound like the expensive option.
caution.rep_went_under_bank Rep offered to go under the bank draft Don't go under the bank. Test whether their price survives.

Customer success call purposes

text_id purpose status text VERIFY CONCRETE FACT
plan.purpose.transfer_issue transfer_issue draft Transfer issue
plan.purpose.status_update status_update draft Status update
plan.purpose.rate_or_hedging rate_or_hedging draft Rate or hedging
plan.purpose.recurring_or_batch_setup recurring_or_batch_setup draft Recurring or batch payments
plan.purpose.dormant_reengagement dormant_reengagement draft Checking in after a quiet spell
plan.purpose.other other draft Other

Customer success client fact labels

text_id slot: value status text VERIFY CONCRETE FACT
plan.fact.client_type.personal client_type: personal draft Personal client
plan.fact.client_type.corporate client_type: corporate draft Corporate client
plan.fact.amount.template amount: template draft About {amount} {currency}
plan.fact.frequency.one_off frequency: one_off draft One-off transfer
plan.fact.frequency.weekly frequency: weekly draft Weekly transfers
plan.fact.frequency.monthly frequency: monthly draft Monthly transfers
plan.fact.frequency.quarterly frequency: quarterly draft Quarterly transfers
plan.fact.frequency.irregular frequency: irregular draft Transfers now and then
plan.fact.currency_pair.template currency_pair: template draft {sell} to {buy}
plan.fact.transfer_purpose.property transfer_purpose: property draft For a property
plan.fact.transfer_purpose.family_support transfer_purpose: family_support draft Supporting family
plan.fact.transfer_purpose.salary_or_pension transfer_purpose: salary_or_pension draft Salary or pension
plan.fact.transfer_purpose.supplier_payment transfer_purpose: supplier_payment draft Paying suppliers
plan.fact.transfer_purpose.school_fees transfer_purpose: school_fees draft School fees
plan.fact.transfer_purpose.investment transfer_purpose: investment draft Investment
plan.fact.transfer_purpose.other transfer_purpose: other draft Another purpose
plan.fact.residency.GB residency: GB draft Lives in the UK
plan.fact.residency.IE residency: IE draft Lives in Ireland
plan.fact.residency.FR residency: FR draft Lives in France
plan.fact.residency.ES residency: ES draft Lives in Spain
plan.fact.residency.PT residency: PT draft Lives in Portugal
plan.fact.residency.DE residency: DE draft Lives in Germany
plan.fact.residency.IT residency: IT draft Lives in Italy
plan.fact.residency.NL residency: NL draft Lives in the Netherlands
plan.fact.residency.BE residency: BE draft Lives in Belgium
plan.fact.residency.CH residency: CH draft Lives in Switzerland
plan.fact.residency.AT residency: AT draft Lives in Austria
plan.fact.residency.SE residency: SE draft Lives in Sweden
plan.fact.residency.NO residency: NO draft Lives in Norway
plan.fact.residency.DK residency: DK draft Lives in Denmark
plan.fact.residency.PL residency: PL draft Lives in Poland
plan.fact.residency.GR residency: GR draft Lives in Greece
plan.fact.residency.CY residency: CY draft Lives in Cyprus
plan.fact.residency.MT residency: MT draft Lives in Malta
plan.fact.residency.US residency: US draft Lives in the US
plan.fact.residency.CA residency: CA draft Lives in Canada
plan.fact.residency.MX residency: MX draft Lives in Mexico
plan.fact.residency.AU residency: AU draft Lives in Australia
plan.fact.residency.NZ residency: NZ draft Lives in New Zealand
plan.fact.residency.SA residency: SA draft Lives in Saudi Arabia
plan.fact.residency.AE residency: AE draft Lives in the UAE
plan.fact.residency.QA residency: QA draft Lives in Qatar
plan.fact.residency.ZA residency: ZA draft Lives in South Africa
plan.fact.residency.IN residency: IN draft Lives in India
plan.fact.residency.CN residency: CN draft Lives in China
plan.fact.residency.HK residency: HK draft Lives in Hong Kong
plan.fact.residency.SG residency: SG draft Lives in Singapore
plan.fact.residency.JP residency: JP draft Lives in Japan
plan.fact.residency.TH residency: TH draft Lives in Thailand
plan.fact.residency.IL residency: IL draft Lives in Israel
plan.fact.residency.TR residency: TR draft Lives in Turkey
plan.fact.timing.this_week timing: this_week draft Needed this week
plan.fact.timing.this_month timing: this_month draft Needed this month
plan.fact.timing.within_three_months timing: within_three_months draft Within three months
plan.fact.timing.later timing: later draft Not for three months or more
plan.fact.timing.no_date timing: no_date draft No fixed date
plan.fact.decision_maker.caller decision_maker: caller draft Caller decides
plan.fact.decision_maker.colleague decision_maker: colleague draft A colleague books or decides
plan.fact.decision_maker.partner_or_family decision_maker: partner_or_family draft Decides with family
plan.fact.decision_maker.director_or_owner decision_maker: director_or_owner draft Director or owner decides
plan.fact.decision_maker.accountant decision_maker: accountant draft Accountant involved
plan.fact.funding_account.own_account funding_account: own_account draft Pays from own account
plan.fact.funding_account.company_account funding_account: company_account draft Pays from company account
plan.fact.funding_account.third_party funding_account: third_party draft Someone else pays
plan.fact.documents_status.complete documents_status: complete draft Documents complete
plan.fact.documents_status.proof_of_address_outstanding documents_status: proof_of_address_outstanding draft Proof of address to come
plan.fact.documents_status.id_outstanding documents_status: id_outstanding draft ID to come
plan.fact.documents_status.company_documents_outstanding documents_status: company_documents_outstanding draft Company documents to come
plan.fact.documents_status.source_of_funds_requested documents_status: source_of_funds_requested draft Source of funds asked for
plan.fact.current_provider.bank current_provider: bank draft Uses their bank now
plan.fact.current_provider.wise current_provider: wise draft Uses Wise now
plan.fact.current_provider.revolut current_provider: revolut draft Uses Revolut now
plan.fact.current_provider.other_broker current_provider: other_broker draft Uses another broker
plan.fact.rate_expectation.has_target_rate rate_expectation: has_target_rate draft Has a target rate
plan.fact.rate_expectation.wants_best_rate_now rate_expectation: wants_best_rate_now draft Wants the best rate now
plan.fact.rate_expectation.waiting_for_better_rate rate_expectation: waiting_for_better_rate draft Waiting for a better rate
plan.fact.rate_expectation.no_view rate_expectation: no_view draft No view on the rate

Customer success plan templates

Item texts (title, hint, not-needed reason) are approved like a headline; their text_id is plan.template.<purpose>.<item>.title|hint|not_needed.

transfer_issue

item title hint applies not needed because points from done when
confirm_caller Confirm the caller is on the account (draft) Know who is calling and whether they can act on the account. always none the decision_maker fact known
resolve_the_issue_first Resolve the issue (draft) Find the cause and own it before anything else. always resolve_the_issue_first issue_resolved_or_owned said
give_status_with_specifics Status with specifics (draft) Amounts, references and what happens next, in the client's words. always give_status_with_specifics rep_checked_status_with_specifics said
review_upcoming_exposure Upcoming payments (draft) Learn what else is coming so the right tool can be offered. always review_upcoming_exposure upcoming_payment_known persisted
tools_that_fit Tools that fit (draft) An alert, a forward or a recurring payment, whichever fits what is coming up. always offer_alert_or_market_order its points delivered
explain_document_request Explain the document request (draft) Why the partner asked for a document, and what it needs. unless the documents_status fact is complete (applies while unknown) No document was asked for explain_document_request its points delivered
agree_next_step Agree the next step (draft) One concrete action, confirmed on the dashboard. always agree_next_step next_step_agreed persisted

status_update

item title hint applies not needed because points from done when
confirm_caller Confirm the caller is on the account (draft) Know who is calling and whether they can act on the account. always none the decision_maker fact known
give_status_with_specifics Status with specifics (draft) Amounts, references and what happens next, in the client's words. always give_status_with_specifics rep_checked_status_with_specifics said
review_upcoming_exposure Upcoming payments (draft) Learn what else is coming so the right tool can be offered. always review_upcoming_exposure upcoming_payment_known persisted
agree_next_step Agree the next step (draft) One concrete action, confirmed on the dashboard. always agree_next_step next_step_agreed persisted

rate_or_hedging

item title hint applies not needed because points from done when
review_upcoming_exposure Upcoming payments (draft) Learn what else is coming so the right tool can be offered. always review_upcoming_exposure upcoming_payment_known persisted
offer_forward Fix the rate for a known payment (draft) A forward removes the rate risk on a payment with a date; say what it commits them to. always offer_forward_for_known_future_payment said_forward_deposit_and_liability said
offer_alert_or_market_order Offer a rate alert (draft) A target rate that books or notifies, instead of watching the screen. always offer_alert_or_market_order its points delivered
agree_next_step Agree the next step (draft) One concrete action, confirmed on the dashboard. always agree_next_step next_step_agreed persisted

recurring_or_batch_setup

item title hint applies not needed because points from done when
review_upcoming_exposure Upcoming payments (draft) Learn what else is coming so the right tool can be offered. always review_upcoming_exposure upcoming_payment_known persisted
set_up_recurring_or_batch Recurring payments (draft) Regular payments set up once instead of booked one by one. always set_up_recurring_or_batch its points delivered
add_user_access Who else books payments (draft) A colleague or bookkeeper with their own login and limits. while the decision_maker fact is colleague, accountant, director_or_owner (applies while unknown) The caller books the payments themselves add_user_access its points delivered
agree_next_step Agree the next step (draft) One concrete action, confirmed on the dashboard. always agree_next_step next_step_agreed persisted

dormant_reengagement

item title hint applies not needed because points from done when
reengage_dormant_with_a_reason Reconnect with a reason (draft) Find out whether the need went away or something put them off. always reengage_dormant_with_a_reason its points delivered
review_upcoming_exposure Upcoming payments (draft) Learn what else is coming so the right tool can be offered. always review_upcoming_exposure upcoming_payment_known persisted
offer_alert_or_market_order Offer a rate alert (draft) A target rate that books or notifies, instead of watching the screen. always offer_alert_or_market_order its points delivered
agree_next_step Agree the next step (draft) One concrete action, confirmed on the dashboard. always agree_next_step next_step_agreed persisted

other

item title hint applies not needed because points from done when
confirm_caller Confirm the caller is on the account (draft) Know who is calling and whether they can act on the account. always none the decision_maker fact known
review_upcoming_exposure Upcoming payments (draft) Learn what else is coming so the right tool can be offered. always review_upcoming_exposure upcoming_payment_known persisted
agree_next_step Agree the next step (draft) One concrete action, confirmed on the dashboard. always agree_next_step next_step_agreed persisted

Client asks (a client-persisted fact inserts its move as a later item): client_asked_about_access → add_user_access, client_asked_about_recurring → set_up_recurring_or_batch, client_asked_about_alerts_or_orders → offer_alert_or_market_order, client_asked_about_forwards → offer_forward_for_known_future_payment.

Customer success checklist

id item applies ticked by (rep turns only)
issue_resolved_or_owned Issue resolved or owned once issue_reported is persisted In recent_transcript, has the rep either resolved the client's reported problem or stated exactly what they will do about it and by when?
rep_checked_status_with_specifics Status checked with specifics once issue_reported is persisted Does latest_utterance.text, spoken by the rep (latest_utterance.speaker is rep), state the current status of a specific trade or payment with a concrete detail such as a time, a status word, a reference, or the partner's name?
said_forward_deposit_and_liability Forward deposit and liability once client_asked_about_forwards is persisted In recent_transcript, if a forward contract was discussed, has the rep explained that a deposit is required at booking, that the balance is paid at the agreed date, and that the client is committed to the contract?
rate_pressure_handled Rate pushback handled once rate_pressure_raised is persisted In recent_transcript, has the rep answered the client's pushback on the rate without defending or moving the price, either by asking about the competing quote or by holding the price and changing what is being compared?
said_recording_disclosure Recording disclosure never (not counted until decided) no question yet (open question for Stevan)
14,054 words · Internal working documents. Do not share outside CurrencyTransfer.