Colours — who owns the step
Shapes
The whole picture
Every enquiry enters one place, is qualified, and becomes a client. It then follows either the charter chain or the brokerage chain — both of which draw on the same operational backbone — and ends in a closed, paid, reported deal.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart TD
E["Enquiry in — website, WhatsApp, phone, email, referral, social"]:::client
L["Lead created — source tagged, advisor assigned, 24h response clock"]:::sys
Q{"Qualified?"}:::gate
P["Follow-up pool — automated nurture"]:::sales
C["Client registered — Client ID, KYC / compliance"]:::sales
S{"Charter or brokerage?"}:::gate
CH["CHARTER CHAIN — A1 to A12"]:::ops
BR["BROKERAGE CHAIN — B1 to B10"]:::ops
BK[("Always-on ERP backbone — fleet, maintenance, crew, stores, accounts")]:::back
FC["Charter delivered, invoiced, profit locked"]:::finance
FB["Sale completed, handed over, commission settled"]:::finance
AC["Aftercare — thank-you, review, follow-ups, upsell"]:::client
E --> L --> Q
Q -->|No| P
Q -->|Yes| C --> S
S -->|Charter| CH
S -->|Brokerage| BR
BK --- CH
BK --- BR
CH --> FC --> AC
BR --> FB --> AC
classDef client fill:#f6eeda,stroke:#a9822c,color:#5f4715;
classDef sales fill:#e8edfc,stroke:#1a56db,color:#12357f;
classDef finance fill:#e0f0f5,stroke:#0e7ea3,color:#0a4f66;
classDef ops fill:#e1f0eb,stroke:#1f7259,color:#123a2e;
classDef sys fill:#eef2f6,stroke:#5c6b7e,color:#33404f;
classDef gate fill:#ffffff,stroke:#0b1d3a,color:#0b1d3a;
classDef back fill:#0b1d3a,stroke:#0b1d3a,color:#ffffff;
Part A — Charter, end to end
Someone wants to charter a yacht. Twelve linked steps: the first three are the sales side (CRM), the next seven are the operational engine (ERP), and the last two close the money and keep the client.
Lead & qualification
The enquiry becomes one record. An advisor runs a consultation using a fixed questionnaire, then decides whether it is real and workable. Qualified enquiries become registered clients with KYC started.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart LR
IN["Enquiry in"]:::client --> CAP["One record created — source tagged, duplicate check"]:::sys
CAP --> ASG["Advisor assigned — 24-hour response clock"]:::sys
ASG --> CON["Consultation call — charter questionnaire: dates, guests, occasion, budget, preferences"]:::sales
CON --> QQ{"Real and workable?"}:::gate
QQ -->|No| POOL["Follow-up pool — automated nurture"]:::sales
QQ -->|Yes| REG["Client registered — Client ID, preferences stored"]:::sales
REG --> KYC["KYC documents requested"]:::finance
KYC --> NX(["To A2 — matching & proposal"]):::sales
classDef client fill:#f6eeda,stroke:#a9822c,color:#5f4715;
classDef sales fill:#e8edfc,stroke:#1a56db,color:#12357f;
classDef finance fill:#e0f0f5,stroke:#0e7ea3,color:#0a4f66;
classDef sys fill:#eef2f6,stroke:#5c6b7e,color:#33404f;
classDef gate fill:#ffffff,stroke:#0b1d3a,color:#0b1d3a;
Yacht matching & proposal
The system matches the request against yachts that are actually available — reading the fleet register and current maintenance status — and the advisor curates a shortlist. A branded proposal and an internal cost/profit sheet are built and sent.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart LR
RQ["Client requirements"]:::sales --> M["Matching engine — budget, guests, dates, location, experience"]:::sys
FL[("Fleet register + availability calendar")]:::back --> M
MS[("Maintenance status")]:::back --> M
M --> SH["Shortlist — 2 to 3 available yachts, curated by advisor"]:::sales
SH --> PR["Proposal built — yacht, itinerary, rate, VAT, inclusions, terms"]:::sys
PR --> CO["Internal cost & offer sheet — fees, costs, tips, commission, profit"]:::finance
CO --> SN["Sent to client by private link — open tracking"]:::sales
SN --> RV{"Client response"}:::gate
RV -->|Change requested| PR
RV -->|Declined| LO["Marked lost — reason logged"]:::sales
RV -->|Approved| NX(["To A3 — booking & contract"]):::sales
classDef sales fill:#e8edfc,stroke:#1a56db,color:#12357f;
classDef finance fill:#e0f0f5,stroke:#0e7ea3,color:#0a4f66;
classDef sys fill:#eef2f6,stroke:#5c6b7e,color:#33404f;
classDef gate fill:#ffffff,stroke:#0b1d3a,color:#0b1d3a;
classDef back fill:#0b1d3a,stroke:#0b1d3a,color:#ffffff;
Booking, contract & KYC
Approval creates a booking and locks the yacht for those dates. The agreement and invoices are generated and sent for signature; the booking cannot be confirmed until KYC is complete and the agreement is signed.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart LR
AP["Proposal approved"]:::client --> BK["Booking created — Booking ID"]:::sys
BK --> LK["Yacht locked on the calendar for the dates"]:::sys
LK --> DC["Agreement + invoices generated from templates"]:::sys
DC --> SG["Sent for e-signature — client uploads ID"]:::client
SG --> GT{"KYC complete and agreement signed?"}:::gate
GT -->|No| CH["Automated reminders"]:::sys
CH --> SG
GT -->|Yes| CF["Booking confirmed — operations notified"]:::ops
CF --> NX(["To A4 — invoicing & payment"]):::finance
classDef client fill:#f6eeda,stroke:#a9822c,color:#5f4715;
classDef finance fill:#e0f0f5,stroke:#0e7ea3,color:#0a4f66;
classDef ops fill:#e1f0eb,stroke:#1f7259,color:#123a2e;
classDef sys fill:#eef2f6,stroke:#5c6b7e,color:#33404f;
classDef gate fill:#ffffff,stroke:#0b1d3a,color:#0b1d3a;
Invoicing & payment
A dated payment schedule is created — deposit, balance, security deposit. Operations is only released to spend once the deposit is confirmed. Everything posts to the accounts ledger with VAT applied by rule.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart LR
SC["Payment schedule — deposit, balance, security deposit (all dated)"]:::finance
SC --> DP["Deposit invoice sent — pay online"]:::client
DP --> PD{"Deposit received?"}:::gate
PD -->|"No, overdue"| RM["Reminder cadence — booking held"]:::sys
RM --> PD
PD -->|Yes| RC["Receipt issued — posted to accounts"]:::finance
RC --> RL["Finance approval — operations released to spend"]:::finance
RL --> BL["Balance + security deposit invoices scheduled before charter"]:::finance
AL[("Accounts ledger + VAT")]:::back --- RC
BL --> NX(["To A5 — operations planning"]):::ops
classDef client fill:#f6eeda,stroke:#a9822c,color:#5f4715;
classDef finance fill:#e0f0f5,stroke:#0e7ea3,color:#0a4f66;
classDef ops fill:#e1f0eb,stroke:#1f7259,color:#123a2e;
classDef sys fill:#eef2f6,stroke:#5c6b7e,color:#33404f;
classDef gate fill:#ffffff,stroke:#0b1d3a,color:#0b1d3a;
classDef back fill:#0b1d3a,stroke:#0b1d3a,color:#ffffff;
Operations planning
An operations manager takes over. Checklists appear automatically, the itinerary is finalised with the client, and the plan branches into three parallel workstreams — crew, procurement and stores.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart TD
OM["Operations manager assigned"]:::ops --> CL["Checklists created from templates"]:::sys
CL --> IT["Final itinerary confirmed with client"]:::ops
IT --> PL["Charter plan — route, marina coordination, timings, special requests"]:::ops
PL --> WX["Weather check"]:::sys
PL --> CR["Crew requirement raised"]:::ops
PL --> VN["Vendor services needed — catering, entertainment, watersports, transfer"]:::ops
PL --> PV["Provisioning & water-toy list"]:::ops
CR --> N1(["To A6 — crew"]):::ops
VN --> N2(["To A7 — procurement"]):::ops
PV --> N3(["To A8 — stores"]):::ops
classDef ops fill:#e1f0eb,stroke:#1f7259,color:#123a2e;
classDef sys fill:#eef2f6,stroke:#5c6b7e,color:#33404f;
Crew management
The crew requirement is filled from the fleet-wide roster, checking that every certificate is valid for the charter dates. Assigned crew get a briefing and acknowledge it on their phones.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart LR
RQ["Crew requirement — captain, steward, deckhand, chef, engineer"]:::ops
RS[("Crew roster — availability, certifications, medicals, visas")]:::back
RQ --> RS --> AS["Crew assigned to the charter"]:::ops
AS --> CT{"Certificates valid for the dates?"}:::gate
CT -->|No| SW["Reassign or flag for renewal"]:::ops
SW --> AS
CT -->|Yes| BF["Briefing sent — crew acknowledge on mobile"]:::crew
BF --> RD["Crew ready"]:::crew
RD --> NX(["To A9 — readiness gate"]):::ops
classDef ops fill:#e1f0eb,stroke:#1f7259,color:#123a2e;
classDef crew fill:#efe8f7,stroke:#6b4ea8,color:#3f2e66;
classDef gate fill:#ffffff,stroke:#0b1d3a,color:#0b1d3a;
classDef back fill:#0b1d3a,stroke:#0b1d3a,color:#ffffff;
Procurement & vendors
Services are ordered from approved vendors whose trade licence and insurance are valid. Purchase orders are raised, vendors confirm, and the expected bill is recorded against the charter's costs.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart LR
ND["Service needed"]:::ops --> VD[("Vendor database — approved, documents valid, past ratings")]:::back
VD --> PO["Purchase order raised"]:::finance
PO --> VC{"Vendor confirms?"}:::gate
VC -->|No| AL["Alternate vendor"]:::ops
AL --> PO
VC -->|Yes| SD["Service scheduled for charter day"]:::ops
SD --> BL["Vendor bill expected — added to charter cost sheet"]:::finance
BL --> NX(["To A9 — readiness gate"]):::ops
classDef ops fill:#e1f0eb,stroke:#1f7259,color:#123a2e;
classDef finance fill:#e0f0f5,stroke:#0e7ea3,color:#0a4f66;
classDef gate fill:#ffffff,stroke:#0b1d3a,color:#0b1d3a;
classDef back fill:#0b1d3a,stroke:#0b1d3a,color:#ffffff;
Stores & provisioning
The provisioning and water-toy list is checked against stock held for that yacht. Anything short is ordered and received into stock; everything is then allocated to the charter.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart LR
LS["Provisioning & water-toy list"]:::ops --> ST[("Stores — stock levels per yacht, reorder points")]:::back
ST --> CK{"In stock?"}:::gate
CK -->|No| OR["Purchase / provisioning order"]:::finance
OR --> RV["Goods received — stock updated"]:::sys
CK -->|Yes| AC["Allocated to the charter"]:::ops
RV --> AC
AC --> NX(["To A9 — readiness gate"]):::ops
classDef ops fill:#e1f0eb,stroke:#1f7259,color:#123a2e;
classDef finance fill:#e0f0f5,stroke:#0e7ea3,color:#0a4f66;
classDef sys fill:#eef2f6,stroke:#5c6b7e,color:#33404f;
classDef gate fill:#ffffff,stroke:#0b1d3a,color:#0b1d3a;
classDef back fill:#0b1d3a,stroke:#0b1d3a,color:#ffffff;
Yacht preparation & readiness gate
The three workstreams come back together. The pre-charter checklist and final inspection are done, and a single gate decides whether the charter is allowed to proceed.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart TD
C6(["Crew ready (A6)"]):::crew --> GATE
C7(["Vendors confirmed (A7)"]):::ops --> GATE
C8(["Stores allocated (A8)"]):::ops --> GATE
PP["Pre-charter checklist — cleaning, setup, safety equipment, fuel, water"]:::ops --> IN["Final inspection"]:::ops --> GATE
GATE{"Ready for charter? — crew acknowledged, checklist 100 percent, no expired certificate, weather checked"}:::gate
GATE -->|No| FX["Resolve outstanding items"]:::ops
FX --> GATE
GATE -->|Yes| RY["Ready for guest boarding"]:::ops
RY --> NX(["To A10 — charter day"]):::crew
classDef ops fill:#e1f0eb,stroke:#1f7259,color:#123a2e;
classDef crew fill:#efe8f7,stroke:#6b4ea8,color:#3f2e66;
classDef gate fill:#ffffff,stroke:#0b1d3a,color:#0b1d3a;
Charter day
Crew run the day from a mobile checklist. Extra requests and charges are logged live. After the guests leave, a damage inspection decides whether the security deposit is released or partly deducted.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart LR
AR["Yacht & crew on station — vendors arrive"]:::crew --> CI["Guest arrival — check-in, ID verification"]:::crew
CI --> SB["Safety briefing — captain introduction"]:::crew
SB --> LV["Charter live — itinerary run from mobile checklist"]:::crew
LV --> EX["Extra requests & charges logged"]:::crew
EX --> EN["Charter completed — guest check-out"]:::crew
EN --> DI["Damage inspection"]:::ops
DI --> DG{"Damage?"}:::gate
DG -->|Yes| DR["Damage report — deduction proposed, admin approval"]:::ops
DG -->|No| DL["Security deposit cleared for release"]:::finance
DR --> DL
DL --> NX(["To A11 — financial close"]):::finance
classDef ops fill:#e1f0eb,stroke:#1f7259,color:#123a2e;
classDef crew fill:#efe8f7,stroke:#6b4ea8,color:#3f2e66;
classDef finance fill:#e0f0f5,stroke:#0e7ea3,color:#0a4f66;
classDef gate fill:#ffffff,stroke:#0b1d3a,color:#0b1d3a;
Financial close
The final invoice is settled, vendors and crew are paid, the deposit is returned or deducted, commissions are split, and the company profit for that charter is calculated and locked. Per-yacht profit and loss updates automatically.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart TD
FN["Charter completed"]:::ops --> FI["Final invoice — extras added"]:::finance
FI --> CO{"Balance collected?"}:::gate
CO -->|No| RM["Reminders"]:::sys
RM --> CO
CO -->|Yes| VP["Vendor & crew payments made"]:::finance
VP --> DP["Security deposit refunded or deducted — statement issued"]:::finance
DP --> CM["Commission split — agent, team, referral"]:::finance
CM --> PF["Company profit calculated — charter financial log locked"]:::finance
PF --> PL[("Per-yacht profit & loss updated")]:::back
PF --> NX(["To A12 — aftercare"]):::client
classDef ops fill:#e1f0eb,stroke:#1f7259,color:#123a2e;
classDef finance fill:#e0f0f5,stroke:#0e7ea3,color:#0a4f66;
classDef sys fill:#eef2f6,stroke:#5c6b7e,color:#33404f;
classDef gate fill:#ffffff,stroke:#0b1d3a,color:#0b1d3a;
classDef client fill:#f6eeda,stroke:#a9822c,color:#5f4715;
classDef back fill:#0b1d3a,stroke:#0b1d3a,color:#ffffff;
Aftercare
The client is thanked, asked for a review and a survey, and any complaint routes into a resolution workflow. Automated follow-ups then keep the relationship warm and surface the next opportunity.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart LR
TY["Thank-you email + receipt"]:::sys --> RW["Review request + satisfaction survey"]:::sys
RW --> CP{"Complaint?"}:::gate
CP -->|Yes| RS["Complaint resolution workflow"]:::sales
CP -->|No| LY["Loyalty points / voucher"]:::sys
RS --> LY
LY --> FU["Automated follow-ups — 30 & 90 days, birthday, repeat charter"]:::sys
FU --> UP["Upsell prompts — brokerage, management, membership"]:::sales
UP --> CL(["Booking closed"]):::finance
classDef sales fill:#e8edfc,stroke:#1a56db,color:#12357f;
classDef finance fill:#e0f0f5,stroke:#0e7ea3,color:#0a4f66;
classDef sys fill:#eef2f6,stroke:#5c6b7e,color:#33404f;
classDef gate fill:#ffffff,stroke:#0b1d3a,color:#0b1d3a;
Part B — Brokerage, end to end
Walidia connects a seller and a buyer for a commission. Two intake tracks feed a listing and a matching process; the sides meet at the offer, then run through diligence, transaction, transfer and handover before the commission is closed.
Buyer & seller intake
Enquiries are split at the door into buyer or seller, each with its own questionnaire and qualification. Qualified clients are registered with a compliance check before any listing or offer activity.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart TD
IN["Enquiry in"]:::client --> TP{"Buyer or seller?"}:::gate
TP -->|Seller| SQ["Seller questionnaire — yacht, year, price, ownership, finance, timeline"]:::sales
TP -->|Buyer| BQ["Buyer questionnaire — purpose, budget, type, length, brand, location"]:::sales
SQ --> SL{"Qualified?"}:::gate
BQ --> BL{"Qualified?"}:::gate
SL -->|No| PP["Follow-up pool"]:::sales
BL -->|No| PP
SL -->|Yes| RS["Seller registered — KYC / compliance"]:::finance
BL -->|Yes| RB["Buyer registered — KYC / compliance"]:::finance
RS --> NS(["To B2 — listing"]):::sales
RB --> NB(["To B4 — matching"]):::sales
classDef client fill:#f6eeda,stroke:#a9822c,color:#5f4715;
classDef sales fill:#e8edfc,stroke:#1a56db,color:#12357f;
classDef finance fill:#e0f0f5,stroke:#0e7ea3,color:#0a4f66;
classDef gate fill:#ffffff,stroke:#0b1d3a,color:#0b1d3a;
Listing & valuation
The yacht is inspected and its documents gathered. A valuation combines market comparisons with the broker's view; once a price is agreed, a listing agreement is signed and the yacht enters the sale inventory.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart LR
IS["Yacht inspection — documents gathered: registration, ownership, insurance, survey history"]:::ops
IS --> VL["Valuation — market comparison + broker view"]:::sales
VL --> PR{"Price agreed?"}:::gate
PR -->|Adjust| VL
PR -->|Approved| AG["Listing agreement — exclusive / open / co-brokerage — e-signed"]:::sales
AG --> AC["Listing activated — added to sale inventory"]:::sys
AC --> RN[("Renewal reminder set — 30 / 14 / 7 days before expiry")]:::back
AC --> NX(["To B3 — marketing"]):::sales
classDef sales fill:#e8edfc,stroke:#1a56db,color:#12357f;
classDef ops fill:#e1f0eb,stroke:#1f7259,color:#123a2e;
classDef sys fill:#eef2f6,stroke:#5c6b7e,color:#33404f;
classDef gate fill:#ffffff,stroke:#0b1d3a,color:#0b1d3a;
classDef back fill:#0b1d3a,stroke:#0b1d3a,color:#ffffff;
Marketing distribution
The listing is published across every channel, each one tracked with its own status and link. Enquiries from any channel come straight back into the system as leads.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart LR
L["Active listing"]:::sales --> PB["Published — website, yacht portals, social media, broker network"]:::sys
PB --> TR["Each channel tracked — status & link"]:::sys
TR --> EN["Buyer enquiries captured back as leads"]:::sys
EN --> NX(["Feeds B4 — matching"]):::sales
classDef sales fill:#e8edfc,stroke:#1a56db,color:#12357f;
classDef sys fill:#eef2f6,stroke:#5c6b7e,color:#33404f;
Matching & viewing
Buyers are matched to live listings and sent a curated shortlist. A viewing cannot be scheduled until the buyer's ID is verified and an NDA is signed — with proof of funds required on higher-value yachts.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart TD
BP["Buyer profile"]:::sales --> MT["Matching engine — budget, length, brand, type, location"]:::sys
IV[("Sale inventory — active listings")]:::back --> MT
MT --> SL["Shortlist sent via preferred channel"]:::sales
SL --> FB["Buyer feedback logged"]:::sales
FB --> VR["Viewing requested"]:::client
VR --> VG{"ID verified + NDA signed? (proof of funds if high value)"}:::gate
VG -->|No| HD["Held — documents chased"]:::sys
HD --> VG
VG -->|Yes| SC["Senior broker assigned — viewing scheduled at marina"]:::sales
SC --> VW["Viewing conducted — feedback captured"]:::sales
VW --> NX(["To B5 — offer"]):::sales
classDef client fill:#f6eeda,stroke:#a9822c,color:#5f4715;
classDef sales fill:#e8edfc,stroke:#1a56db,color:#12357f;
classDef sys fill:#eef2f6,stroke:#5c6b7e,color:#33404f;
classDef gate fill:#ffffff,stroke:#0b1d3a,color:#0b1d3a;
classDef back fill:#0b1d3a,stroke:#0b1d3a,color:#ffffff;
Offer & negotiation
A signed offer generates the full document set. Every offer, counter-offer and response is kept as one linked history until the seller accepts — at which point the yacht is locked "under offer".
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart LR
OF["Buyer submits signed offer"]:::client --> DS["System generates quotation, commission agreement, invoice, purchase agreement"]:::sys
DS --> LG["Offer logged — buyer, seller, amount, currency"]:::sales
LG --> RP{"Seller response"}:::gate
RP -->|Counter| CT["Counter-offer — new linked version"]:::sales
CT --> RP
RP -->|Reject| LX["Closed lost"]:::sales
RP -->|Accept| UO["Yacht under offer — listing locked"]:::sys
UO --> NX(["To B6 — survey"]):::ops
classDef client fill:#f6eeda,stroke:#a9822c,color:#5f4715;
classDef sales fill:#e8edfc,stroke:#1a56db,color:#12357f;
classDef ops fill:#e1f0eb,stroke:#1f7259,color:#123a2e;
classDef sys fill:#eef2f6,stroke:#5c6b7e,color:#33404f;
classDef gate fill:#ffffff,stroke:#0b1d3a,color:#0b1d3a;
Survey & sea trial
An independent survey and a sea trial check the yacht. A failed or conditional result reopens the negotiation; a clear result and a positive evaluation move the deal to the transaction.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart LR
OD["Survey ordered — surveyor booked"]:::ops --> RP["Survey report"]:::ops
RP --> RS{"Result"}:::gate
RS -->|"Failed / conditional"| RN["Renegotiate or withdraw"]:::sales
RN --> BK(["Back to B5 — offer"]):::sales
RS -->|Passed| TR["Sea trial conducted"]:::ops
TR --> EV["Result evaluated"]:::sales
EV --> DC{"Proceed?"}:::gate
DC -->|No| PL["Follow-up pool"]:::sales
DC -->|Yes| NX(["To B7 — transaction"]):::finance
classDef sales fill:#e8edfc,stroke:#1a56db,color:#12357f;
classDef finance fill:#e0f0f5,stroke:#0e7ea3,color:#0a4f66;
classDef ops fill:#e1f0eb,stroke:#1f7259,color:#123a2e;
classDef gate fill:#ffffff,stroke:#0b1d3a,color:#0b1d3a;
Transaction & funds
The purchase agreement is finalised and the buyer's payment is received into a stakeholder account, kept separate from Walidia's own money. Nothing moves to transfer until the funds have cleared.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart TD
YP["Purchase agreement finalised & e-signed"]:::sales --> IV["Invoice issued"]:::finance
IV --> FD["Buyer payment received into stakeholder account (held separately)"]:::finance
FD --> CL{"Funds cleared?"}:::gate
CL -->|No| WT["Awaiting clearance"]:::sys
WT --> CL
CL -->|Yes| NX(["To B8 — ownership transfer"]):::ops
LD[("Stakeholder ledger — buyer in, seller / broker / referral out")]:::back --- FD
classDef sales fill:#e8edfc,stroke:#1a56db,color:#12357f;
classDef finance fill:#e0f0f5,stroke:#0e7ea3,color:#0a4f66;
classDef ops fill:#e1f0eb,stroke:#1f7259,color:#123a2e;
classDef sys fill:#eef2f6,stroke:#5c6b7e,color:#33404f;
classDef gate fill:#ffffff,stroke:#0b1d3a,color:#0b1d3a;
classDef back fill:#0b1d3a,stroke:#0b1d3a,color:#ffffff;
Ownership transfer
Once funds clear, ownership is transferred and the registration and insurance are updated. The transaction is then marked complete in the system.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart LR
ST["Funds cleared"]:::finance --> TF["Ownership transfer initiated"]:::ops
TF --> RG["Registration updated — flag state"]:::ops
RG --> IN["Insurance updated"]:::ops
IN --> CP["Transaction marked complete"]:::sys
CP --> NX(["To B9 — delivery & handover"]):::ops
classDef finance fill:#e0f0f5,stroke:#0e7ea3,color:#0a4f66;
classDef ops fill:#e1f0eb,stroke:#1f7259,color:#123a2e;
classDef sys fill:#eef2f6,stroke:#5c6b7e,color:#33404f;
Delivery & handover
Delivery is scheduled and a pre-delivery inspection is done. The full documentation package is assembled, the buyer signs an acceptance form, and a delivery certificate formally closes the handover.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart LR
DS["Delivery scheduled"]:::ops --> PD["Pre-delivery inspection"]:::ops
PD --> PK["Documentation package assembled"]:::sys
PK --> AC["Buyer signs acceptance form"]:::client
AC --> CT["Delivery certificate signed"]:::client
CT --> NX(["To B10 — commission close"]):::finance
classDef client fill:#f6eeda,stroke:#a9822c,color:#5f4715;
classDef ops fill:#e1f0eb,stroke:#1f7259,color:#123a2e;
classDef sys fill:#eef2f6,stroke:#5c6b7e,color:#33404f;
classDef finance fill:#e0f0f5,stroke:#0e7ea3,color:#0a4f66;
Commission close & post-sale
Seller and buyer payments are confirmed and everyone is paid out of the stakeholder account. The commission is split, company profit is calculated, the deal is closed, and post-sale follow-ups begin.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart TD
CF["Buyer & seller payments confirmed"]:::finance --> PO["Seller paid, brokers paid, referrals paid"]:::finance
PO --> SP["Commission split — company / broker / referral"]:::finance
SP --> PF["Company profit calculated — deal closed in system"]:::finance
PF --> RC["All receipts issued — financial closure"]:::finance
RC --> FU["Automated follow-ups — 7 / 30 / 90 / 180 days"]:::sys
FU --> UP["Upsell — yacht management, charter, maintenance, insurance"]:::sales
UP --> DN(["Deal closed"]):::finance
PF --> RP[("Reporting — commission, profit, broker performance")]:::back
classDef sales fill:#e8edfc,stroke:#1a56db,color:#12357f;
classDef finance fill:#e0f0f5,stroke:#0e7ea3,color:#0a4f66;
classDef sys fill:#eef2f6,stroke:#5c6b7e,color:#33404f;
classDef back fill:#0b1d3a,stroke:#0b1d3a,color:#ffffff;
Underneath both — the always-on ERP backbone
These six functions run continuously, whether or not there is an active deal. Every step in Parts A and B either reads from them or writes to them — so information is entered once and flows everywhere.
%%{init:{'theme':'base','themeVariables':{'fontFamily':'Inter,sans-serif','lineColor':'#7d92a8','primaryColor':'#eef2f6','primaryTextColor':'#0b1d3a','primaryBorderColor':'#c4d0de'}}}%%
flowchart TD
MN["Maintenance & compliance — service schedules, dry-dock, certificate & insurance renewals"]:::back
FL["Fleet register — specs, documents, live availability"]:::back
CW["Crew roster — certifications, medicals, visas, availability"]:::back
SR["Stores & suppliers — stock, purchase orders, vendor performance"]:::back
FN["Finance & accounting — ledger, payables / receivables, VAT, multi-currency"]:::back
RP["Reporting — revenue, margin, cash, utilisation, per-yacht P&L"]:::back
MN -->|"available / not available"| FL
FL -->|"feeds"| MATCH["Yacht matching — A2 & B4"]:::sys
CW -->|"feeds"| OPS["Charter operations — A5 to A10"]:::ops
SR -->|"feeds"| OPS
OPS -->|"purchase orders, consumption"| SR
OPS -->|"usage & downtime"| MN
OPS -->|"costs"| FN
DEAL["Charter & brokerage deals — A1 to B10"]:::sales -->|"invoices, payments, commissions"| FN
FN -->|"figures"| RP
classDef sales fill:#e8edfc,stroke:#1a56db,color:#12357f;
classDef ops fill:#e1f0eb,stroke:#1f7259,color:#123a2e;
classDef sys fill:#eef2f6,stroke:#5c6b7e,color:#33404f;
classDef back fill:#0b1d3a,stroke:#0b1d3a,color:#ffffff;
What we need from you to begin
A short workshop to confirm this flow and settle the decisions that shape it:
- Commissions — standard rates and how they split between company, agent/broker and referrer.
- Payment terms — deposit percentage and when the balance and security deposit are due.
- VAT treatment — charters starting in the UAE versus other countries, confirmed with your tax advisor.
- Readiness rules — exactly what must be true before a charter is allowed to sail.
- Your team & data — who does what, and the current yacht and client lists to bring across.